The notion of “software craftsmanship” had its roots in the Agile Movement. “Uncle Bob” Martin, one of the organizers of the gathering that led to the Agile Manifesto being written 10 years ago, said the goal was to help programmers and development shops create high-quality software.
But he now says that message has weakened over the last few years. “The Scrum focus on the project management side has overshadowed some of the original enthusiasm we had for high-quality code, and highly disciplined coders,” he said in a recent interview.
Martin ruminated on the possibility that this shift away from a 50/50 emphasis on management and the technical side is due to the nature of the work. Management people are always looking for and embracing new ideas around productivity and performance, while programmers tend to reject changes to the way they work.
“People think of agile as a management practice more than a coding practice,” he continued. “There was supposed to be balance.”
This had led to a growing movement focused on software craftsmanship, which began with a few blogs and now has two conferences supporting it. There’s even a Manifesto of Software Craftsmanship, patterned after the Agile Manifesto, “but more of an adjunct to it than a departure,” Martin said. “We don’t want to decouple from the agile community. We want to fold it back in.”
Among its principles are “Not only working software, but also well-crafted software,” and “Not only responding to change, but also steadily adding value.” Further, it states, “Not only individuals and interactions, but also a community of professionals,” and “Not only customer collaboration, but also productive partnerships.”
The manifesto goes on to state that in pursuit of the items at the beginning of each stanza, the group of authors finds the latter items to be indispensable.
When Martin arrived at the Snowbird, Utah, agile meeting 10 years ago, he was well known as a C++ consultant and trainer, whose clients were asking for a practice he could recommend. Martin said he found Extreme Programming, “where Kent Beck had worked out something really good,” and his interest at the gathering was the technical discipline. “Test-driven developing, pair programming, refactoring…these are tough disciplines to internalize but very important.”