Software Development: It's a Religion

It's Monday, and Steve Yegge still hates Agile software development. How much does he hate it? Approximately 11,000 words' worth. I think I could start a cottage industry producing Cliff's Notes versions of Steve Yegge posts. Here's my condensed version of Steve's latest:


This is a companion discussion topic for the original blog entry at: http://www.codinghorror.com/blog/2006/10/software-development-its-a-religion.html

Dude, you rock! That’s my belief, and I’m sticking to it.

I think the religion/superstition analogy is a bit misplaced. I think methodologies are more like fads - the “hot” ones are usually based on a small, vocal group of people finding something they like and spreading the word. But over time they fade in popularity because they don’t work for the masses.

Let’s face it: writing good software is hard, so people will always be looking/hoping for better ways to do it and, to that end, will try all kinds of ideas - some reasonable and some crazy. What works for some people won’t work for others. Some people will become fanatical about the things that worked for them (whether or not the technique was the casue for their success). But in the end, none of really revolutionizes the industry. Fred Brooks realized this 20 years ago when he wrote “No Silver Bullet.”

http://www-inst.eecs.berkeley.edu/~maratb/readings/NoSilverBullet.html

Its just like dieting - no fad is going to make up for the obvious solution that so few can accept: eating less and exercising more. And no methodology is going to make the large number of mediocre programmers great.

Development methodologies are a like diets

I have to be honest here… The message I’m reading in your post here Jeff doesn’t sound very different at all from what I took away from Steve’s. I expected his post to be out-of-the-blue and off-the-wall like the last one, but I was surprised to find that it is much more tempered.

What I saw at the heart of Steve’s post is not a “methodology atheism”… it was something like maybe a “methodology agnosticism”. I.e. he’s not saying there’s no right answer, but rather that he doesn’t pretend to know what the right answer is for you. The right answer for you may not be the same as the right answer for the other guy. And to lift up one methodology above all others and declaim and deride the refusers is nothing but politics.

How exactly is “staying lightweight” different from Agile?

“Staying lightweight” is a goal and a philosophy that transcends blind rule-following and rituals. “Agile” is a marketing scheme and a brand, complete with scheister salesmen and cult followings. Does this mean that Agile is worthless, or a “bad” way of staying lightweight? Certainly not. It just means it’s not the One True Path, and shouldn’t be treated like it is.

I’m not sure why Steve is so uncomfortable with the idea of software development as a religion.

First off, I don’t think he’s uncomfortable with it being a “soft science”, or a philosophy. But “religion” comes with a whole host of burdens, traps, warts, etc. With it comes zealots, Inquisitions, Crusades, heretics, martyrs, Dark Ages, “infallible” patriarchs, posturing, politics, indulgences, and so on ad infinitum.

Second, I think what Steve is really uncomfortable with the endless cycles of “the next big thing”, whereby the community gets hyped up over a supposed cure-all and any “unbelievers” who happen to work better and more comfortably under a different methodology are slowly but surely ostracized. It’s ridiculous. It’s a tremendous waste of time and money. And it results in tremendous pressure for people were getting by just fine, thank you very much, to bend to the will of the mob, or risk ridicule, defamation, loss of status, etc., etc. Only for it to blow over in ten years or so when the next big thing takes the community by storm and we all have to change again.

It’s high school stuff. And for as much as we geeks and nerds make fun of the suits for their posturing, our community is no less guilty of it. Ours just happens under the guise of methodology.

I hasten to add that my above comment should not be construed as an attempted indictment of the “Agile” philosophy, or of methodologies that happen to be little-a-agile.

Rather, it’s an attempted idictment of the church model of software development. And of the evergreen schools of “if it’s not working, you’re not doing it right”, and “if you’re intentionally not using it, you’re a stupid luddite”.

