Software Craftsmanship Manifesto: A Call to Arms
Pete McBreen wrote “Software Craftsmanship: The New Imperative” in 2001. Last year Uncle Bob Martin wrote “Clean Code: A Handbook of Agile Software Craftsmanship” and during his Agile 2008 Keynote suggested that Agile Manifesto should be amended with “Software Craftsmanship over Crap".
In December of 2008, a summit was held in Chicago that resulted in the drafting of the Software Craftsmanship Manifesto:
As aspiring Software Craftsmen we are raising the bar of professional software development by practicing it and helping others learn the craft. Through this work we have come to value:
- Not only working software, but also well-crafted software
- Not only responding to change, but also steadily adding value
- Not only individuals and interactions, but also a community of professionals
- Not only customer collaboration,but also productive partnerships
That is, in pursuit of the items on the left we have found the items on the right to be indispensable.
© 2009, the undersigned. this statement may be freely copied in any form, but only in its entirety through this notice.
For Corey Haines the key reason for writing the manifesto is to shine a light in a dark corner:
For me, there is one primary goal. This goal is to provide something that junior/entry-level developers can see and recognize. … I am amazed by the number of people who either a) don't believe that you can be successful doing the techniques that I espouse and b) don't realize that there are actually companies out there focusing on the craftsmanship principles. …
By becoming more vocal, publishing a manifesto, beginning further work on establishing principles, as well as concrete schools of thought, we are creating a light that new devs can see.
Micah Martin became involved in writing the manifesto because he wanted to bring together a number of divergent views on what Software Craftsmanship is.
The members of the manifesto group answered two key questions: “How will it help solve the problems of crap code?” and “What will motivate "The developer just churning out code" to become a craftsman?” - the distinction is between the developer who is just getting it done vs the one getting it done right.
Paul Pagel answers the How question saying: “By raising the bar, we hope to set the standards for development higher. Also, along with the principles, it will give something of a roadmap for developers who want to follow the principles of software craftsmanship.”
Micah Martin answers with: “As of today, there are over 1500 signatures on the Manifesto. 1500 people are fighting against "crap code". Those who have been fighting "crap code" now know that they are not alone in their fight. … The Manifesto is a gentle push away from "crap code" and toward craftsmanship.”
As an Engineering Manager, I like that the manifesto puts a name on the broader "Craftsmanship Values" - values (and practices) that we actively encourage and foster in our company. It also serves as a way to clarify our expectations for potential apprentices or more experienced developers interested in joining the team. It helps with the mutual selection process aka hiring. The Craftsmanship Manifesto creates a dialog which we were previously struggling to have.
Corey Haines suggests that the Manifesto isn’t aimed at "the developer churning out code":
This is a big one for me with a simple answer: it won't. And, frankly, it shouldn't.
For this type of person, I believe that external motivation isn't going to work. They are already established in their methods, they aren't looking to try new things out that are going to be difficult and, while they are learning, have a negative effect on their job…
For me, there are two people that I'm interested in helping in their journey: new developers who are interested in starting a true life-long career developing software as best they can; and, people who already are experienced and established in their ways, but, given an introduction, would jump at the chance to learn how to write better software. That's it.
Mike Bria wonders if in some cases we just have to awaken something that has been buried for a number of years. A desire or joy that used to exist but has been drummed out over the years. He suggests that we need to find ways of rekindling that desire.
Heinrich Breedt is skeptical and thinks that the developer churning out code just wants to get stuff done the same as he did yesterday. New things like writing test cases, refactoring, etc. just appear to put an extra burden on Joe.
Dave Hoover (private communication) pointed out that the manifesto is a work in progress. So far the values have been defined but, mirroring the Agile Manifesto, a more rigorous set of supporting principles are being added now.
Finally, Dave Rooney considers that by seeking to become a profession we are gold plating our craft. Perhaps we should mimicking the trades. Dave draws on the experience of his father-in-law, an Aviation Maintenance Engineer (AME):
The point is that perhaps we aren't all that far removed from a trade like that of an AME. The commitment to quality that they have is not unlike Bob Martin's Clean Code Wristband concept. Perhaps viewing ourselves as AME's - aircraft mechanics - could move us past software development as a craft an towards a trade.
Previously on InfoQ: Craftsmanship - the Fifth Agile Manifesto Value?, Craftsmanship and Ethics (presentation by Uncle Bob Martin), Fostering Software Craftsmanship in a Corporate Setting (presentation by Scott Dillman).
Where are you, o' ye faithful of our community?
Speak up, please!
Re: Speak up!
If something is worth doing, It's worth doing badly.
LinkedIn Software Craftsmanship group
In Academia that's Plagiarism - or just poor writing - Fail
"Not only individuals and interactions,
but also a community of professionals"
Without a reference to the Agile Manifesto this work doesn't stand upon its own legs. It is dependent upon the Agile Manifesto to give context to "not only individuals and interaction". This is either plagiarism or sloppy writing. Where was the craftsman in literature (editor) when this was published?