One of the first things most developers encounter is project management. And no I do not mean they get to manage projects, after all you need seniority for that (or so they say). So far I’ve encountered to types of development and projects.
The first being a type of blunt force development. Build one version test it and hope that it all works out for you! May seem a bit strange but there are a lot of companies that develop programs in this way.
The second way of managing a project is developing in phases. Were each phase adds more functionality and fixes some major bugs of the previous phase. Not a lot of companies actually follow this method of managing a project.
Why do so many companies choose the first method over the second. Well its pretty easy. Applications need to be launched and during the launch you want it to be complete. You don’t want your customer to keep downloading new features after they purchased a supposedly complete application :-).
In the open source community the second way of managing a project is often chosen. After all users don’t mind to download updates every few weeks to add new features. Nor do they mind it if there are things missing, after all they never paid a dime for the application.
I believe that developing in phases will aid greatly in the stability of the application. Not to mention that it will be more in tune with the users. They use the first release and comment on what they think should change for future releases. These changes can be scheduled easier as more releases are planned. And each release has a separate stage at which the goals are defined.
For commercial products you will probably have to use a combination. Like I said earlier its impossible to release new versions every two weeks or so. But developing the entire program at once will mean less user input in how the application should work. So that leaves one option which will suite most. Develop several smaller beta’s which you will release to a smaller audience. This helps you get user input during development without upsetting users that have to download a new version over and over.