Software Development Is A Religion

Jeff Atwood writes a great rebuttal to Steve Yegge’s rant on Agile methodologies.  I won’t expound on it too much except to point out this quote which should be an instant classic, emphasis mine:

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.

[ad] Free Bug Tracking & Project Management Software Axosoft’s OnTime 2007 allows software development teams to collaborate on software projects by tracking everything from defects to enhancements to helpdesk incidents in one easy-to-use database driven by an intuitive Windows, Web or VS.NET Integrated UI. Get a Free Single-User License ($200 Value!)

What others have said

Requesting Gravatar... Rob Conery Oct 09, 2006 9:18 PM
# re: Software Development Is A Religion
You can't mechanize any human interactions, no matter what you do. When I sit with a new client, going over their "detailed" (read: Excel Spreadsheet) first-pass requirements, I usually spend more time thinking about them and what they want, who they are, what makes them tick. I like to crawl inside my client's head so I can see through the market-speak and figure out how I can make them look good. This works pretty well for me and (no kidding) many clients become good friends!

I use the Brat method myself: all software I work on is a bratty kid whom I have to raise from conception through adolescence. It's a constant shift of priorities while maintaining a steady hand. Some spanking here, hugging there, complete lack of sleep early on.

Now if only Agile Parenting was in vogue, I might get some sleep!
Requesting Gravatar... Haacked Oct 09, 2006 11:28 PM
# re: Software Development Is A Religion
Agile Parenting is the hot new craze.

First, if at all possible, you pair parent. When the kid is young, you keep the iterations short, for example, waking up every two to three hours to feed.

Then you spend time gathering requirements from a client who makes very little sense (Hint, the kid is probably hungry or soiled).

Or you can do the waterfall approach, 18 years of up front design and then send them off on their own.
Requesting Gravatar... Haacked Oct 10, 2006 12:28 AM
# re: Software Development Is A Religion
> You can't mechanize any human interactions

Well in the aggregate, you kinda can. Otherwise we'd have no such thing as sociology.
Requesting Gravatar... Rob Conery Oct 10, 2006 1:45 AM
# re: Software Development Is A Religion
You must be one of those Seldon zealots :p
Requesting Gravatar... Steve Harman Oct 11, 2006 7:37 AM
# re: Software Development Is A Religion
@Haacked: Does wife know that you've put this must thought/effort into planning how to optimally raise Haacked 2.0?

What do you have to say?

(will show your gravatar)
Please add 4 and 3 and type the answer here: