Despite changing the world and everything around us in last ~40 years, Software Development is still plagued by Delays, Bugs, Low quality and Uncertainty.
The merchandise includes but not limited to Tools, Tips, Tricks, Processes and Practices.
They comes with numerous successful execution examples / precedences (true or otherwise).
For many, they become the "Universal Success Mantras" of software development. Unfortunately, there can't be any "Universal Success Mantra" or "One Size fits all" Solutions.
Success for us depends heavily upon the perceived value of the product.
However, in comparison a Tank will surpass the Car in almost all safety requirements.
Shouldn't we learn for existing successful practices?
Yes we should, BUT the way Military learns from their own and others successes. Military personnels learn from previous successes, but not necessarily repeat the exact same steps in any future missions. Because they understand that each mission is different shall be executed under different environment and circumstances.
Software Development Needs to do the same
There is a fundamental different between software "X" and "Y"
- "X" and "Y" may cater to different set of customers
- For "X", the end customers may be programmers, but for "Y" they may be end users themselves.
- "X" can be written using existing libraries and tool but "Y" needs to be created from scratch
We can't create "X" and "Y" using the same yardsticks or tools or processes. We should learn from earlier successes as well as failure but repeating the steps will not lead us anywhere.
The Agility is in Inspecting and Adapting, not in behaving religiously when it comes to using a Tool, Tips, Tricks, Processes and Practices.