Thursday, January 13, 2011

Software Craftsmanship - Knife Skills, Tools and Art

I have a love/hate relationship with the expression Software Craftsmanship. Jason Gorman has an interesting article entitled "Why Software Craftsmanship Is Not Just About 'Beautiful Code'" and I agree with his points.

Don't confuse Craftsmenship with 'Knife Skills'. Cooks with great knife skills in a kitchen are able to try  ideas faster because they are not bogged down by the tools. Vim, shell, Git and algorithms are knife skills. Iterations, continuous integration and stand-ups are tools. The Art is applying them. Interpersonal skills are also an Art. Be they talking with your team or coaxing requirements from a customer.

My issue with the expression is when people label themselves a "Software Craftsperson". In my mind, Craftsman implies Master Craftsman. That connotes an image of the grey bearded guru who roams the countryside like Kung Fu looking to impart his wisdom on the "poor unfortunates". His charming tales of daring and adventure, loves won and lost, enrapture the weary apprentices as they strive to achieve that same level of Programming Zen. ... or Bob Vila. Both images cause equal pain.

I think the real Software Craftsmen are the ones that view themselves as the apprentices. Humble. Usually you'll only hear them ask their colleagues "Could you show me how you did that?" They take pride in the work they've done and are happy to show others how they did it, but only from a place of shared excitement. Or, when unhappy with their results, they'll say "Can someone help me clean up this mess I've made?" and respect the feedback given.

For now, I like Software Journeyman more.

0 comments: