Software Development Is A Religion
Steve talks about “staying lightweight” as if it’s the easiest thing in the world, like it’s some natural state of grace that developers and organizations are born into. Telling developers they should stay lightweight is akin to telling depressed people they should cheer up.
Heh heh. Jeff moves from a Coding Horror to a Coding Hero.
Now while I agree much of it is religion, I like to think that the goal is to remove as much religion out of software development as possible. A key step, as Jeff points out, is recognizing which aspects are religion.
...the only truly dangerous people are the religious nuts who don’t realize they are religious nuts.
It’s like alcoholism. You have to first accept you are an alcoholic. But then, once recognizing that, you strive to make changes.
For example, Java vs .NET is a religious issue insofar as one attempts to make an absolute claim that one is superior to the other.
However it is less a religious issue to say that I prefer .NET over Java for reasons X, Y, and Z based on my experience with both, or even to say that in situation X, Java is a preferred solution.
Likewise, just because double-blind tests are nearly impossible to conduct does not mean that we cannot increase the body of knowledge of software engineering.
For the most part, we turn to the techniques of social scientists and economists by poring over historical data and looking at trends to extrapolate what information we can, with appropriate margins of error.
Thus we can state, with a fair degree of certainty, that:
Design is a complex, iterative process. Initial design solutions are usually wrong and certainly not optimal.
That is fact 28 of Facts and Fallacies of Software Engineering by Robert L. Glass, who is by no means an agile zealot. Yet this fact does show a weakness in waterfall methodologies that is addressed by agile methodologies, a differentiation that owes more to the scientific method than pure religion.