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”.