Software craftsmanship is an approach to software development that emphasizes the coding skills of the software developers. It is a response by software developers to the perceived ills of the mainstream software industry, including the prioritization of financial concerns over developer accountability.
Historically, programmers have been encouraged to see themselves as practitioners of the well-defined statistical analysis and mathematical rigor of a scientific approach with computational theory. This has changed to an engineering approach with connotations of precision, predictability, measurement, risk mitigation, and professionalism. Practice of engineering led to calls for licensing, certification and codified bodies of knowledge as mechanisms for spreading engineering knowledge and maturing the field.
The Agile Manifesto, with its emphasis on "individuals and interactions over processes and tools" questioned some of these assumptions. The Software Craftsmanship Manifesto extends and challenges further the assumptions of the Agile Manifesto, drawing a metaphor between modern software development and the apprenticeship model of medieval Europe.
The movement traces its roots to the ideas expressed in written works. The Pragmatic Programmer by Andy Hunt and Dave Thomas and Software Craftsmanship by Pete McBreen explicitly position software development as heir to the guild traditions of medieval Europe. The philosopher Richard Sennett wrote about software as a modern craft in his book The Craftsman. Freeman Dyson, in his essay "Science as a Craft Industry", expands software crafts to include mastery of using software as a driver for economic benefit:
- "In spite of the rise of Microsoft and other giant producers, software remains in large part a craft industry. Because of the enormous variety of specialized applications, there will always be room for individuals to write software based on their unique knowledge. There will always be niche markets to keep small software companies alive. The craft of writing software will not become obsolete. And the craft of using software creatively is flourishing even more than the craft of writing it."
Following initial discussion, conferences were held in both London and Chicago, after which, a manifesto was drafted and put online to gather signatories. This was followed by the development of practices to further develop the movement including the exchange of talent in "Craftsman Swaps" and the assessment of skills in "Craftsmanship Spikes"
From the Software Craftsmanship website
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
The origins of software craftsmanship came from the Agile software development movement which aimed to reform software project management in the 1990s.
In 1992, Jack W. Reeves' essay "What Is Software Design?" suggested that software development is both a craft and an engineering discipline. Seven years later, in 1999, The Pragmatic Programmer was published. Its sub-title, "From Journeyman to Master", suggested that programmers go through stages in their professional development akin to the medieval guild traditions of Europe.
In 2001, Pete McBreen's book Software Craftsmanship was published. It suggested that software developers need not see themselves as part of the engineering tradition and that a different metaphor would be more suitable.
In his August keynote at Agile 2008, Robert C. Martin proposed a fifth value for the Agile Manifesto, namely "Craftsmanship over Crap". He later changed his proposal to "Craftsmanship over Execution".
In December 2008, a number of aspiring software craftsmen met in Libertyville, Illinois, with the intent of establishing a set of principles for software craftsmanship. Three months later, a summary of the general conclusions was decided upon. It was presented publicly, for both viewing and signing, in the form of a Manifesto for Software Craftsmanship.
In April 2009, two of the companies in the software craftsmanship movement, 8th Light and Obtiva, experimented with a "Craftsman Swap." The Chicago Tribune covered this event on 15 June 2009. In January 2010, a second Craftsman Swap was held between Obtiva and Relevance.
The 'London Software Craftsmanship Community' (LSCC) was founded in 2010 and is today the largest and most active Software Craftsmanship community in the world, with more than 5000 craftspeople. In 2014, Sandro Mancuso, one of its co-founders, published a book The Software Craftsman: Professionalism, Pragmatism, Pride. It brought the software craftsmanship movement additional visibility, reinforcing the efforts to achieve higher technical excellence and customer satisfaction.
- "Software Craftsmanship Conference". Parlez UML. Archived from the original on 2009-02-06.
- "Software Craftsmanship North America". Software Craftsmanship.
- "Software Craftsmanship Manifesto". Software Craftsmanship.
- Reeves, Jack W (2005-02-23), What Is Software Design?, Developer Dot Star, retrieved 2015-06-24
- "Craftsmanship – the Fifth Agile Manifesto Value?", Infoq, Aug 2008, retrieved 2015-06-24
- "Manifesto for Software Craftsmanship". Manifesto.softwarecraftsmanship.org. Retrieved 2019-03-26.
- "Employee swap gives two firms new perspectives", Ventura county star, 13 Jul 2009, archived from the original on 2012-09-17
- Wong, Wailin (15 June 2009). "Open to the competition". Chicago Tribune.
- "Relevance Craftsman Swap Day 1 | 8th Light". 8thlight.com. Retrieved 2018-02-02.
- Hoover, Dave; Oshineye, Adewale (2009-10-09). Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman. Foreword by Ward Cunningham. O'Reilly. ISBN 978-0-596-51838-7.
- Martin, Robert C. (2008). Clean Code: A Handbook of Agile Software Craftsmanship. Addison Wesley. ISBN 978-0-13-235088-4.
- McBreen, Pete (2001). Software Craftsmanship: The New Imperative. Addison Wesley. ISBN 0-201-73386-2.
- Sennett, Richard (2008). The Craftsman. Yale University Press. ISBN 978-0-300-11909-1.
- Pyritz, Bill (2003). "Craftsmanship versus engineering: Computer programming - An art or a science?". Bell Labs Technical Journal. 8 (3): 101–104. doi:10.1002/bltj.10079. Archived from the original on 2013-01-05.
- Mancuso, Sandro (2014). The Software Craftsman: Professionalism, Pragmatism, Pride. Prentice Hall. ISBN 978-0-13-405250-2.
- Kokaina, Sallah (2019). Software Craftsmanship: L'art du code et de l'agilité technique en entreprise (in French). Editions ENI. ISBN 978-2-409-02154-1.