Practical Magic — cover art: an elderly badger butler in a brown waistcoat polishing the long brass barrel of a Victorian castle cannon with a velvet cloth, an unopened wine bottle on a small table beside him.

2004 · Drunken Blog Rants · Rant

“I suspect that the Line of Acceptable Magic is slowly moving up, as certain abstractions become so bulletproof, ubiquitous, and well-supported that you really don't need to know how they work. Like toilets. I'm happy that they're magic.”
— From Practical Magic, 2005
Read the essay

© 2004 Steve Yegge. Originally published at Drunken Blog Rants.

AI Notes

Written from inside Amazon's hiring machine, where the question of how much magic an engineer is allowed had turned interview debriefs into a running war: Steve's candidates, who may literally have been rocket scientists, flunked on C++ questions, while he voted down the other camp's for living too far up the stack. Instead of settling the argument, the essay runs a thought experiment on the reader (how much do you actually need to know about how 'ls' works?) and predicts that his friends will march straight into opposing camps, from the unix die-hard to the tribe that keeps a shaman on call to announce that your pilfer grommit has come loose from your weasel pins. Then it does something rants almost never do: Steve lays his two convictions about abstraction side by side, admits they are "mutually inconsistent," and reports that the half of him expecting purely declarative programming someday is, according to the other half, "on crack."

The essay also holds a distinction almost nothing else in the catalogue does: Steve retracted it. In Decision Time, his April 2005 summing-up of a year's blogging, he passed along an outside blogger's answer — good programmers slide up and down the ladder of abstraction as the situation demands — accepted it, and ruled that his own essay "loses most of its force." That concession looks hasty now. The ladder answer presumes a programmer who already knows the lower rungs; this piece is worried about the growing population who never learned them, for whom there is no climbing down. Anyone inclined to side with the blogger can take the essay's built-in quiz first: describe, roughly, the data structure behind the last Set you used.

Related listings

  • 2004

    Tour de Babel

    Same era, opposite direction. Tour de Babel walks the language stack and identifies what each layer is for; Practical Magic asks how much of any given layer you actually need to understand.

  • 2008

    The Universal Design Pattern

    Three years on. The Universal Design Pattern is the long answer to the abstraction question raised here — what the right shape of any abstraction layer actually looks like.

  • 2005

    Transformation

    Companion piece on knowing when your tools are doing too much of the work. Transformation is about IDE refactorings; Practical Magic is about every other abstraction you depend on.