Mike Cohn's Blog

Reflections on the 10 Years Since the Agile Manifesto

Today is the tenth anniversary of the start of the meeting that resulted in the Agile Manifesto. Much has changed in the ten years since the Agile Manifesto. Back then, the processes encompassed by the Manifesto—Extreme Programming, Scrum, DSDM, Feature-Driven Development, and others—existed only on the fringes of the software development world. It was, therefore, easy to dismiss them as being inappropriate for real-life application.

Even in my own division, we questioned our decision to use Scrum. After all, most of the buzz in those days was about the Unified Process. There was this feeling in the air that if you weren’t doing the Unified Process, perhaps you should be. We had been tremendously successful with Scrum yet were filled with doubt—would we have been even more successful if we used a complete methodology instead of this little toy of a process called Scrum? After all, we didn’t know anyone else doing Scrum and the term “agile software development” didn’t exist. When the whole world seemed to be moving toward a “unified process,” it was hard not to wonder if you were the only ones who weren’t.

And then one February morning I got an email from Ward Cunningham: “Look how I spent the last few days,” he wrote. He included a link to a new website, www.agilemanifesto.org, and a grainy photo of some guys standing around a whiteboard. But that website hit me like a lightning bolt—we weren’t alone, after all. Suddenly I knew there were at least seventeen others who felt the same as we did. And then day by day, there were more, each signing his or her name and adding a brief statement of solidarity on the agilemanifesto.org website.

With a name for what we were doing— agile—others like us seemed to pop out of every corner. “Yes, we do that, too,” became the catchphrase of early agilists as we all discovered we were not alone.

And now here we are ten years later, and things have swung 180 degrees. If you aren’t agile or in the process of becoming agile, you probably feel like you should be. The biggest change from ten years ago is that agile processes now deserve a seat at any table where people are discussing which process to use. If I were a VP of development today in a large conglomerate and I suggested agile to the VPs of other divisions, they could not just dismiss it with a wave of their hands. Agile, in its many forms, is a viable, credible alternative. It may not be the right one for every company or project but no one would be laughed out of the room for suggesting it.

From laughed out of the room to credible alternative in ten years. Where does agile go from here? Hopefully two things are in store for us next. First, I’d like all the brands to go away. No Scrum. No XP. No Kanban or lean. No DSDM. No Crystal. Just agile. We saw this happen two decades ago in objects. We had various modeling approaches and methods from Rumbaugh, Booch, Meyer, Jacobson, and others. Those differences were eventually put aside and we now have merely objects and UML.

The next change I’d like to see (and predict will occur) over the next ten years also occurred in the OO world: We stop talking about agile. We stopped talking about objects a while ago—they won. No one engages in big debates about OO anymore. Sure, there are some applications, such as those with intense performance requirements, where we don’t use objects. And some projects are written in non-OO languages. But even in those cases I suspect the code being written has still been influenced by objects. I’d like agile to reach this same point, where we no longer need to talk about it. Rather than “agile software development” it is just “software development.” Rather than “agile project management” it is just “project management”—Of course it’s agile. No one asks me if the Ruby code I’m writing these days is OO. Of course it is. I hope someday no has to ask if I used agile on the project. Of course I did.

In another ten years I hope I am asked to reflect on what will then be twenty years since the Agile Manifesto. I hope by then it’s a largely forgotten document, like the Magna Carta. Yeah, that dusty old thing. My life is still influenced by the Magna Carta, and I was recently called to jury duty to remind me of this, but I hardly spend my days thinking about it. I hope for a similar fate for the Agile Manifesto. And when I do reflect back on agile software development ten years from now I hope we’ve stopped calling it agile. I hope we’ve stopped calling it anything at all and are just doing it.

About the Author

Mike Cohn is the founder of Mountain Goat Software, a process and project management consultancy that specializes in helping companies adopt and improve their use of Agile processes and techniques. He is the author of User Stories Applied for Agile Software Development, Agile Estimating and Planning, and Succeeding with Agile. Mike is a co-founder of the Agile Alliance. He is also a co-founder and current board member of the Scrum Alliance. He can be reached at mike@mountaingoatsoftware.com

43 Comments:

Lisa Crispin said…

I have always hoped someday we will not give it a label. Having all the different flavors of agile is as silly as all the so-called “schools of testing”. Let’s just develop the best software we can, doing our best work and enjoying it!

mob said…

Great post. I completely agreed with doing away with the branding. And my unified process book recently went to goodwill after years untouched on the shelf (While my agile books were constantly in use).

The only thing I’m not sold on is this (And I know this is a bit OT as its not the point of the post):

“We stopped talking about objects a while ago—they won. No one engages in big debates about OO anymore. Sure, there are some applications, such as those with intense performance requirements, where we don’t use objects. And some projects are written in non-OO languages. But even in those cases I suspect the code being written has still been influenced by objects.”

Functional languages have had a resurgence and I’ve been spending time learning a functional language and the functional paradigm. Its been an eye opening experience to say the least coming from an OO world. I really don’t thing OO “has won” and that its something we no longer debate, especially in the light of FP.

Who knows, maybe the same will happen with Agile. Another approach will arise that could challenge agile or complement it.

m

coreyhaines said…

You can see the rise of ‘lack of labels’ if you spend time at the smaller consulting companies. These are the shops that are building great software for small businesses and startups. When companies need software that will grow and evolve with their changing needs, they have an option with a lot of these boutique shops.
When talking amongst themselves, the term ‘agile’ does come up, but not necessarily the flavors/labels. They like to just call it responsible, quality-driven software development, or, as is becoming increasingly common, ‘software development.’ These shops are also bringing in members of the next generation in formalized apprenticeship programs. I’m meeting more and more of the younger developers who have never developed software without these techniques, just like there are developers who have used objects for all their careers.
Will the world of IT get to this point? Perhaps once the younger generation that is bread in these shops raise their next generation.

Vin D'Amico said…

Great post. I’ll differ with you on the issue of names, Scrum, XP, Kanban, etc. Blending them all together and just calling them agile may not be a good idea. Just as Ruby, Java, Javascript, C#, etc. are unique with a common object-oriented model, so can different approaches to agile development share common underpinnings.

We need to ascertain the core elements of agile development. As long as an approach embraces those core elements, it’s agile. All the bell and whistles around the core are the unique cultural aspects that make an approach different. So…what are those core elements?

Niklas Bjørnerstedt said…

Great post! This reminds me of something I read 20 years ago:

In 1991 the magazine Byte celebrated the 10 anniversary of the seminal 1981 issue that was devoted to Smalltalk. In one of the interviews Peter Deutch and Adele Goldberg were asked what they thought about the future of Smalltalk and object orientation:

“We hope that in 2001, objects will be boring. In comparison, radical ideas of past decades – that system software should be written in higher level languages with strong type systems, and that computers can and should be seamlessly networked – are thoroughly accepted today.”

Marco Tedone said…

Dear Mike,

I too would like to see the different brands (Scrum, XP, Kanban, etc) to disappear and having folks to talk simply about Agile. One problem I see with this is that there are many people out there who use this brands to sell their services. “I an a Kanban expert”, “I use SCRUM”, “I use XP” are phrases which I hear often in my working environment. Truth is that Agile is a state of mind, a way of working which allows one to adapt to changing business requirements quicker and more effectively than with other, more structured, disciplines.

However in your article I didn’t see anything about what you are expecting from the Agile world in the next 10 years. Surely there must be something which can be improved? Something that ought to be changed? I work in an Agile environment and we use different flavours of Agile (blending some XP features with SCRUM and Kanban) but we don’t say “We do XP-SCRUM-Kanban”, we just deliver products.

Because of the very nature of Agile (adaptability and continuous improvement) I think that we need to look out for, contribute to and evangelise practices improvements in the Agile methodology (but please let’s not give this improvements another Marketing label!).

Regards,

Marco

Geir Hedemark said…

“Those differences were eventually put aside and we now have merely objects and UML.”

Even better - I now get people more-or-less straight from school who start working with me, and who I can have a meaningful discussion with about why multiple inheritance causes problems, the joys and frustrations of AOP, and which cases the OOP we use in Scala has issues we need to work around.

We have moved from trying to can knowledge into a book, a method or a process to being able to talk through our problems and finding solutions that work for us.

If we can do that with agile, I would be a very happy man.

I’ll help if I can. :-P

Mike Cohn said…

Thanks everyone for your comments so far. I’ve been traveling home from Norway and so offline since posting this.

