Taped precariously to a door frame at a small tech company’s office, the title on a yellowed piece of paper caught my eye. “Manifesto for Software Craftsmanship,” its title read. I had just left software development to train in leatherwork and upholstery. I wondered… could software also be a craft?
A quick Google search brought me to the Manifesto’s website. It also looked like an aged piece of paper, which one could “sign” digitally. The Manifesto itself is short, just four bullet points:
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
After 10 minutes of scrolling, I hadn’t even gotten to the end of the signatures list.
I understood why so many people had signed it. The concept is appealing. One of the reasons I had been unhappy in software development is that I worked under the pressure of deadlines and requirements created by non-developers. The resulting software felt like it was duct-taped together. And when the tape frayed, it was me at 1 am picking up the pieces. It’s no wonder I longed to do handicrafts, a hobby in which quality is king.
Software craftsmanship, I soon learned, means caring not just what software does, but how it’s built. It is a style of creating code in which the software developer works in a community, and as a partner. It was a promise of maybe creating a type of software development better than the jobs I was fleeing. But the Manifesto was almost a decade old now. Did they succeed?
The origins of software craftsmanship
The authors of the Software Craftsmanship Manifesto came from the agile movement, which aimed to reform software project management in the 90s. Agile has its own manifesto:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
By the late 2000s, software developers worried agile wasn’t focused enough on quality. In 2008, Bob Martin, one of the authors of the Agile Manifesto, proposed that “Craftsmanship over Crap” be added as a 5th value.
But it never was. And these developers found their talks on the subject rejected by the main agile conference. “Agile was too into process and not into the craft of programming itself,” says Paul Pagel, then a software developer training under Martin.
They decided to have a summit in Libertyville, Illinois to develop their own manifesto. After the summit, the discussion continued on a mailing list. By 2009 the Manifesto was online. And that year its authors held the first Software Craftsmanship North American Conference—at the same time and right across the street from the agile conference.
Back then, software blogging was a big deal, and bloggers eagerly debated if software could be a craft.
Whether developers have heard of craftsmanship or not (or whether or not they believe software can be a craft), they’ve heard of the concepts the movement popularized. One major example is test-driven development (TDD), in which software development starts with writing tests. Each test automatically determines whether a software meets some requirement. In the beginning, the software passes none of the test cases. But as development moves forward, gradually it should pass all of them. The method provides a way to ensure that when you add a new feature, it doesn’t break all the previous features.
Another widespread craftsmanship concept is pair programming, in which programmers work together in pairs at a single workstation. One coder “drives,” while the other reviews the code and helps catch mistakes and point out issues.
Finally there is “refactoring,” the process of refining existing code. The goal is to edit the code so it’s easier to understand and less prone to bugs.
As the craftsmanship movement gained steam, a few consultancies specializing in the concept cropped up, such as Optiva and 8th Light, both in Chicago. And several books on the subject became popular, including Bob Martin’s Clean Code.
“I like to think that the movement is more than just a manifesto,” says Ade Oshineye, who also co-authored a book on the topic. “It’s about the books, open source projects, and communities that came from it.”
For all the influence of the idea, the buzzphrase “software craftmanship” has not aged well. At least part of the reason for this is that it defaults to a craftsman rather than a craftsperson.
Using a gender-inclusive term was an idea that was brought up in the (almost entirely male) beginning, but dismissed, according to Cory Foy, who participated the formation of the Manifesto. For software developers like Sarah Mei, that’s a non-starter. “If I’m going to invest in learning about something, use of non-exclusionary language is a prerequisite,” she tweeted after attending a Software Craftsmanship conference.
Mei’s tweets have caused some of the manifesto’s adherents to reconsider its name. Bob Martin has become a vocal defender of keeping the old name, but his old associates at 8th Light now refers to their software developers as “crafters” rather than “craftsman.”
Many groups and conferences centered around Craftsmanship have also made the change. The SoCraTes conference changed from “International Software Craftsmanship and Testing Conference in Germany” to “International Conference for Software Craft and Testing” this year. CodeCraft in Glasgow changed its name in November, stating ” We were happy to do it if even one person feels more comfortable.” And Cambridge Software Craftsmanship changed its name to Cambridge Software Crafters. “The name issue has never caused me personally a problem and there are some obvious reasons why,” says Alastair Smith, one of the organization’s leaders.
Smith says he’s seen a shift in new members since changing the name. “New members joining the community are a much more diverse crowd,” he says, “and the meetups are more diverse as well. It’s such a simple change and had such a big knock on effect.” Smith says community has become much more important than the name or even the technical concepts behind it.
Members of his community talked to me more about the friendships they formed than about code. In a world where not all jobs allow you to do high quality work, the idea of software as a craft provides an oasis. And also a place for mentorship and professional development—other things developers told me they fail to get at work.
Paul Pagel, now CEO of 8th Light, says he sees apprenticeship as the future of the movement. It’s a crucial issue as many junior developers find companies unwilling to hire them. They want fully trained developers, but who will train them? Pagel’s company 8th Light created The Weirich Institute of Software to help bring up the skills of junior developers.
Crap or craft?
These efforts at mentorship all sound great, but they are also far smaller than the goals of the original manifesto, which hoped to create this culture across the industry.
Our software might break a little less, but the industry has if anything moved further away from treating software developers as craftspeople. I once heard a CEO say that software development is just a “commodity” now. Meaning he didn’t see the value of cultivating software developers or culture in the company. Why bother when he could just replace the team with a rotating cast of contractors? And he did.
It’s still not easy to convince businesspeople or customers that poor quality software will cost them in the long term. All they see is the short-term savings.
I also worry that when companies do focus on “craft,” their focus is in the wrong place. Job candidates are forced to prove they don’t write crap by completing hours of tests, homework, and pair programming challenges. It’s a shame, because all of this interview testing shows companies have an inkling that craft matters. It just seems to be a skill that want developers to already have, rather than one they cultivate.
During the break I took from professional software development—which ultimately lasted about six months—I received many messages from other software developers who had quit or wanted to. They said that, like me, they felt forced to produce “crap” rather than “craft.”
According to a Kapor Center study on tech quitters like me, “workplace culture drives turnover, significantly affecting the retention of underrepresented groups, and costing the industry more than $16 billion each year.” Crap—rather than craft—software, I believe, contributes to that culture.