Software Craftsmanship

The philosophy of Software Craftsmanship really speaks to my core values, and I know I want to become a craftsman and work with people who follow that ethos. The journey is long and difficult, but it will do anything it takes to become true craftsman.

I first heard about the software craftsmanship ethos two years ago, when I read Getting Real: The smarter, faster, easier way to build a successful web application, by Jason Fried and David Heinemeier Hanson, and The Pragmatic Programmer, by Andy Hunt.

But what is Software Craftsmanship exactly? Here is a definition I like. In Sandro Mancuso’s words, in Software Craftsmanship: Professionalism Pragmatism Pride:

“Software craftsmanship is a long journey to mastery. It’s a lifestyle where developers choose to be responsible for their own careers and for improving their craft, constantly learning new tools and techniques. Software Craftsmanship is all about putting responsibility, professionalism, pragmatism and pride back into software development.”

How I see it, it’s the Do what you love, love what you do, and do it well ethos applied to software development. Or as the Software Craftsmanship Manifesto states it: “Not only working software, but also well-crafted software.”

I consistently attend the hands-on sessions of the London Software Craftsmanship Community (LSCC). Each session has a theme - e.g. Outside-in development with Behaviour-Driven Development - and participants pair program to solve the challenge of the day.

It was my first experience of pair-programming. I remember pairing with Pawel Duda and learning more about using dependency injection and duck-typing to avoid coupling. On his recommendation, I read Sandi Metz’s Practical Object-Oriented Design in Ruby (aka POODR).

Now the best way forward for me is to get hired as an apprentice at a company that follows the ethos of software craftmanship.