“The Software Craftsman: Professionalism, Pragmatism, Pride” by Sandro Mancuso explains the Software Craftsmanship movement and how the motivations behind it’s formation. In essence, the values that developers are encouraged to adopt are professionalism, positive attitude, focus on bringing value through software and continuos improvement. Regarding technical practices, the advice is to follow those of extreme programming, with an emphasis on test-driven development and pair programming. There is a great deal of advice for individual programmers to be proactive about their careers and take control of their skills by continuously working on them.

The second part of the book is about transforming existing organizations. It gives advice on recruitment, interviewing, keeping high morale, driving technical change and being pragmatic about the goals and limitations of transformation.

Overall, most of the advice of the book resonated with me and there is plenty that one can start applying on an individual basis, without requiring your whole team to be on board.

Software Craftsmanship, the author explains, is about a metaphor that sees software development as a craft and compare it to medieval blacksmithing, including apprentices and masters. To me, this metaphor falls completely flat: Medieval guilds were largely about protectionism. Guilds where formed by royal decree, membership to guilds was tightly controlled and the practices they followed were restricted to approved processes. The result was lack of innovation and stiffing of competition.

Software development, in my view is not a craft. It’s an Engineering discipline. It is about applying scientific principles for practical purposes. It is about finding solutions given a set of constraints. It is about bringing value to our users and stakeholders.

The Software Craftsmanship movement proclaims to be open to new comers and values skills, instead of certifications. However, the imagery that they evoke with their metaphor contradicts that. As every developer knows: Semantics matter.

I do not see a need for a metaphor. I am all for excellence and professionalism in Software Engineering. I just don’t think that calling it a craft gets us any closer to that.