@Mob—you raise an interesting point about functional languages. When I typed that about “objects have won” I wondered if the victory was permanent as functional languages were on my mind. However, I typed it anyway because I was thinking about Richard Gabriel and his famous talk that Objects Have Failed, in which he makes the point the early infatuation with objects stopped us from looking for even better ways. The same could be happening with agile.

@Corey—You’re absolutely right that things change when new generations come in. I’ve done some research over the past year about academics and agile and it’s still not being taught much. But, as always, the good university students are both listening to their professors and seeing what we practitioners are really doing. So students are coming out more agile than before. I’m looking forward to the changes once we have VPs of Development who cut their teeth doing test-driven development in pairs.

@Geir—I think your comments support what Corey is saying and what I am looking forward to. It’s going to be nice when we get more and more of these types from schools.
@Vin: I think the best description of the core elements of agile remains the agile manifesto itself.

Mike Cohn said…

Hi Marco—
The ability to sell a process as a brand is in fact one of the reasons they continue to proliferate. It’s also one reason I never started my own brand of agile. I’ve been doing it long enough that I could have. But it just never felt right. We should be looking for commonalities not creating artificial divisions just so that we “own” an idea.
To be honest, I don’t know what the next 10 years have in store for us. I wish I did.

Mike Cohn said…

Hi Niklas—
I love it! I love the idea of saying in 1991 that “We hope that in 2001, objects will be boring.” This is exactly the type of thing I hope for agile. Thanks!

aidy lewis said…

The Unified Process failed because it was a totalising modernist meta-narrative that attempted to offer an exhaustive solution and beyond (Booch used the Unified Process to build an extension on his house). The UML attempted the same thing, and even Fowler’s deconstruction, could not save it. There were even crazy ideas that this modelling language could replace the programmer! XP is successful because it concentrates on the small things that matter on the micro-level. Extreme Programming was the first post-modern software philosophical practice. Agile is mainstream because of its tolerance and plurality. You are totally mistaken.

Rebecca Wirfs-Brock said…

I have another indicator that “agile” is becoming absorbed into this is just the way we do software. While attending Agile Open Northwest Openspace this week I struck up a conversation with a long time agilist and software manager in the Portland area. I asked him what was new, and if he considered sharing his experiences about 10 years doing agile development. His reply was that the way they do effective software these days is so entrenched that it is pretty boring….and that the real challenges are penetrating new markets with their products. They’ve got a sustained pace for development. They know how to solve complex problems when they come up. They have modified their dev process to include some aspects of lean thinking. And what’s the big deal? Nothing. Software isn’t the problem. There is no crisis. They know what they are doing. And they just keep doing it.

That is what it feels like when agile (or objects) or whatever technology or process is working for you.

Wish more people had their non-problems….

Werner Keil said…

@Marco
I guess what you suggest would lead to a form of “100% Certified Agile”, which not just Martin Fowler, but I suspect other founders of the Agile Manifesto are extremely allergic against.

Anyway, there’s already things like “Certified SCRUM Master” (other famous Agile luminaries expressed their own thoughts about that, too btw.) which if your pledge was fully executed, people who paid Thousands of Dollars for could only consider “Sub-Prime” thereafter ;-)

Mike Cohn said…

Hi Rebecca—
Thanks for your comments. It really does make me realize we aren’t hearing the phrase “Software crisis” any more. For those too young to remember it, that term meant that we wouldn’t be able to advance the state of the practice of software development enough to keep pace with improvements coming in hardware and then with business’s expectations of and needs for computing. The term goes back to the famous 1968 NATO conference on software engineering. And it is nice to see how much more complex software has gotten over the last 20 years and yet we’re able to keep writing it.

Mike Cohn said…

Hi Aidy—Thanks for your comments but I don’t see what it is that I’m totally mistaken about.

Mike Cohn said…

Yasunobu Kawaguchi—Thank you for translating this post. That’s great.

Jesper said…

...I have a dream… ;o)
Great post - inspiring and looking-forward as always.
By all means…don’t stop.

Joseph Flahiff said…

Amen, and hallelujah! 

I did a video blog last year called the #1 Impediment to Agile Adoption http://whitewaterprojects.com/2010/12/09/1-impediment-to-agile-adoption/

