Software Is Not Cheese
The Problem
A tremendous amount of literature exists on agile product development and lean product development and a hundred other terms, all geared on principles. Almost all of these agile development frameworks/systems/philosophies require teams to adopt and customize. Adopting something off the shelf, or more likely a blog/website, is tough. Once you need to customize it, it starts to fall apart at the seams.
Craftsmanship Doesn’t Help
Parts of the software industry perpetuate this idea of craftsmanship, which by now has lost much of its momentum. They say software should be well honed like a craftsman would their leatherwork, tanning and stretching a hide to make units ready to be dyed, cut, and formed into various useful things. The craftsman works their woodworking bench - they know where every tool is, what they do, and when to use it. Craftsmanship is noble. Craftsmanship is modern. Craftsmanship is ascribing credence to things we want in our lives through our work, even if often at odds with the goal.
In software, this comes to bear through practices like pair programming and test-driven development - and probably a handful more. But, top-level, these are the core practices. The idea is that writing prescriptive and descriptive tests over your code is what a craftsman (person) would do. Each function has a purpose—each line of code matters. Nothing is just whipped out or copy/pasted into place. Each method makes sense in the broader context, and software patterns are applied.
The notion that software is craft has always been tenuous.
Look at the movement's history - a break from the Agile practice folks, who only cared for process and not software, meant physically writing software required a name—something special to call its own. But, writing software is writing software. It doesn't matter if thousands of scrum masters have conferences - that doesn't ship software. Engineers ship software by putting hands on keyboards, testing, discussing, and project managing software.
Consider this, when was the last time two scrum masters got together and created a startup that made millions of dollars? How about two software developers? These are entirely different stories.
Therefore, there is less craft than it appears. Considering how subjectively complicated software is, it cannot easily be craft. Case in point, software that scales is the sign of success commercially. But small-batch cheese craft is coveted because it doesn't scale. Thus, the dichotomy.
This is an excerpt from my upcoming book and therefore Copyright held by me, etc.
Great piece! I love
Interesting perspective. What I always took out of the craftsman movement was "pride and care" in what a creator does and how they do it. I never considered it from the perspective of tooling. Nice article, Stephen Rylander .
Very true. Software craftsmanship is very important