Software processes are good, but they come at a cost. The trade off is not straightforward. Lets consider the following points
- Software processes serve as a discipline for the forgetful programmer
- Reviews give us insight into potential issues and save us the time of reworking things later
- Unit testing and Integration testing should be stressed upon, it really helps catch a lot of potential defects
On the other hand
- Excessive processes might be time consuming
- The focus should not shift from the work product to the processes
I hope I will not be called radical for stating that "sometimes its better to let the one odd complex/hard to reproduce bug be in there", its easier to fix when someone hopefully internally catches and tells you how it occurs, instead of spending a lot of time for finding and fixing it. This does not mean that you leave potentially disastrous things in your software, if you are satisfied with your testing -- move on!
New methodologies like eXtreme Programming are radical in their focus on testing, developer burn-out and online review. It makes no sense to write code that has never been tested.
I have been trying to figure out the main reason for software development being so expensive and sometimes buggy. Here is a first cut at the list of what software developers have
- Software reuse
- Extensive testing (which adds to the cost)
- Good tools, compilers and debuggers (like gcc, lint, purify, etc)
- Availability of free compilers, code and tools (they have licensing restrictions to a great extent)
I would also like to consider the discuss the pros and cons of Project Management
I think that about 70% of the productive code is written by 30% of the people.
Can we come with methods to streamline and refine the process of software development, reduce costs/increase productivity and reduce developer burn-out?