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.”
Martin said that big companies that adopt Scrum have no inkling of the technical practices of agile development, calling that “a big disappointment. The Scrum line is ‘Let the team decide,’ which is fine, so long as technical practices come to the fore and are discussed.” Too often, he said, they are not even in the discussion when management decides it wants to adopt agile practices.
He cited the work of Jason Gorman, who runs a software craftsmanship conference in the U.K., and Corey Haines, who holds code retreats around the world where programmers can get together to practice and enhance their craft.
And “Uncle Bob” himself will be at the Agile Alliance’s Agile 2011 conference in Salt Lake City this summer, offering up technical sessions as a way to keep technical issues a part of the agile development practice.
David Rubinstein is editor-in-chief of SD Times.