The answer… “Agile” the word. Agile is no longer a problem, people don’t care.  Let’s all get over it and move on. 

Additionally, I would like to see the software development world broaden the view beyond software development.  I work primarilly in enterprise companies that are not software vendors.  These organizations don’t care at all about our “Agile” language.  We have created a language, a culture, that helped us in differentiating ourselves from the heavyweight methodologies in the early days, but now it is causing impediments to adoption.

Mike Cohn said…

Hi Joseph—
You’re right that it is time to take the lessons from the software world and apply them more broadly in companies. If you haven’t seen it already, check out the book The Leader’s Guide to Radical Management by Stephen Denning, which is about exactly that topic. My thoughts on the book are elsewhere on this blog.

Guy Saville said…

Great article Mike, as I would expect - we’ve relied heavily on your excellent books to learn Scrum.  Agile - using Scrum and Kanban - has been fabulously successful for us in our software development, and it’s no surprise that Agile has such a passionate and rapidly growing core of advocates. My question for the next 10 years is: will Agile practices now become mainstream across all business processes and functions, not just IT and some manufacturing?  Surely Agile holds the same promise of delivering superior business value across the broader business enterprise?

Andy Brandt said…

Exactly my feeling too (http://www.andybrandt.net/675/future-of-agile), though I see agile more as a management than engineering phenomenon. As such I expect to see it included into the basic toolset of any good manager within the next couple of years. In fact already if you are a manager and you don’t know much about agile you probably won’t admit it in a conversation.

Mike Cohn said…

Hi Guy—I’m glad my books have helped. Yes, I do think we are at the start of seeing agile spread wider in enterprises. A great book on this came out last fall: A Leader’s Guide to Radical Management by Steve Denning.

Mike Cohn said…

Hi Andy—
It’s always good to see your name here.

Ah, I see you’re thinking along the same lines as Guy and myself (and many others). Much of agile is a general purpose project management framework and it is going to apply 100% as a management technique across companies.

Andrew Breese said…

While agree that we can stop advocating internally about agile (preeching to the choir), I think the development communities still need to advocate externally, particularly to government and large organisations which still consider waterfall-ish methods to be safer and more reliable. I still encounter resistance to agile as a concept due to the untrue perception that it is risky and will always cost more.

Liza said…

Great post!  I enjoyed reading your reflections.  I, too, hope that the vision of agile becoming the defacto way of working becomes reality in the next 10 years.  It’s how I worked in the hardware world.  We didn’t call it Agile; it was just the way we needed to work.

Mike Cohn said…

Hi Andrew—We’ve still got a lot of preaching to do and a long way to go. But, you’re right: especially to government and large organizations, both of which can be harder to change. Thanks for pointing that out.

Mike Cohn said…

Hi Liza—It will be great when we get there. I’m pretty sure we will.

Gabriel Falcão said…

I work with agile web development from almost 3 years now, and we don’t need need to say things like “Where are the tests ?”, “Where is the continuous deployment?”

Those things are pretty much in our veins, it’s our own blood.
Agree with everything, and happy birthday to the agile manifesto!

Mike Cohn said…

Hi Gabriel—
Great story. it’s fantastic when things like automated testing are taken for granted. Of course we have that. It lets us then find the next thing to improve at. On and on…

Torben Rahbek Koch said…

Hi Mike,

I really wish that things were as good as you say. In Denmark I still see a lot of misunderstandings about agile. Agile is still new and hot. As is objects ;-) Today I got a job offer which explicitly stated that skills should include object oriented programming ;-) I find that kind of funny.

You may remember me asking on the Agile Estimating and Planning in Copenhagen on how to nudge people (developers, that is) into a more “right” way of doing object oriented programming.

I don’t know whether it is the schools in Denmark that fail or where the problem lies, but objects are definitely still something we (or rather, the other developers) actually think about.

I still liked your post a lot, as well as the Agile Estimating and Training seminar!

Thanks,
Torben

Mike Cohn said…

Hi Torben—It’s good to hear from you.

