When I was member of the young pioneer organization, which was the communist boy-scouts pendant, I’ve learned its rule “criticizing, suggest”. Basically it means, it is uncool to criticize without proposing an alternative solution.
So I felt myself obligated to supplement the process critique with some constructive solutions, which in my opinion should be at least considered in any emerging software company thinking about installing or improving their software process.
A software process defines artifacts and activities. Both of them can be either directly a deliverable/service for the customer, or be created/executed purely for internal purposes. By carefully choosing, adapting and shaping the activities and artifacts, and by defining the execution timeline, software processes promise to achieve some benefits for a software development business, in comparison to the absence of any formally described process.
- Software processes increase efficiency.
- Software processes enable risk management.
- Software processes is a safety net for worst-cases and a learning tool.
While promises of software processes sound REALLY interesting (I myself was in fact a passionate believer of Extreme Programming for a long time), can they be achieved in reality?