Joe wrote an excellent article about this topic: http://www.joelonsoftware.com/articles/FiveWorlds.html. Basically he is saying there is no one single methodology or ways to best develop software. It all depends on what type of software you are developing. He categorized software into 5 different categories:
- Shrinkwrap
- Internal
- Embedded
- Games
- Throwaway
I have experienced into developing 3 out of 5 (Shrinkwrap, internal and throwaway). I made 4 different categories in my previous post: http://www.industryzero.com/2008/01/22/how-to-make-a-living-as-a-software-developer-in-us/. My categories are from business revenue generating perspective and argue how developers will be able to make a living in US.
Joe’s article is about how to develop software based on the 5 categories. He argues that most of the guru’s methodology only applies well to 2 because that is what most of them get hired for doing. I definitely think there is no silver bullet. It does depend on what you are trying to do. If you are doing some quick and dirty, why waste time to write test first (Test driven methodology). If you are developing a website that is first of a kind, getting it out first and fast will probably be more important than doing it right the first time because you know you are going to make a lot of changes. Your business objective is to generate momentum and generate buzz, and finally get Venture capital funding. If you are developing game (as Joe point out), you will not have chance to release a bug fix version. So getting it right the first time is very important because people will want their money back if you don’t. Or worst, no one will buy it because of its reputation.