I don’t want to make it sound rosy anywhere in the world. But it has been a long time since I was with a C++ team and one programmer asked another, “Did you use objects or did you just write a bunch of functions?” That was a common question in the early 1990s. Of course not everyone writes OO code and most teams could always get better at it. But to some extent it’s expected. The Java tech lead on a non-agile team doesn’t have to remind a programmer, “And, remember use objects properly!” That’s part of the job. It’s unstated on the team I’m hypothesizing there. But many teams are still at a point where one programmer might remind another, “Remember: We said we’d always write unit tests.” I just want us to progress to the point where a task of “Go code this” implicitly includes “and have automated tests that go with it.”

Torben Rahbek Koch said…

Yes,

I see what you are getting at here. An essential part of the development process - no matter whether it is agile or not - is to be a team. And being on a team means helping and teaching other team members.

Some guy on a Danish blog stated that if you put ten brilliant, dedicated programmers with a good idea into a room they will emerge with something good, no matter what process they used. He hated the way that agile is advertised at being the “ultimate savior”. I know what he means, but I think that he overlooks the fact that most teams are not made up of brilliant, dedicated people, but of simply your average guy making a living. And I believe that agile excels in leading teams like those to success.

Is this view something you would buy into? You must have seen just about any team combination out there in your long career!

Thanks,
Torben

Mike Cohn said…

Hi Torben—
It’s unfortunate that someone perceives agile as being marketed as the “ultimate savior.” There are agile and especially Scrum consultants out there who promise to make any team “hyperproductive” in three sprints at most. That type of hype creates problems. It’s not true and it creates a backlash against the process later. I try to be quite realistic. In my ScrumMaster courses the only promise I make people is that if they truly pursue becoming agile there will be a day they come into the office ready to quit over frustration over how hard it is. It’s definitely not a silver bullet.

As for teams with the best people: Sure. Great people will succeed with just about any process because they’ll probably find a way to work around any troublesome parts of the process and they’ll be so good that the company will let them. Any process works great with great people. This was a very early criticism of agile going back even 10 years: It only works with great people. What’s interesting is in Barry Boehm’s “Software Engineering Economics” book (a great but very non-agile book) Boehm introduces what he calls the Principle of Top Talent which says to “use better and fewer people.” So right there we have a waterfall book saying waterfall works better with fewer but better people. I suspect it’s true of everything.

Derrick Louis said…

I agree with you Mike - Agile is the new buzzword for top execs now.  We all sit around and act as though we now are on the cutting edge - “Hmmm are you doing Agile?”, “Scrum is the only way to go”, “Kanban is the NEW scrum” are all the comments i have heard at conferences with Execs.  The real question is not “Is agile right for my development environment? ” - I think you are correct in saying that most companies think “If you aren’t agile or in the process of becoming agile, you probably feel like you should be”  - To me the real question - “How do i implement this tool among my other tools appropriately to gain the highest amount of success?”

Mike Cohn said…

Hi Derrick—You should take a look a look at the Succeeding with Agile book as it was written to address exactly that topic.

Torben Rahbek Koch said…

Hi Mike,

Thanks for your valuable input. You definitely belong to the pragmatics - and that is good. I think I need to spend more time in your company - got any positions available? ;-)

Thanks,
Torben

Manoel Pimentel said…

Hello Mike, great text.

I share similar thoughts to yours. I think we can create a future where be feasible cease to exist the “agile way” and “non-agile way” of developing software.

However, we have a long road ahead.

On February 11, I published an essay called “Manifesto for Meta-Agile” (http://visaoagil.wordpress.com/2011/02/11/manifesto-for-meta-agile ). This text doesn’t address exactly the same as yours, but we can create some correlations between these two materials.

Thank you and congratulations.

Mike Cohn said…

Thanks, Manoel. I do suspect we have a long road ahead.

PMI ACP said…

Is anyone on here going to take the PMI ACP Agile Exam?

Dinesh Sharma said…

Mike,
I see it’s happening already. Team might start with Scrum and later adopt some XP practices (TDD, Pair Programming, CI etc.) and on their way start limiting their WIP (Value stream already mapped with Product Backlog, Sprint Backlog, In Progress to Done to live) and moved to Continuous Delivery following Lean principles. I think teams only uses Scrum, XP, Kanban as a starting point to give them a focus but later it frameworks and methodology gets blurred and everybody keep saying we are Agile.

Thanks
Dinesh

Mike Cohn said…

Hi Dinesh-
You’re right and I’m anxious for the day all these brands go away and it’s just once again “software development”, but with all these great practices as part of how everyone works.

Leave a Comment: