Your First Steps in Software Craftsmanship

The question comes up frequently:
“I feel that software craftsmanship is important, but where do I start?”
Excellent question! Yes, excellent because it already contains part of the answer: “I feel that [it]’s important.” The desire to learn, to improve one’s practice, and to work better is already taking root.
And that’s really the essence of it. Because software craftsmanship (or “Craft”) isn’t defined by its practices but by its values: a love of a job well done, humility, the desire to learn and share knowledge. A deep-seated commitment to continuous improvement (let’s get poetic 🎵).
Okay, but in practical terms?
Here’s a menu that makes sense to me:
-
For starters, a little Clean Code to whet your appetite. Understanding the importance of good naming conventions, proper use of comments, the SRP (Single Responsibility Principle), KISS, YAGNI, etc. These are all simple concepts to understand and apply, which will allow you to quickly see positive effects in the codebase and keep your motivation at its peak.
-
For the main course: we need something substantial. Let’s start with Test-Driven Development, accompanied by a few basic principles of functional programming. No need to use big words (functors, monads…), but at least understand what a pure function is and why it’s useful—and then immutability. Oh, and yes: immutability is to code what sausage is to lentils (*).
-
For dessert, yes, here we can move on to Domain-Driven Design. It’s quite substantial, so we can let a little time pass before tackling it—or have a “trou normand,” depending on your preference. Behavior-Driven Development, meanwhile, will serve as the coffee.
What about refactoring?
Refactoring is a meal in its own right. If you haven’t fully digested the previous course, it’s best not to dive into it right away. Because before learning how to bring existing code up to the target standard, you first need to be clear about what that target is. And to give you a taste of the topic, the “how” involves discussing the Golden Master, the Mikado Method, and the Strangler Fig pattern.
There’s no rush to learn refactoring. Making progress on the three pillars of software craftsmanship (readability, testability, modularity) already helps reduce technical debt 👍
But then again, as we know, there’s more than one path. Craft is, first and foremost, about connections. People who reached out to me, perhaps at a time when I couldn’t do it myself, when I was alone at home… sorry, I’m getting sidetracked.
There’s some truth to that: some people will help you grow more than others thanks to their expertise, their teaching skills, and their infectious enthusiasm. That’s what I’ve experienced and continue to experience.
But before that, there isn’t even a single destination. You might want to delve into one topic more than another—out of curiosity, for pleasure, or out of necessity—and that’s perfectly fine. The field of knowledge is infinite.
(*) Fewer culinary metaphors, please.