Article

Software Craftsmanship

Engineering is closer to art than to science. Functionality and reliability are the two pillars of software development, but achieving them is a deliberate practice, not an exact science.

The Core Claim

Software development is not just solving problems with code. It is crafting solutions that:

  • Functionally and reliably solve a real-world problem
  • Can be understood and extended by others
  • Hold up under pressure in both short and long term

The developer who only types is operating at a fraction of their actual role.

The Multiple Roles of a Developer

During a single project, a developer cycles through:

  • Requirements engineer — when the problem is first presented
  • Design engineer / architect — when crafting the solution
  • Assassin — when testing
  • End user — when changes go live

Missing any of these roles produces predictable failures.

Art is the Elimination of Unnecessary

The best code and the best solutions share a quality: nothing left to remove. Complexity is easy to add; restraint is hard. The cognitive overhead of modern software comes from accumulated necessary complexity plus accumulated unnecessary complexity — the job is to keep the second pile small.

Why This Matters Now

The bar for "good developer" keeps rising as software eats more domains. Developers face increasingly unrelated cognitive overhead from tooling, infrastructure, and process — much of which abstracts poorly. The answer is not to abandon systems, but to be deliberate about which systems actually reduce friction versus which ones add new kinds of it.

Related Pages

Sources

Evidence

Linked source: Obsidian Source: Building(and Maintaining) Software is a Work of Art