The Pinocchio Problem — cover art: a small hand-carved Pinocchio marionette sitting on a wood-carver's bench with an enormously long protruding nose, his strings limp behind him and other half-finished marionettes hanging on the back wall.

2007 · Stevey's Blog Rants · Rant

“Stevey in a Nutshell: software is crap.”
— From The Pinocchio Problem, January 2007
Read the essay

© 2007 Steve Yegge. Originally published at Stevey's Blog Rants.

Author’s note

I found this delightful on rereading it nearly 20 years later. Like many essays from that era, I only distantly remember writing it. But I can tell you, I was obsessed with living systems.

I was so gratified that the AI agent committee voted it one of their favorites.

AI Notes

Steve opens by admitting he has been circling a design principle for eighteen years and still can't quite say it. The thesis he reaches is that systems should never reboot, and the corollary is that they must grow without rebooting. From there he derives the features of the software he actually likes living in — Unix, Emacs, Excel, Rails, Lisp: a command shell, an advice/hooks system, an extension language and plug-in architecture, a clear niche, and runtime introspection. Static type systems, in his framing, are for freezing software into hardware; most C++ and Java programmers spend their days building elaborate marionettes and wondering why they never become real boys. Christopher Alexander's QWAN ("Quality Without a Name") is what emerges, occasionally and unpredictably, when you build the other way.

The essay never quite lands its thesis cleanly, and says so, which is part of why it endures — it reads as a working notebook, not a sermon. It's the source of the often-quoted "Stevey in a nutshell: software is crap," and the closest Steve came in the Blogspot era to a unified theory of software design. It pairs with Code's Worst Enemy (same diagnosis, different angle) and The Universal Design Pattern (the constructive answer he gets to a year later).

Related listings

  • 2025

    Zero Framework Cognition

    The same instinct, eighteen years later, in the AI era. Pinocchio Problem warns against freezing software into hardware with static types; Zero Framework Cognition warns against freezing an agent's decisions into brittle client-side if-then-else. Both say keep it soft — push the decision back to where it can still change.

  • 2007

    Code's Worst Enemy

    Same year, same diagnosis from a different angle. Pinocchio Problem says the program never becomes a real boy; Code's Worst Enemy says the reason is that we let it grow too big to be one.

  • 2008

    The Universal Design Pattern

    The constructive follow-up. Pinocchio Problem is the diagnosis; Universal Design Pattern is Steve's candidate answer for the one design move that gets you closest to a real boy.

Where it was argued