zealots
plenty of those
Inquisitions
"goto has ruined you for life!"
Crusades
Go forth and conquer foreign shops in the name of [subroutines|OOP|C++|RUP|Agile|XML|…]
heretics
RMS
martyrs
RMS
Dark Ages
We’re in 'em, babay!
“infallible” patriarchs
[Knuth|Wirth|Stroustrup|RMS|Booch|Joel|…]
posturing, politics
Yeah, plenty of those around
indulgences
refactoring.

Here’s to taking all this religion stuff literally:

http://www.TheChurchOfGoogle.org

“How exactly is “staying lightweight” different from Agile? Isn’t Agile the Church of Lightweight”

Wow, that’s picking a few words in the middle of a blog, and taking them out to make the author look like a doufus.

The author is not about saying that Agile is the reverse of lightweight, and you cannot honestly say that Agile is the only way of working ‘lightweight’ (whatever that meant that to the author). Therefore that that ‘right back at you’ has no meaning. A is different from B because A is not exactly equal to B.

You know, with the post on Joel and this, I think the religious persecution starts here.

Some of us are development manager, and fully in control of the development process, and are not ‘peons trapped in a sausage factory’ who are forced to not use Agile. No really, we decide not to.
Everyone should read Extreme Programming Refactored http://books.slashdot.org/books/04/03/24/2118215.shtml?tid=126tid=156tid=188tid=192

Shog9, in that case, most human endeavors are religions. :wink:

I really hope you skimmed that to provide the synopsis, Jeff. Geez, that’s enormous.

“…he’s not saying there’s no right answer, but rather that he doesn’t pretend to know what the right answer is for you.”

I second WaterBreath. Is belief in anything that cannot be proven ‘religious’? Let’s break the word down:

a) The promise of a silver bullet;
b) The organization of a church around it;
c) Dogmatic faith in it.

The red herring here is c. To hold strong beliefs without proof is part of what it means to be human, so just satisfying that property doesn’t constitute religion.

Neither atheism nor Yegge’s position satisfy a and b. Therefore neither is a religion. Strongly believing “X is not a path to nirvana” is very different from strongly believing that “Y is the only path to nirvana”. The latter is closed to much more than the former.

I think the religion/superstition analogy is a bit misplaced. I think methodologies are more like fads - the “hot” ones are usually based on a small, vocal group of people finding something they like and spreading the word. But over time they fade in popularity because they don’t work for the masses.

OK, I’ll bite on this. We do have our fads. But how much of Steve’s criticism is based on knee-jerk anti-populism and how much of his criticism is based on actual data? He’s guilty of the same thing he accuses the Agile camp of. In spades!

And to lift up one methodology above all others and declaim and deride the refusers is nothing but politics.

Agreed. Like religions, they’re all correct depending on the context. That, or else you unbelievers are going to burn in hell. I pity you all.

Shog9, in that case, most human endeavors are religions.

Pretending that we don’t have our religious, politics, etc is just plain denial. A good religion/methodology is compatible with these natural human tendencies, or they’ll implode under their own weight.

Let’s face it: writing good software is hard, so people will always be looking/hoping for better ways to do it and, to that end, will try all kinds of ideas - some reasonable and some crazy. What works for some people won’t work for others.

I agree, but I’ve personally suffered so much under Waterfall throughout my entire career that I firmly believe it is a fundamentally broken methodology. Therefore, Anything But Waterfall is a worthwhile goal in and of itself. I’m not going to dictate how people should run their projects, but I can almost guarantee that Waterfall is NEVER the right choice.

The author is not about saying that Agile is the reverse of lightweight, and you cannot honestly say that Agile is the only way of working ‘lightweight’ (whatever that meant that to the author). Therefore that that ‘right back at you’ has no meaning. A is different from B because A is not exactly equal to B.

But agile is A WAY of working lightweight. It’s progress towards the goal, eg, away from waterfall.

I guess Steve views big-a Agile as very dogmatic and prescriptive. I don’t know what kind of Pragmatic Nazis they have at Google, but I’ve always seen Agile as a looser set of guidelines:

