Posted by Uncle Bob on 03/10/2009
In his March 1st, 2009 column in SDTimes, Andrew Binstock takes the “Zealots of Agile” to task for claiming that Agile is the one true way. He made the counter-argument that non-agile projects have succeeded, and that agile projects have failed. He implied that the attitudes of the agile zealots are blind to these facts.
What a load of dingoes kidneys!
There is a difference between a zealot, and a religious fanatic. A religious fanatic cannot envision themselves to be wrong. We in the agile community may indeed be zealots, but we know we can be wrong. We know that projects succeeded before agile, and we know that agile projects have failed. We know that there are other schools of thought that are just as valid as ours. Indeed, most of us expect (even hope!) that agile will be superseded by something better one day.
Some of you may remember my keynote address at the 2002 XPUniverse in Chicago. My son, Micah, and I got up in front of the group dressed in Jiu Jistsu garb, and commenced to do a martial arts demonstration.
After the demonstration I made the point that a student of Karate could have given an equally spellbinding, though quite different, show. A student of Tae Kwon Do would amaze us with still other wonderful moves. The morale, of course, was that there are many ways to get the job done. There are many equally valid schools of thought.
However, the knowledge that there are other valid schools of thought does not dilute the zeal a student has for the school of thought he has chosen to study. Do you think that a Jiu Jistsu master isn’t a zealot? You’d better believe he is! To be great, one must have zeal. To rail against zeal is to rail against the desire for greatness. It is zeal that makes you go the extra distance to become great. The Jiu Jitsu master may respect the Karate master, but his goal is to become great at Jiu Jitsu.
So I think it is healthy that agile proponents are vociferous advocates of their school of thought. They are like Karate students who are excited about their new skills, and want to teach those skills to others. If their zeal to excel can infect others with similar zeal, so much the better. We need people in this industry who want to excel.
In his column Andrew derided agile zealots for claiming that Agile was the one true path. I don’t know of any prominent agile advocate who has ever made that claim. Indeed, when Kent Beck and I sat down in 1999 to plan out the XP Immersion training, we were very concerned that we might turn the XP movement into a religion. We did not want to create the impression that XPers were the chosen people and that wisdom would die with us. So we were, in fact, very careful to avoid any hint of the “one true path” argument.
As evidence of this, consider the Snowbird meeting in 2001. That meeting was inclusive, not exclusive. We invited people from all over the spectrum to join us there. DSDM, FDD, Scrum, Crystal, MDA, & RUP were all represented; and the agile manifesto (Yes, Andrew, Manifesto![1]) was the result. That manifesto was a simple statement of values, not a claim to deific knowledge.
Am I an Agile Zealot? Damned right I am! Do I think Agile is the best way to get software done? Damned right I do! I wouldn’t be doing Agile if I didn’t think it was best. Do I think Agile is better than someone else’s school of thought? Let me put it this way: I’m quite happy to go head to head against someone who follows another school of thought. I believe I’d code him right into the ground! Isn’t that what any good student of his craft would think? But I also recognize that one day I’ll lose that competition, and that will be a great day for me because it will give me the opportunity to learn something new and better.
Andrew also mentioned that Kent Beck and I are so obsessed with our “evangelical fervor” that we: “endlessly test and endlessly refine and refactor code to the point that it becomes an all-consuming diversion that does not advance the project”. WTF? I’ve been making monthly releases of FitNesse, and Kent has been cranking out releases of JunitMax; neither of us has been so busy gilding our respective lilies that we are failing to move our respective projects forward. Look around Andrew, we’re shipping code over here brother.
As part of his rant against our “evangelical fervor” Andrew asked this rather snide question: “I broke up that code into a separate class and added seven methods for what benefit, again?” This would appear to be a dig against refactoring – or perhaps excess refactoring. Still the question has a simple answer. We would only break up a module into a class with seven methods if that module was big, ugly, and complex, and by breaking it up we made it simple and easy to understand and modify. It seems to me that leaving the module in a messy state is irresponsible and unprofessional.
Andrew complains that there is very little Agile experience with projects over six million lines of code. I’m not sure where he got that number from, perhaps he’s been watching Steve Austin re-runs. Actually, the majority of my 2008 consulting business has been with very large companies with products well over six million lines of code. Agile-in-the-Large is the name of the game in those companies!
Finally, Andrew says Michael Feathers is a “moderate” Agile proponent. This is the same Michael Feathers who wrote a book defining Legacy code as code without tests – hardly a moderate point of view. Michael is a master, not a moderate.
I think Andrew has fallen into a common trap. He sees the zeal of the agile proponents and mistakes it for religious fanaticism. Instead of respecting that zeal as the outward manifestation of the inward desire to excel, he rails against it as being myopic and exclusive and then views all the statements of the agile proponents through that clouded viewport. Once you have decided that someone is a religious fanatic, it is difficult to accept anything they say.
I think standing against religious fanaticism in the software community is a good thing. I also think that those of us who are zealous must constantly watch that we are not also becoming blind to our own weaknesses and exclusive in our outlook. But I could wish that those who fear religious fanaticism as much as I do would stop confusing it with professional zeal.
So here’s the bottom line. People who excel are, by definition, zealots. People who aren’t zealous, do not excel. So there’s nothing wrong with being a zealot; indeed, zeal is a very positive emotion. The trick to being a zealot is to be mindful that the day will eventually come when some other zealot from a different school of thought will code you into the ground. When that happens, you should thank him for showing you a better way.
1 I kicked off the Snowbird meeting by challenging the group to write a “manifesto”. I chose the word “manifesto” because some years earlier I had read The Object Oriented Database System Manifesto and I thought it was a clever use of the word.
Comments
Mike Bria 18 minutes later:
Here, here.
Without zeal, there is no passion. Without passion, likely no energy. Without energy, eagerness, or appetitive to share and grow…then, alas, what’s the point?
Beh, haters…
Jan Benny Thomas 32 minutes later:
I’m an old programmer, but an Agile novise.
I’m devoted to get people to learn the Agile way even if my skills in the trade are limited. I’m certain that the Agile way is not perfect, but I believe it’s better then anything else in the coding world.
Does it turn projects to success stories? No, I don’t believe so if the team doesn’t devote it’s full energy to be agile from start to finish.
Kan non-agile projects be successful? No, I don’t believe so, even a sucessful non-agile project will turn out to be a disaster for the customer after some years in production.
I hope one day to attend a uncle bob talk or/and a course, until then I still try to get even more agile.
Vlad 32 minutes later:
Both of you are right [to an extent], actually. A lot of non-agile projects employ agile techniques (because most of agile techniques were taken from non-agile projects).
You have to have a lot of zeal, because if you do not believe in what you do, then why teach others? So zeal is good! Please keep it up that way.
Liam McLennan about 1 hour later:
Seems to me that Andrew was trying to provoke a response by something thin and controversial. Worked for Jeff & Joel; worked for Andrew.
What was his point anyway? Projects fail with waterfall, projects fail with agile… so?
Alistair Cockburn observed that good teams tend to succeed and bad teams tend to fail. Methodology is a game of inches.
Keith Braithwaite about 1 hour later:
So I think it is healthy that agile proponents are vociferous advocates of their school of thought. They are like Karate students who are excited about their new skills, and want to teach those skills to others.
They are going to teach me, are they? Well, one can become pretty tired of that sort of behaviour pretty quickly, though, right? Especially if one is not greatly interested in Karate.
Here’s an alternative: At my “TDD as if you meant it” session at Software Craftsmanship ‘09 I encouraged attendees to take a stance towards test-first and doing the the simplest thing that even many seasoned Agile developers find…extreme. I prefaced the session with a sloppy paraphrase of an Allan Watts line, thus “I come not as a salesman but as an entertainer. I want you to enjoy these ideas because I enjoy them”
I find the idea of inviting others to collaborate enjoyment more agreeable than pestering them to let me teach them something.
Martin C. Nagel about 2 hours later:
Agile is a tool, and like all tools, has its place when the conditions are right. Waterfall is a tool, and also has its place when the conditions are right. Prototyping is a tool, and has it’s place when the conditions are right.
Just try running an agile project without a customer who is available. As a feedback-driven system, when there is no feedback, how do you proceed? (It’s like driving in a rain so hard that you can’t see the hood of the car; no usable feedback, no progress.) There are conditions that, when not met, absolutely require a different approach.
Yes, I am an Agile enthusiast/ambassador/champion. But, like all good craftsmen, I have a variety of tools in my tool chest. Some are my favorites (agile), but others are sometimes necessary.
We develop software for our customers. We use a variety of techniques. We don’t just “build agile apps”.
Philip Schwarz about 2 hours later:
@Uncle Bob
You said: People who excel are, by definition, zealots. People who aren’t zealous, do not excel.
I can’t help quoting the following Pattern I read in Software for Your Head:
Pattern: The Greatness Cycle
Problem: Mediocrity
Solution: Smartness leads to greatness, via presence, integrity, conflict, and passion
Greatness is conceived in your intention to achieve at an appropriate scale; it is born in the application of integrity; it flourishes in your navigation of conflict; and it matures in the vitality of your passion.
The GreatnessCycle is an important group behavior cycle. It is simple to understand, but difficult to practice. Its phases are as follows:
1.Smart people are present no matter what they are doing....Smart people will exploit the fact that the deeper one’s presence in any given moment, the more valuable the moment.
2.Presence leads to integrity. ...A lack of integrity and the fullness of personal presence are mutually exclusive. That is, a high level of presence is always accompanied by a comparable level of integrity.
3.Integrity leads to conflict. ...Individual integrity doesn’t automatically bind together individuals, but those persons will deal forthrightly with the differences that arise. To do less whether to avoid a conflict, to gloss over it, or to deal with it surreptitiously is to lack integrity. The maintenance of integrity leads to conflict.
4.Conflict leads to passion. If you care enough to weather the direct, honest conflict with your colleagues that flows from your practice of integrity, then you must care a great deal indeed. The emotions you feel when issues you care about are threatened will intensify into passion. Conflict is catalyzed by caring, and summons passion.
5.Passion leads to greatness. Passionate living provides the power to do great things. Though it neither mandates nor guarantees it,passion always attends greatness.
Andrew Binstock about 2 hours later:
Thank you for your response to my article. I think the article is made clearer by the points you raise. If I were to change it at all, it would only be to remove the reference to Kent Beck.
Andrew Binstock about 2 hours later:
Thank you for your response to my article. I think the article is made clearer by the points you raise. If I were to change it at all, it would only be to remove the reference to Kent Beck.
Steve Py about 7 hours later:
One point. A Zealot is not just a zealous individual, it is someone that is “excessively” zealous. (Including the title, he only referred to the term twice.)
Developers should be zealous about their methodologies, technologies, practices, and principiles, but they should not strive to be zealots.
Andrew’s article goes to extremes, but does touch on very real perceptions and attitudes in software development as seen from the “outside”. Developers that become distracted by the organization of each detail of a “clean” solution, developing towards a problem that never seems to get solved.
Developers should strive and have zeal for adopting methodologies and what-have-you to be the best that they can be. But the end result is the forest, not the tree. In the real world we work with messes all of the time, and our goal should be to leave those messes a bit cleaner each time we touch them, but we can’t always justify preaching that the world must stop turning until the mess is all cleaned up, and the project has no less than 80% test coverage. etc. etc. etc. Here be the land of Zealots. Incremental improvements to what we, developers, perceive as quality are a very good thing, so long as they don’t become the only good thing coming out of our builds. (I.e. 75%+ “refactoring”,
Steve Py about 7 hours later:
Ooh, slight bug with the comment entry and lt;... that should finish with “less than 25% that the client actually sees.)”
Frank Quednau about 11 hours later:
@Steve, I was slightly confused. As a non-native English speaker with the need to get a better definition of those words I have the feeling that “zeal” is quite different to “Zealot”.
It seems that this lovely article talks about “zeal” rather than “zealot”. Most definitions I found on Google trace the word “zealot” to a Jewish group that fought Romans. The word “zealot” remains blurry to me while “zeal” translates to German into excellent, bold and great words!
In the dictionary I also found this saying which seems to me quite fitting: “Zeal without knowledge is fire without light.”
m4bwav about 19 hours later:
I think that people sometimes get more hooked on the zealotry than they do on the actual agile development.
I mean the reason that zealotry can be dangerous is often that people get off on telling people they’ve have the answers, that their views should be considered first, and that everyone else in unenlightened. There is a pleasure that trickles into our brains when we feel righteous.
Certainly wise and experienced agile developers are going to understand that they should make an effort to be open-minded, but many agilests do not. Even though open-mindedness is one of the tenants of the ideology, it is also one of the most subjective.
Trevor about 21 hours later:
Your point is true perhaps for the leaders in the community, but I think this is a lesson that hasn’t been learned by a lot of the followers in the community. Maybe, if you back them into a corner and ask them outright if agile is the only way to be successful, they will finally concede that no, it isn’t. But I’ve found, short of that, having an honest discussion with them is very difficult, and a disinterested observer I think would rarely come to the conclusion that Agile is a very good way, as opposed to the overwhelmingly best way to write software.
So, yes, as far as you are concerned, I agree….as far as your “followers” are concerned, I strongly disagree.
Darrell Hawley about 22 hours later:
Uncle Bob, your post is insightful as always, though like some of the previous commenters I do take exception with your interpretation of the word “zealot”. Instead, I want to point out that many of us get injected into decidedly non-agile teams where we have to convince those around us to adopt agile practices. To be successful in these cases, you absolutely MUST avoid zealotry. It’s importatant to make your passion for developing quality software absolutely clear, but if you go to far you run the risk of alienating your client. The best way of making progress with non-Agile folks, is to point out and solve one problem at a time. By avoiding dogma, we can improve the base of our profession.
Luca Minudel 1 day later:
some term definition that may help
- specialization : the ability to react, respond, adapt promptly inside a well defined context, a fixed schema (somehow like a pre-compiled query)
- prejudice/bias : the habit to make use of a specialization that lead to use it also outside the context/schema/boundaries of validity (somehow like a silver-bullet)
- superstition : the belief on a cause-effect linkage that has not been demonstrated (somehow like a code that work but nobody know why)
- religion : is when there is agreement about something that is far from certainty (somehow like faith)
====================================
some thought about agile
- agile strive for specialization on coding practices (pair/tdd/refactoring/emergent design) that have theirs foundation on an empirical/reactive approach instead of a theoretical/predictive one and are driven by feedback
=> want avoid prejudice/bias by definition
- agile employ retrospectives, root cause analysis, spikes, explorative refactoring, ... and every possible way to investigate and understood what is really going on
=> want to avoid superstition as a vocation, want to learn from reality
- agile findings have some confirmations in scientific areas e.g. economics , mathematics, sociology, cognitive psychology, complexity science and there are academic studies are starting on that
=> does not follows a religious fanatic approach, prefers the scientific one
Luca Minudel 1 day later:
some term definition that may help
- specialization : the ability to react, respond, adapt promptly inside a well defined context, a fixed schema (somehow like a pre-compiled query)
- prejudice/bias : the habit to make use of a specialization that lead to use it also outside the context/schema/boundaries of validity (somehow like a silver-bullet)
- superstition : the belief on a cause-effect linkage that has not been demonstrated (somehow like a code that work but nobody know why)
- religion : is when there is agreement about something that is far from certainty (somehow like faith)
====================================
some thought about agile
- agile strive for specialization on coding practices (pair/tdd/refactoring/emergent design) that have theirs foundation on an empirical/reactive approach instead of a theoretical/predictive one and are driven by feedback
=> want avoid prejudice/bias by definition
- agile employ retrospectives, root cause analysis, spikes, explorative refactoring, ... and every possible way to investigate and understood what is really going on
=> want to avoid superstition as a vocation, want to learn from reality
- agile findings have some confirmations in scientific areas e.g. economics , mathematics, sociology, cognitive psychology, complexity science and there are academic studies are starting on that
=> does not follows a religious fanatic approach, prefers the scientific one
Wendy 1 day later:
Isn’t Jiu Jitsu is the best martial art? Maybe muay tai is a close second :P
Eirik 1 day later:
Judo is the best :). Why? Because it is agile :)
Philip Schwarz 2 days later:
@Luca
Interesting comment. Do you elaborate on your ideas in any of your blog posts (I am aware that your blog is in Italian, but that’s OK since it is my mother tongue)? , or can you point me to any posts/articles/papers/books that do?.
Thanks.
Luca Minudel 7 days later:
@Philip Schwarz
I’ve tried to post the links 3 times sorry but it look like they don’t get published here
sheepsimulator 5 months later:
I think there is a thin line between religious fanaticism and zeal, whether it’s software development or some other belief system. I also think it’s even possible for people to confuse the two within themselves. How many people do you know who would honestly call themselves religious fanatics, despite the fact that they act like one?
I think Andrew is reacting against something that he sees time and again, and that is other agile proponents (not you, and probably not Kent Beck) making really horrible arguments for agile, when mixed with those proponents religious fanaticism, give them a distaste for the message when in reality they need to place the distaste on the part of the person bringing the message.
I think the answer is: there needs to be more Agile evangelists with an even keel, like you.
Dunno, just going through this at my own workplace. We have one developer who refuses to listen to any software development process ideas unless some agile keyword/buzzword is tied into it. Makes him very hard to talk to.