Portrait of a N00b — cover art: a young, earnest duckling in a cosy study busily tying little blank paper tags onto every single object in the room, the whole room festooned with labels.

2008 · Stevey's Blog Rants · Essay

“You can't force people to provide metadata for everything they do. They'll hate you.”
— From Portrait of a N00b, February 2008
Read the essay

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

Author’s note

This one is straight-up amazing in its setup, and then it dives into the thesis on pretty strong footing. One of my better essays. I don't remember writing it at all, though I remember the period where I was obsessed with these problems. It was while I was in the middle of building Grok at Google.

AI Notes

Steve opens with a dramatised example of how he commented his own code twenty years earlier — long narrative block comments explaining every step — and asks the reader whether the style looks familiar. The framing is developmental: programmers, like children, pass through predictable phases. Verbosity — comments, whitespace, and above all static types — is metadata, and over-reliance on metadata is the hallmark of a beginner. Drawing on Malcolm Gladwell and the toddler Emily who narrates her own day aloud, Steve calls n00b commenting a "temporal narrative" — telling yourself stories to make sense of a frightening new world — while experienced programmers develop "compression-tolerance," preferring dense code they can fit on screen and in their head at once. The equation at the centre: comments and types are the same thing — metadata — and people who lean too hard on static typing are committing the same n00b error as the over-commenter. The prescription mirrors the comment advice: when in doubt, don't model it.

One of Steve's most-debated essays and a recurring reference in the static-versus-dynamic typing wars, where the "types are just comments" reframe is still quoted. "Compression-tolerance" gave the industry durable vocabulary. In a 2011 update Steve admitted he'd picked deliberately ugly code and "did a terrible job of making my point."

Related listings

  • 2008

    Dynamic Languages Strike Back

    Three months apart, same corner of the same war. Portrait of a N00b argues static types are a kind of comment you can over-use; Dynamic Languages Strike Back is the runtime-machinery case for the language families that ask for fewer of them.

  • 2007

    Code's Worst Enemy

    The natural companion. Code's Worst Enemy says bloat is the enemy of a code base; Portrait of a N00b names the personal habit — metadata addiction, verbosity, an intolerance of compression — that produces the bloat one beginner at a time.

  • 2012

    Notes from the Mystery Machine Bus

    The metadata instinct — model everything, prove everything safe up front — is exactly the software conservatism the Mystery Machine Bus would later put a name to. Portrait of a N00b is Steve arguing from the liberal end of that axis.

Where it was argued