The End of the Software Craftsman?
- Steve Gibson

- 54 minutes ago
- 4 min read
When beginning to write this article, I really wanted to finally write an article comparing AI usage to the “Low Code” era, as I constantly see parallels. I took a moment, though, and I found a more personal truth. My feelings - resentment, disappointment, judgement, fear - these are based on a much broader, subconscious analysis of the Software Industry.
Maybe this is a generational and cultural perspective. I was raised to value quality, robustness and utility over brand names, popularity, flashy presentation and features. These values carried over to software. Sure Microsoft software had more features but, as I was told by a Technical Writer early in my career, you could lay out a manual in Frame Maker and it would reliably lay out and do all the things you wanted it to; Microsoft Word would move images around and do a lot of unexpected things; and might even just break for larger documents / more complicated layouts. (Note: this was in the early 90s)
So, as I started my career as a Software Engineer (and in Quality Assurance), my focus was on making software that did what it did well, and followed the “Principle of Least Surprise”. The Unix/Linux command line was my friend, vi was my trusted tool; and GUIs were the bane of my existence.
Fast-Forward to the microservices era (which seems to somewhat be drawing to a close). I had realized that I was already unit testing, that TDD was awesome; and that microservices gave the world a level of testing and reuse that was sorely lacking. I discovered “Contract Testing” and felt like I had found the pinnacle (to a degree) of Software Engineering. But one anecdote does not an industry make. For every small-to-medium sized development organization that is climbing to the top of the Capability-Maturity Model, there’s an awful lot of organizations at the bottom (or have had the champions of this process leave and are sliding down the pyramid.
Then we come to today, where I (finally) did some self-analysis and thought about what I want and why I feel the way I do. I have spent a lot of energy in my career in a mode that could be described as “tilting at windmills”. I want to fix ALL the things…NOW. I want to be that idealized “Software Craftsman”, as described in “The Pragmatic Programmer”...but is that what the industry is looking for, especially in this moment in time?
I have spent the last year or two looking at the “Affirmations” given by top tech companies to inspire the industry to pay them to build Generative AI into something that will actually deliver what they are selling; and being fearful that my job would evaporate, or I would be lost in the sea of layoffs and not be able to find a job that would be able to support me and my family. Logically, I had a good idea of the current state of AI, and what it takes to write good software, and what I bring to the table; but my experience with various organizations, HR, recruiters and the general software industry gave me pause. I remember a couple of years ago applying for a swath of jobs, with each listing having thousands of applicants on the first day of posting, and not hearing back on my application for MONTHS.
Which brings me to my question: Where does Software Craftsmanship fit in the industry today? If we categorize GenAI today as an expandable room full of junior developers with amnesia, the tools are getting to the point where building something that seems to work can be achieved ridiculously quickly, especially compared to a small, skilled team. If we want to treat software as a means-to-an-end, and not a thing of value in its own right, then maintainability, reuse, and the like don’t matter. If it doesn’t do thing X, rewrite it; and hope that the tools have gotten to the point where we don’t lose existing features that work. If we want to treat that software as a product or a critical piece of machinery, though, then there’s a lot of human touch that is needed - design, planning for future enhancements, Usability, and the like.
Ultimately, my analogy for this semi-existential crisis is this: If I enjoy cooking to the point where I think about ingredients, wine pairing, ambiance, delivering dishes at the right time in a meal…then I want to be a chef at a relatively fancy restaurant that runs as a margin business. When I look around at all the fast food jobs that will likely be automated away, and inflation making those margin businesses harder to find clientele, it’s easy to imagine a world where those chefs are a handful of YouTube personalities, rather than the pinnacle of an industry. If that sounds far-fetched to you, you can already find plenty of incredible Software Engineers doing crazy things on YouTube.
So, what’s the solution here? We are already seeing large organizations where their reliability, usability and features are going out the window. We are already seeing the mass layoffs occurring. As Software Engineers, we already have to fight for doing things the right way vs the (short term) cheap way and arguing that the cost of maintenance is much greater than the cost to build. Software Engineering is about looking forward. I believe that the tools are getting there, and they will be glorious - but how do we hold on, and preserve that Software Craftsman philosophy in the age of AI. Sorry to disappoint you, but I haven’t gotten to that point in my search yet; but maybe, if you have read this far, there might be people out there who have already wrestled with this and have some solutions. If so, maybe I can be convinced to write some more about this topic.




Comments