Is there a Best Approach for Software Development?

Curtis Tsang   August 4, 2016   0 Comments

工欲善其事, 必先利其器《論語.魏靈公》

To do a good job, an artisan needs the best toolsConfucian Analects

Software approach is the practice of using selected process techniques to improve the quality of a software development effort resulting fewer defects and, therefore, ultimately provides shorter delivery times and better value. One software approach is often claimed to be better than any others is always subject to debate endlessly. I must say that there is no one best development approach, different methods are best for different project contexts. What is best depends on whom the method is for, in what circumstances, for what purpose, and so on; to say that no single method is best for software developers is also to say that different methods are best for different teams or for different project nature.

Grady Booch says about this:

“If you want to build a dog house, you can pretty much start with a pile of lumber, some nails, and a few basic tools, such as a hammer, saw, and tape measure. In a few hours, you’ll likely end up with a dog house that’s reasonably functional… If you want to build a high-rise office building, you will want to do extensive planning… You will be just a part of a much larger group responsible for developing and deploying the building, and so the team will need all sorts of blueprints and models to communicate with one another….”

Would you take the same approach for a small web application and a NASA space probe? Likely not. Would you take the same approach with a team of six people that you would with a team of sixty people? Once again, likely not. Different situations obviously call for different approaches as noted by Scott Amber. There is no one size fits all solution for software development, in fact, designers need to have a wide range of tools at their disposal, to understand the pros and cons of each, and to be able to quickly decide on the most appropriate tools for applying in a desirable workflow for the given context.