Software Craftsmanship Manifesto? Duh!

Software Craftsmanship Manifesto? Duh!

Micah Martin

December 01, 2011

"The Manifest for Software Craftsmanship is obvious!" "How could you not agree with it?" "Duh!"

These are common reactions to the Manifesto. As an example, checkout this Ruby Rogues podcast on Software Craftsmanship, which by the way is a great listen; quite a thoughtful exploration on the topic.

The thing about this type of reaction to the manifesto is that on the surface it seems that people are dismissing it. Maybe people think that the manifesto has no impact. Now, as a contributor to the manifesto, this makes me think, hard. Was the effort to create the manifesto well spent? Does the manifesto do any good to the community?

Allow me to drill into the manifesto content:

Not only working software, but also well-crafted software: "Duh! Why wouldn't you write well-crafted code?" Yeah, why? But ask yourself: How much of the code you look at every day reaches the bar of "well-crafted" code? Not much, eh? Certainly, the majority of code I see is sloppy, or careless, or worst of all: clever. Full disclosure, a lot of the code I write is crap too. We know we're supposed to write well-crafted code. The real question is: "Why don't I write well-crafted code?"

Not only responding to change, but also steadily adding value: "Duh! Features are value, and I write features alllll day." Ok, but all too often features are wedged into a system without much thought to the overall design and cleanliness of the software. Bad code is REALLY expensive to a company. Building a new feature at the expense of good code ultimately diminishing the value of the software. So we ought to regularly ask ourselves: "Is the change I'm making adding value?"

Not only individuals and interactions, but also a community of professionals: "Duh! My team is a community of professionals." Yeah, that's true for most developers. But how diverse is your team? Would you be able to learn more from say, a local user group? How about an international conference? Don't forget that a community is a two way street. Have you given a talk recently? Have you contributed to an open source project? We need to ask ourselves: "Can I be more involved in the software community"?

Not only customer collaboration, but also productive partnerships: "Duh! I produce the code and my employer produces the cash. Productive partnership baby!" *sigh* This is getting old so I'll make it brief. Our customer's (employer's) problems are our problems. Our job is not to write code. Our job is to solve clients' problems. The question: "Is there more I can do to help my client?"

Our goal in creating the manifesto was to "raise the bar of professional software development". Historically the software community has fallen very short of the values in the manifesto. So I've come to realize; When people have this "Duh!" reaction to the manifesto, when they think it's obvious, it means we're making progress. That bar has been raised!

Furthermore, there's no limit to how high the bar can go. My interpretation of the manifesto is all about discipline. Each of the values is a discipline that, as professional software developers, we much strive to improve. Perfection is the ultimate, unattainable goal. As craftsmen we are on a journey toward perfection. How far will you get?