Wednesday, June 15, 2011

Software Development Best Practices


As a consultant in the software industry, I am always looking out for best practices, to help my clients put in place what is needed to build better software products.

A colleague of mine recently shared some best practices adopted by the Software Program Managers Network (or SPMN).

The 16 Critical Software Practices (which I like to refer to as best practices) were originally developed for large-scale DoD programs. At the same time, they are highly relevant to any software project (irrespective of size).

The 16 Critical Software Practices include:

Project Integrity
1. Adopt continuous program risk management
2. Estimate cost and schedule empirically
3. Use metrics to manage
4. Track earned value
5. Track defects against quality targets
6. Treat people as the most important resource

Construction Integrity
7. Adopt life cycle configuration management
8. Manage and trace requirements
9. Use system-based software design
10. Ensure data and database interoperability
11. Define and control interfaces
12. Design twice, code once
13. Assess reuse risks and costs

Product Stability and Integrity
14. Inspect requirements and design
15. Manage testing as a continuous process
16. Compile and smoke test frequently

I shared the above with a client of mine. He especially liked the "Design twice, code once" best practice, having been burned by poor designs on prior projects. Interestingly, "design twice, code once" is not much different than the old carpenter's mantra, "measure twice, cut once". In fact, these best practices are nothing new. Simply best practices applied to the art of software development.

The American painter Edward Simmons once said, "The difference between failure and success is doing a thing nearly right and doing a thing exactly right". This is true of painting. It is also true of software development. You can definitely increase the likelihood of success by following best practices such as these on your software project, regardless of which software development methodology you use (be it Agile, RUP, Iterative, Waterfall, etc.).



Post a Comment

0 comments: