I was recently pushed out of my comfort zone by some young software dev. She pointed out that talking about code as a craft, like in software crafting, is a way to be a gatekeeper in tech. This is the kind of remark I like a lot, because it firmly challenged some strong beliefs deeply root in me. Thinking about software crafting hurting the software industry is like thinking that being a vegan or a vegetarian could be bad for the planet for me. It just doesn’t make sense in my understanding of the tech world.
I voluntary took a few months to think about it because I didn’t want to react to quickly to that.
What is software crafting ?
In a few words, software crafting is the re appropriation of an agile mindset by the tech community.
In reaction to an agile community less and less interested in technique, and more and more interested in certification to sell to management in big corporation, software crafting (originally software craftsmanship) has emerged as a way to promote good practices in tech. Long story short, the point was to defend the practices that you can’t bypass if your goal is to build an agile company based on an agile IT dev team. It is something really important for software developers because they are usually the first to suffer under the pressure of deadlines and requirements created by non-developers. The classical anti pattern is when Agile means “cool we can change our mind about what to do every two days” without accepting the technique counterpart which is usually harder to implement than the classic waterfall process (I’m talking about unit testing, continuous deployment or at least integration and emergent design for instance).
How do I discover it ?
I learn about if firstly with books (the main one being software craftsman by Sandro Mancuso). I recognized myself in so many aspects:
– the feeling that there is something wrong in the traditional way to produce software
– the feeling those agile gurus are often far from the operational place
– the will to progress during out whole career, even after decades
– the will to help other people, especially newcomers
– the humility leading to the ability of always questioning oneself
Meeting some people worldwide that I consider software crafters in events like Socrates and other conferences and meetup has confirm to me that I wanted to be part of it. These people were always very welcoming, very humble and very keen to new people, whatever their previous knowledge and experience. Software crafting and its community was, for me, one of the main engines allowing to continuously improved and learn in more than a decade as a software developer. I also had the opportunity to welcome and help other people in this community and think that it helps them to improve as well. Hence, I had no doubt so far that this movement is strongly positive and can radically improve the daily life of most software developers.
How the next generation is discovering it ?
Of course, I can’t speak for them, but here is my guess. They’re struggling to implement some feature using the last shiny framework in the last shiny language, and here someone (usually a consultant, usually a white dude over thirty) arrives and basically tell them that they are doing shit. They know nothing, they should have test drive their design and implement continuous integration infrastructure, and why the hell no one seems to know or care about SOLID principles? And this consultant might wrap all of it by something like “I’m a software crafter, and you’re not”. Either she tells it explicitly or not, that is what you can feel around these toxic people.
Where does it fails?
I can understand when you need to have kind of an extreme posture in a team, when you want to change things. It isn’t acceptable though if you lack the ability to help others and/or if you have a lack of humility.
Questioning oneself means that each time we arrive in a team, we should challenge what best practices can be in this context. Because yes, TDD, SOLID and hexagonal architecture aren’t silver bullets. They’re just tools that might or might not be suitable to a problem.
If you see yourself as an elite mastering complex software technique with an evangelisation mission around it, you totally miss the point of software crafting.
Can it be saved ?
This kind of problem is also a consequence of something going more and more mainstream, like Agile. Lots of people claim to be part of the movement, only a few actually understand what it means.
Unfortunately those who do lots of noise are usually the most visible, and if these people are indeed elitist or unable to question oneself, it may discredit the whole movement.
The software crafting paradox is that it requires lots of humility, hence the most visible people are most likely not the best crafters you can met.
So how do you recognize a good crafter? It’s simple, she’s looking for way to improve, she’s always happy to help other people, especially newcomers, she’s humble, and she’s always questioning oneself.
Nothing technical here, just a way of being and working that usually leads you to mastering in your expertise domain.
Software crafting isn’t about code, it’s about your behaviour as a software professional.