The fifth element of the Agile Manifesto

Robert C. Martin delivered a very powerful speech yesterday at the Agile 2008 conference, titled Quintessence. Criticising software developers for not acting as professionals, he suggested adding a fifth principle to the Agile manifesto.

Pointing out how the Agile conference was created by merging two earlier conferences a few years ago, one primarily related to XP and one primarily related to Scrum, Martin suggested that a merged conference predicted the fact that those two methods have by now effectively merged into a single set of agile development practices that people actually use. He then pointed out how this still does not solve some core problems. When he asked the audience who has at least once been significantly impeded by bad code since going agile, most people raised their hands.

Martin criticised both Scrum and XP for becoming “too meta”. Scrum was criticised for unrealistically expecting everything to be ideal and for promoting certifications as a way to confirm someone’s professionalism. On the other hand, XP was criticised for being too strict. As an interesting demonstration, he asked everyone in the audience to raise their hands and then started listing original XP practices, asking people that do not use a particular practice to put their hands down. My estimate is that there were about one and a half thousand attendees, but only a few hands remained raised after the fifth or sixth practice being listed. When he asked who in the audience has unit test coverage larger than 90%, most people simply laughed.

Commenting on the current state of affairs in the software industry, Martin said that “The fastest way to get done with dinner is not to do the dishes. Making dinner starts taking some serious time and after a while you start to outsource dinner… “. He then pointed out that we should focus more on delivering stable and high-quality code rather than going fast, and not give in under pressure of schedules and deadlines to compromise quality. Calling for programmers to be more professional, he asked “If you believe yourselves to be professional, how can you release code that you are not sure it works?”.

Martin then talked about Ignaz Semmelweis, a hospital administrator in 19th century Vienna who discovered that the mortality rate in a maternity clinic could be drastically cut by making doctors wash their hands when moving between the autopsy ward and the maternity ward. Semmelweis met with stiff resistance, including the claim that doctors had no time to wash their hands, according to the talk. Wikipedia entry on Semmelweis states that he is now considered the “savior of mothers”. (Interestingly, Wikipedia also has some grimmer facts about his fate: “His contemporaries, including his wife, believed he was losing his mind and he was in 1865 committed to an asylum (mental institution). Semmelweis died there only 14 days later, possibly after being severely beaten by guards.”)

Drawing parallels between that story and software development, Martin asked programmers to “wash their hands” and write clean code, not giving in to time pressures or claiming that they have no time for that or that they will not be allowed to do that. Asking for people to do a good job and be better professionals, he suggested a change to the agile manifesto, adding the sentence “we value craftsmanship over crap”.

see other news from the Agile 2008 conference

I'm Gojko Adzic, author of Impact Mapping and Specification by Example. To learn about discounts on my books, conferences and workshops, sign up for Impact or follow me on Twitter. Join me at these conferences and workshops:

Product Owner Survival Camp

Specification by Example Workshop

Conference talks and workshops

9 thoughts on “The fifth element of the Agile Manifesto

  1. First of all:
    Since I am not able to attend to the conference, I found your articles very valueable.

    On topic:
    Personally I made a short session of root-cause analysis on the problem Robert addressed. My conclusion is, that the more people start getting adicted by the agile methods and trying them out, they even – of course – abuse them. You can’t expect the people coming from sloppy software development to learn the principles of agile methods and not falling back to non-working ways of producing software. Just as Mr. Cockburn stated in his Cooperative Game view of software development:

    1. Deliver working, tested software.
    2. Prepare for the next round.

    When failing at TDD and Unit-Testing, you’re not prepared for the next round.

    I’ll reference this entry shortly in an entry on my blog. Thanks for the value :)

    Regards
    Markus Gärtner

  2. Pingback: Blog Xebia France - Revue de Presse Xebia

  3. Pingback: Arjan`s World » LINKBLOG for August 11, 2008

  4. Pingback: light heat code » Blog Archive » Hippocrates and Hypocrites

  5. Though the raise of hands had a dramatic effect that held the audience , I wonder if one can question the success of XP just because its too strict and hence difficult to implement. If implemented diligently TDD and other XP practices are known to be worth much more than the difficulties faced while implementing them. While I was a part of the majority in the audience who laughed ; I still believe that TDD would be the closest software development could ever get to the proven “Stop the line” principle at Toyota.

  6. Not sure your article captures the spirit of the presentation – he was NOT simply talking about writing clean code.

    The main point Bob was raising was to do Test Driven Development.

    His humorous comparison of Scrum and Xtreme Programming was not highly critical of either, but mostly in fun. He was not saying Scrum and XP aren’t effective.

    His main point was whether you are doing scrum or XP or something else, if you aren’t doing Test Driven Development you aren’t behaving professionally as a developer, and it is on the order of a doctor saying he didn’t have time to wash his hands.

    Powerful stuff.

  7. I wasn’t at his talk, so I can’t comment on what he did or didn’t say. I can comment on the description of the talk, above.

    First, you write, “the Agile conference was created by merging two earlier conferences a few years ago, one primarily related to XP and one primarily related to Scrum”. I don’t know if he really said that or not — I truly hope he didn’t.

    I am the person who organized the “other” conference, and had a bitter fight with the XP Universe guys, because we wanted a conference that was “methodology neutral.” It was not allowed to have XP in the name, or Scrum in the name, or Crystal in the name, or DSDM in the name. It was to cater to all methodologies and all people in all methodologies. It was deliberately attempting to get away from named methodologies as attractors.

    Bob Martin knows this, because when we talked about merging the conferences, the only sticking point in the discussions was that Bob Martin insisted that the word “XP” be included in the title, and that violated the basic premises of the “Agile Development Conference” and our wishes for any merged conference. Because they wanted to change the name of the conference for the merged conference, they couldn’t call it “Agile Development Conference”, so it became this annual “Agile 20xx” name.

    Anyway, I don’t know if he really said what you cite him as saying, or not, or if he said it for audience effect in his talk. Either way, it is historically incorrect.

    For the last part, the 5th value, the agile manifesto already contains this: “Continuous attention to technical excellence and good design enhances agility.”

    In other words, “don’t produce crap” is already in there. An additional value is not needed.

    On the other hand, I did hear a group produce an interesting proposal for a fifth value, which I rather like: “We value the agile principles over the agile practices.”

    Alistair

  8. Pingback: Well-crafted and craftly tested software « shino.de

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>