Software craftsmanship
Software craftsmanship is an approach to software development that emphasizes the hard skills of computer programming and technical expertise. It advocates for the idea that software developers should not only focus on delivering working software but also strive to produce software that is of high quality, composed of well-crafted artifacts.
Pete McBreen’s 2001 book, Software Craftsmanship: The New Imperative, attempted to summarize many of the ideas related to the concept of software development as being primarily a craft rather than an engineering discipline. The central thesis is that high quality software can’t simply be engineered or manufactured. Rather, it must be crafted by skilled professionals who take pride in their work and continuously improve their skills, for example through deliberate practice such as code katas.
The craft metaphor
The movement borrows the language of the medieval guild: apprentice, journeyman, and master. Progress through these stages is a matter of accumulated skill and judgement rather than credentials, and a master is expected to pass the craft on to the next generation. Andy Hunt and Dave Thomas’s 1999 book The Pragmatic Programmer: From Journeyman to Master popularized this framing, and the subtitle of Robert C. Martin’s Clean Code — "A Handbook of Agile Software Craftsmanship" — placed the same banner over a collection of technical practices.
The metaphor is a deliberate counter to the engineering metaphor that had dominated thinking about software since the 1970s. Where software engineering emphasizes process, measurement, and repeatable method — codified in references such as SWEBOK, which catalogues the discipline as a body of knowledge – craftsmanship emphasizes the skill of the individual and the slow accumulation of judgement that no process can substitute for. McBreen’s argument is not that engineering is wrong but that, for most software, it is the wrong primary metaphor. The quality of the code is set by the craft of the people writing it and the conditions under which they work.
From a keynote to a manifesto
At the Agile 2008 conference in Toronto, Robert C. Martin argued that the term "agile" was being co-opted by project managers and certification schemes — the dysfunction Martin Fowler later called *flaccid agile* — and proposed adding craftsmanship as a fifth value to the Agile Manifesto, worded initially as "Craftsmanship over Crap" and later as "Craftsmanship over Execution". The manifesto was not amended, but the proposal struck a nerve. In December 2008 a group met in Libertyville, Illinois, to work out what craftsmanship would mean as a movement of its own, and three months later, in March 2009, they published the Manifesto for Software Craftsmanship. This builds on the Agile Manifesto, extending the core agile values with a greater focus on professionalism and mastery of software development skills.
Sandro Mancuso’s 2014 book, The Software Craftsman: Professionalism, Pragmatism, Pride, reinforced the movement’s efforts to achieve higher technical excellence. Mancuso later co-founded Codurance, a consultancy built on craftsmanship principles, and the London Software Craftsmanship Community he helped found became one of the largest local chapters of the movement. Dave Hoover and Adewale Oshineye’s Apprenticeship Patterns (2009) translated the apprentice-to-master progression into a catalog of concrete habits for developers early in their careers.
Practices
The movement is less a methodology than a disposition toward a shared set of practices. The practices themselves are not new, most predating the movement, but craftsmanship frames them as the daily discipline of a professional rather than optional techniques.
- Test-driven development and automated testing, treating tests as the first expression of intent.
- Continuous refactoring, keeping the codebase habitable rather than letting technical debt compound.
- Clean code and the boy scout rule, making each commit leave the code a little better.
- Pair programming and mob programming as ways to spread skill and review continuously.
- Code katas and other forms of deliberate practice outside the pressure of delivery.
Criticisms
Software craftsmanship has attracted criticism on several fronts.
The guild metaphor romanticizes a historical model that was exclusionary in practice, and the gendered word "craftsman" itself has been a recurring point of friction, with some in the community preferring "craft" or "crafter". More substantively, critics argue that the movement’s focus on individual skill deflects from the organizational and economic conditions that mostly determine software outcomes. A developer working under feature factory incentives, with no time set aside for refactoring, cannot craft their way out of a system that punishes craft. The emphasis on mastery can also shade into the 10x programmer hero narrative the movement elsewhere resists, and craftsmanship has at times functioned as a consulting brand as much as a philosophy.
Craft in the age of AI assistants
The arrival of AI coding assistants and generative tools has sharpened the question craftsmanship was always asking: when the mechanical work of producing code is automated, what is left that matters? The movement’s answer is the same as before — judgement about structure, naming, trade-offs, and the long-term habitability of the codebase. The risk, as vibe coding shows in the extreme, is that code ships without being read, and the discipline of crafting and maintaining it is exactly what the tools cannot provide on their own.
See also
- Agile software development
- 10x programmer
- Clean code
- Technical debt
- Boy scout rule
- Pair programming
- Mob programming
- Code kata
- Egoless programming
- Software quality
- Feature factory
- Vibe coding
References
- Pete McBreen (2001). Software Craftsmanship: The New Imperative. Addison-Wesley.
- Andy Hunt and Dave Thomas (1999). The Pragmatic Programmer: From Journeyman to Master. Addison-Wesley.
- Robert C. Martin (2008). Clean Code: A Handbook of Agile Software Craftsmanship. Prentice Hall.
- Dave Hoover and Adewale Oshineye (2009). Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman. O’Reilly.
- Sandro Mancuso (2014). The Software Craftsman: Professionalism, Pragmatism, Pride. Prentice Hall.