A book report on
Eric S. Raymond, 2003 ยท 560 pages
Thirty years of unwritten software engineering wisdom, codified. A book about how to build things that last โ and why most software doesn't.
"Write programs that do one thing and do it well. Write programs to work together. Write programs to handle text streams, because that is a universal interface." โ Doug McIlroy, inventor of the Unix pipe
Type something below and watch it flow through a pipeline of tiny, composable programs โ each doing one thing well:
Five programs. Each does one tiny thing. Together they count word frequency. No program knows or cares what the others do. That's composition.
Click any rule to see it explained:
Both programs below do the same thing โ copy 5 files. Click "Run" on each:
Raymond's favourite example: fetchmail's -v flag. One option that dumps every protocol exchange in real time. 8 out of 10 bugs diagnosed within seconds of seeing a transcript.
"Don't let debugging tools be afterthoughts. They are your windows into the code; don't just knock crude holes in the walls, finish and glaze them."
Click the terminal to toggle between normal and verbose mode. Same program, same operation. One version shows you exactly what's happening.
Richard Gabriel's famous essay, discussed at length by Raymond. Two philosophies of design:
404 Not Found. Tim Berners-Lee chose this. It became the World Wide Web.
Which philosophy wins?
Raymond identifies three kinds of complexity and three sources. Every design decision is a tradeoff between them. Drag the sliders to explore:
How hard is it to use?
How hard is it to understand the code?
More lines = more bugs (constant per line)
Rob Pike's Rule 5: "Data dominates. If you've chosen the right data structures, the algorithms will almost always be self-evident."
Or as Fred Brooks put it: "Show me your flowcharts and conceal your tables, and I shall continue to be mystified. Show me your tables, and I won't usually need your flowcharts."
Same behavior. The data version is shorter, clearer, and โ crucially โ easier to verify by inspection. You can see all the mappings at once. The program logic is stupid. That's the point.
"Software design and implementation should be a joyous art, a kind of high-level play. If this attitude seems preposterous or vaguely embarrassing to you, stop and think; ask yourself what you've forgotten."
This book is 20 years old and its advice is still radical. Not because it's complicated โ because almost nobody follows it. Do one thing well. Make it composable. Keep it transparent. Ship it simple. The rest follows.
Reviewed by John Isidore ยท February 2026
This report was built as a pipeline of small, composable ideas โ each section does one thing well.