This question is geared towards a group of newly hired developers that need to adopt into a minimal learning curve, maximum development/programming/management effort. Some of the developers have senior level experience and will be mentoring the junior developers. My question is I would like a solid set of tools that can run on any system (as they can choose what they like) but be the same for the entire group. The focus is on Mobile web (Not App) Development but are looking to venture into the Application market once the team gets up to speed with the web development.
Categories of software I need,
Web Development:
- IDE (I think I’m set on Aptana stand alone version, unless someone sees something better)
- Database GUI (I like DBVisualizer but I’m open to suggestions. MySQL and PostgreSQL are my options)
- Code Repository (SVN, GIT, CVS ???)
- Debugging tools (need server side as well as client side)
- Frameworks (PHP, Ruby, Perl, jQuery, CSS framwork???)
- Development Methodology (Agile, Scrum, etc…)
- Workflow Documentation (Something like Visio but free)
- Mobile Browser set (Firefox, Multi IE, Opera, Safari, Google Chrome) Why/Why Not???
- Missing anything from the list???
App Development:
- Application SDK’s (iPhone,Android, Pre if it still exists)
- Handset device
- Anything else I might need to plan for???
For communication we are using Google Hosted Apps as well as Wave.
Code Repository: Add Mercurial – Its the only free, distributed version control system that easily runs on windows, mac, linux, etc. SVN will be the only one of those that has a friendly interface.
You’ll need to plan for how to make your UI cross platform compatible. As of this writing, its quite difficult to perform a write-once interface in HTML/JS. Although state-of-compatibility is getting better, I would plan to very carefully separate your UI from your business logic because I think you’ll likely need to either deploy separate versions of the UI for each device or to have unified, but very simplified, UI that works on many devices (assuming a web app).
Plan on unit test your business code to make sure it works on all of your devices. The JS engines differ, and you need to know that early in your dev process.
Plan ahead as to how to handle user input. If your users have a physical keypad, for example, they’ll expect to use it. You may want a very different layout for a site targeting Blackberries with trackballs, then an iPhone or Storm that uses finger taps.
Know ahead of time which platforms you will target, and then buy those phones. If its worth doing, its worth buying the phone. As an example, my first iPhone app talked to the database. It worked fine on the simulator but I was waiting for my developer key before I could test on the device. Once on the device, I discovered that what I thought would be a 1/2 second delay was more like a 40 second delay, which forced me to totally revamp the project.
Hope this helps.