On June 24th Mary Poppendieck gave a free talk at the IT University in Copenhagen arranged by BestBrains. The title of the talk was “Is Agile a Fad?” with the subtitle “Will Agile Software Development End Up On the Dumping Grounds of History?”. This dramatically titled talk gathered more than a 100 agile enthusiasts in a packed auditorium, and I spotted several members from Danish Agile User Group and Copenhagen Ruby Brigade, as well as both students and teachers from Copenhagen Business School and, of course, ITU.
Mary Poppendieck started her talk with a story about the dot-com bubble of the 1800’s: Plank roads. She ended the story by asking: Is agile development a plank road? Is agile development just another fad that gets everyone exited for a time, but doesn’t really solve anything in the long run? Poppendieck never really answered this question, but she went on to go through software development from the 1960’s up to our century, concluding that for each decade and each new software development paradigm, large software projects (over a year) was still late, over budget and full of bugs - even today this is the case. She did, however, point out that the opportunity to do small software projects (around 3 months) has increased greatly during these decades, and that large projects is falling out of favor.
Why is software development so hard to manage? Why have we passed through so many paradigms in such a short time span? Poppendieck had three theses on why this might be so:
Thesis 1: Silver Bullet Thinking
People has a tendency to believe that a certain process, method or tool is so great that it will magically solve the problems right away for anyone who use it. They tend to ignore the details of this silver bullet, and just try to apply it directly to their company or project while ignoring what the real world is like. When this happens, the “silver bullet” will just be a fad, and it won’t work.
Thesis 2: Different Contexts
Extremely different approaches to software development exists, from the very rigorous and structured to the very people-driven and agile, and both extremes and a lot between seem to work in different contexts. One approach might be good for one kind of software, but not necessarily for another kind of software. There is no single answer, no single method that works for all contexts.
Thesis 3: Essential Tension
There is an essential tension between getting started with development (coding) right away versus planning and spending time doing design and architecture. The first might get you fast results and early feedback, while the latter might save you from major refactoring and incoherent software. Spending time planning is good, but following a plan you created when you where most ignorant is not. Maybe there is a fundamental tension between these two poles, and maybe projects need to be in the middle, driven by essential tension.
Mary Poppendieck went on to describe how to fail with agile. She listed four mistakes that people are likely to do when trying to adapt agile processes, but she also listed four principles that should be followed to avoid these mistakes:
Mistake #1: Copy What Successful Companies are Doing
Poppendieck referred a lot to the book The Wisdom of Crowds, and quoted the notion of “the instinct to imitate” from book in connection with this mistake. If we let ourselves be influenced too much by existing practice, we will believe the same things are right and make the same mistakes. The solution is to maintain indepence and think for yourself. Don’t believe in all success stories, but look for the flaws and mistakes in them. Just because it is the textbook’s way of doing it, it doesn’t mean that way is good for you. You don’t get world class development by copying best practice, but by inventing it.
Mistake #2: Insist that Everyone Follow a Standard Process
Different people have different views of the world, and different processes will work best for them. For this reason, the agile process should draw on local knowledge, letting people fit the process to their needs locally and constantly improve this process. Again, there is no such thing as a “best practice” for everyone.
Mistake #3: Limit Agile Implementation to Software Development
Poppendieck quoted The Wisdom of Crowds for its notion of “the value of cognitive diversity”. Having a team with software developers only is not very diverse, so you need to gather a group of people from all parts of the organization - creative, testers, operations, etc. The solution is to widen the boundaries and accept that “IT” is part of “The Business” and not outside of it. The team should be responsible for business success, not just technical success, which has no value in itself.
Mistake #4: Avoid Tension
There is a natural tension, not just between programming and planning, but also between marketing people who wants the job finished right now, and developers who want to develop forever. Many other examples could be found. Tension, even conflicts, is what provides a balanced solution, and consensus decisions is nothing to strive for.
Mary Poppendieck concluded her talk by explaining, that if we want to make agile something more than a fad, we must recognize all three theses - stop silver bullet thinking, recognize different contexts and welcome essential tension - while avoiding the common mistakes.
Hello, I'm Casper Fabricius. I have developed for the web for 8 years, and have been enjoying Ruby on Rails for the past 3.
My experience covers communities, shopping solutions, multi-language sites, heavy back-end lifting and a wide selection of more traditional websites. I currently favor Radiant CMS as a platform, and I am an expert Radiant extension developer.
I am based in Copenhagen, Denmark, but I take assignments from across the globe. Feel free to study my resumé, featured projects and - of course - to hire me.
Olle Jonsson
June 25th, 2008 at 11:04 pm
Thanks for the run-down, Casper. Sad to have missed such a luminary. But the week was mildly insane already, so it had to be like this, anyway.
Jens Østergarad
June 25th, 2008 at 11:23 pm
Tak for godt referat
Jens
Frank Vilhelmsen
June 26th, 2008 at 8:32 am
that’s super, I would like to have been there.
Infract, I cut comment a lot on mistake nr 1. In this bank we just copy like hell.
Kennie Nybo Pontoppidan
June 26th, 2008 at 9:03 am
Jeg blev nysgerrig på det hun sagde om en anden måde at prioritere opgaver på end Scrum. Hun kaldte det vidst Kanban scheduling. Gad vide om nogen har prøvet at bruge det? Jeg tror vi skal prøve at give det et skud her på IT-Universitetet
Hans Haller Baggesen
June 26th, 2008 at 10:04 am
At the risk of being ridiculed for not getting the point, I would like to question MP’s questions?!?
“Why is software development so hard to manage?” Shouldn’t the question have been something like “Why are BIG software projects so hard to manage!”? I know that answer to that would have been a dead give away! “BIG” (time, people, problem domain, et al) = “complex” = “a conceptual whole made up of complicated and related parts” and that’s difficult to grasp by nature! So we, the agile heads, break the structure down into manageable bits and make big projects small and manageable. At least that’s what I do!
Maybe the question should have been “Is there another way of managing BIG projects? - other than by breaking it down into smaller bits” because breaking a project down have some obvious risks –like missing whole…?!? Hmm I almost made that sound lean ;)
BTW.. Her “what makes agile fail points” those points would make just about anything fail! Maybe I should have expiated less from a free lecture, so Bent next time force my arm and make pay to experience the two day show :)
Casper Fabricius
June 26th, 2008 at 10:48 am
@Olle+Jens: You are welcome :)
@Frank: I was struck by mistake #1 as well. I am in fact currently writing my master thesis providing case studies and analysis of four agile development teams, from the notion that people could a learn a lot from these apparently successful teams - but if everyone should form their own process rather than copying from others, what worth is my thesis really?
@Kennie: I remeber Kanban as interesting notion, but I didn’t catch the concept very well in my notes, and now I can’t seem to recall what is was all about?
@Hans: I’m afraid these questions are not direct MP quotes. MP really just asked “Why?”, and the questions are my attempt to clarify what MP was asking - and I might be wrong.
Martin Jul
June 26th, 2008 at 11:15 am
If you are interested I will write an introduction to Kanban scheduling - it is one of the modifications we frequently do to Scrum when implementing it with our customers.
The basic idea is based on the heijunka principle of load levelling. As long as you have work flowing steadily through the process at a predictable rate and all steps have approximately the same capacity planning is very simple: you know that when you add a work item to be done it will take approximately the average cycle time to get through the system (you have to adjust for the relative size of the work).
This way your planning will be like this:
“OK here is 5 points of work I need done when will it be ready?
The you look at your kanban - the visualisation of your process - and say - we 20 points of work in progress before it and we are delivering 5 points per day, so you can expect to have it in five days (four days of backlog/lead time to deliver the WIP and on the fifth day the new 5-point item will have made it through the process).
It quite simple and probably “good enough” for most people since it takes away a lot of planning effort. It requires a very stable process with limited variation to be useful (ie. predictable). This is one of the reasons that Kanbans should be used carefully and you should react promptly to problems when you see causes of variation such as queues building up in the constrained intermediate process steps.
Which in turn explains why the ScrumMaster role is so important…
Give me a mail at (mj at ative.dk) if you are interested in hearing more and I will write some more about it.
Casper Fabricius
June 27th, 2008 at 10:10 am
@Martin: Thanks for the explanation. I think an introduction to Kanban would be a good idea, as searches for the term mostly provides the notion in an industrial, rather than software, context.
Thomas Blomseth
June 28th, 2008 at 12:51 pm
Thanks for a nice sum up of Mary’s thoughts, Casper. We at BestBrains were very pleased with so many people showing up Tuesday.
For those of you interested in kanban scheduling in sw dev you might wanna check out some of David Andersons work:
Kanban in Action
A Kanban System for Sustaining Engineering
Like Martin I also find and have experience that some kind of kanban system for limiting the work-in-progress can be a beneficial addition to Scrum.
abby
July 1st, 2008 at 3:49 pm
Thanks for sharing this! Those “mistakes” are quite insightful. I especially love: “there is no such thing as a “best practice” for everyone.” How true! If we really want to be agile, I think we need to get better at this.
Agile Year In Review » Blog Archive
January 28th, 2009 at 8:30 pm
[...] Agile theses and mistakes [...]
LE CANH KHANH’s Personal Website » Blog Archive » Agile Year In Review
February 13th, 2009 at 6:15 pm
[...] Agile theses and mistakes [...]