Software Craftsmanship

No this isn’t about industrializing software development vs. software development as a hand-crafted process. I’m not going to get into that argument, as the very act of developing software is a form of automating something somewhere.

No matter how you look at it, software development is a craft. Like a carpenter, a good software developer carves a beautiful and functional program out of code using defined patterns and technical prowess. They use their years of experience to analyze and decompose problems into maintainable libraries, services, and applications – always looking for new tools to add to their toolshed. They continually revise the way they think about common problems, without emotional attachment to the old, remorselessly refactoring solutions, discarding the old, re-engineering, revising, and re-thinking. They are masters of their profession, and like a true master, they mentor the more junior members of the team.

Unlike other professions though, there is no real industry recognized apprenticeship system. Sure there are certification organizations, but I can point to so many people that have some sort of qualification on paper, but no real skills in the actual process of analysis and development.

I can also point to so many people with the makings of a good true craftsman – and sometimes they are the people that frustrate you the most though. They have a good work ethic, extreme attention to detail for the end product, and pride in the feedback they get from end users. Crack open that solution though, and shining at you is the result of so many impacts with that golden hammer – it could blind you.

Where are the standards? When was the last time you read a technical article, or lifted your head from your cubicle to see what was going on in the rest of the industry? When was the last time someone walked up to you and simply showed you a better way? Unfortunately time itself deems these people “senior”, not their skills.

But it doesn’t have to be this way. Usually it’s the environment that has left them uninspired, comfortable with the fact that what they are doing just works, but no eye for the long term maintainable solutions. What can you do to inspire these people? How do you motivate these people in a working environment that has institutionalized all resistance to change? What do you do when you are surrounded by those that simply resist because new is different?

In other words, how do you start rocking the boat? ;)