http://www.agilemanifesto.org/

Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan

These are totally reasonable guidelines. You’d think an “Agile” team, particularly at a place supposedly as enlightened as Google, would agree as a team what they wanted to do along those guidelines.

Most great software developers around the world don’t use Agile.
2. It’s true that most developers don’t use agile software development. That’s because they’re stuck in organizations that don’t allow them the luxury of “staying lightweight”. They’re peons trapped in a sausage factory.

I would say that “most great software developers” is not exactly the same as “most developers”. And I would also say that Steve meant “succesful developers” when he said “great software developers”. I would also say that peons trapped in a sausage factory are rarely succesful.

Otherwise, interesting post.

Funny, but this is a lot like arguing about religion and “the soul”. How can you argue something in which nobody agrees on the definition?

Do people have souls? Well what is a soul? Is it the perception of self awareness arising from a complex interaction of neurons firing, or is it some metaphysical essence that is otherworldly and is the animating force in life?

Sometimes two people will both agree that there is a “soul” but are talking about two completely different things?

Likewise, what is agile? Is it a marketing ploy set to ensnare the poor unsuspecting developer’s hard-earned money? Or is it a loose set of guidenlines embodied by a manifesto and based on experience?

Another aspect of religion is if you disagree with it, you must be a zealot for the other side.

Yeah, I’m talking to you Atwood, you big-A zealot.

Great post.

I think the real problem with our industry, is that there are way too many people trying to become an authority in it. With people spouting on about methodologies and what is the best, it kind of takes the emphasis on just writing good code. I read in a forum once somebody saying “There are no longer programming languages anymore, there are only programming methodologies”, I for one was really confused by this statement. I feel most developers are now more confused than ever about what is the best approach, OOP, OA, Extreme, Agile, Procedural, these words are bandied about our industry as if they are supposed to solve problems. The buzz words like code optimisation, are flung about as if we are all in great danger! It has got to the point where the Home Hobbyist programmer, is thinking more about code optimisation than actually look at the functionality of his MP3 Library organizer application.

There is a time and place for this religion, and that place is safely tucked away in file 13. Let’s not let this religion do what the catholic religion did and stop scientific advancement for 200 years.

I’m only aware of one attempt to compare directly agile and “traditional” techniques side-by-side. Unsurprisingly it was at a University, where a suitable supply of cheap guinea-pigs is always available…

This link is to the PDF of their write-up…

http://www.dcs.shef.ac.uk/~fmacias/papers/maciasXP2003.pdf#search=%22sheffield%20university%20agile%22

(or Google for “Sheffield University Agile”)

I read the Sheffield University study. Its interesting. (The conclusion was that they work about the same for small and medium sized projects).

However, my experience is that the larger a project is, the more important it is to have a design done up-front. (This goes for old fashioned writing, as well as software development, btw). So I could see someone making the argument that if they had studied large projects rather than small and “medium-sized” ones, they would have found Agile doing worse.

I’m on board with you Gary.

It has always bothered me how the IT industry has latched onto this whole “religion” thing. Look, we code, we juggle and process ideas, we make products and sometimes when they are good enough (or more likely, when the consumers like them enough) we sell those products and make a living. There’s no great programming god to pray to. To try to equate progamming methodologies to religious practices is ridiculous. Evangelism is just the catchterm for marketing/propoganda. There’s so much information about which language is best, which OS is best, what approach to take, etc. etc. that not only can you not see the forest for the trees but you don’t realize why you’re looking for the forest to begin with!

Programming is work, it’s what we do to put meat and taters on the table. It shouldn’t be a lifestyle. Sure, programmers should certainly be passionate about what they do, what they believe in as programmers, but when you get all wrapped up in a programming ideaology to the point where you are fighting about it things have gone a bit too far. It’s like when you have so many meetings that the meetings are now the focal point and the reason for having the meetings to begin with has been lost in the shuffle.