craft

To make or produce something with care or skill.

Software is a craft. Every software craftsman produces code with care and skill, but not everyone who produces code is a craftsman. Let's explore what software craftsman have in common besides the fascination for their craft!


A piece of art

When usability, aesthetics and functionality are melted into one, we have a piece of art. Behind such a piece is craftsman. Someone who loves what they do and excels at it. The result sparks joy when used while fulfilling its purpose. For industries where the output is a physical product, craftsmanship is often easy to spot. For example, a beautifully designed and crafted wooden peppermill is easily distinguished from a mass market product that only focuses on functionality. In that case we associate aesthetics with a piece of art. But that‘s where the comparison with a piece of (software) art from a craftsman breaks down. What is aesthetic when it comes to software: the source code? The front-end? While the former is only visible by the craftsman, the latter can easily be deceiving. It is much easier to hide sloppy code behind a nice looking front than it is to use bad quality wood to create a good looking wooden cabinet. Especially in the age of LLM where making a good looking "product" is a matter of hours. While it is harder to grasp what the output of a software craftsman looks like we can describe the craftsmen themselves. Independent of AI tooling usage, they all share a rather common set of traits:

Common traits of software craftsmen

  • A love for their craft: The programming languages they use are more than just tools. They are fascinated by their internals, the roadmap of the language designers and the abstract concepts simplifying complex problems. They "inhale" abstract concept for fun and build their own tooling, similiar to how a handyman builds jigs.
  • A fascination that goes beyond work: They work on technical projects outside work. Not to optimize their portfolio for their next job but simply because they enjoy it. They get satisfaction, even relaxation from solving technical challenges or exploring new solutions and technologies.
  • A pull towards other craftsmen: Whenever I found a craftsman in an organization there was almost always more than one. Craftsmen in an organization gravitate towards each other. I observed that if they don't find others they usually leave quite quickly, to join other craftsmen somewhere else.

These traits make craftsmen inspiring people. They share their excitement with others, inspiring them. There is another group of people who share these traits: artists. They also love their craft, are fascinated by it and are pulled towards other artists.

When looking at them in a business context, there is a significant difference: craftsmen are aware of business objectives, artists tend to do their work for the sake of the art piece. At the same time, a craftsmen would say that a suboptimal solution achieved with minimal resources that works right before an important customer demo is a piece of art. Are we robotic software engineers therefore all artists?