Choosing Languages — cover art: a small fox in a waistcoat in a quiet attic library at evening, sorting an armful of variously-sized leather-bound books into four open wooden trunks on different coloured rugs. 👍

2005 · Drunken Blog Rants · Column

“I'll use Java and Ruby when I can, and other languages when I have to. And I'll keep an eye on all of them, since you never know when some new one's gonna be totally… groovy.”
— From Choosing Languages, 2005
Read the essay

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

Author’s note

A surprisingly readable article, one that gives us a time capsule peek into what life as an Amazon Developer was like when I was in charge of the developer journal. Programming competitions almost weekly, people all over the company experimenting with new languages, which pissed everyone else off. Actually quite fun times, though I left 3 months later for Google.

AI Notes

Written for the Amazon Developers Journal after enough co-workers had started greeting Steve as "OCaml boy" that the joke accumulated mass. He spends the opening politely pushing back — he wasn't telling Amazon to switch to OCaml; he was studying it, the way he was studying twenty or thirty other languages — and uses the rest to publish a working framework for actually choosing one. Every language goes into one of four buckets (Production, Scripting, Studyable, Stuck-with); the right pick is almost always the highest-level option in the right bucket; for "real" work, only consider popular languages. The middle detours through pattern-matching as a Design Pattern in the Gang of Four sense — the characteristic teaching move, where instead of evangelising OCaml he extracts the transferable idea (you do dispatch all the time; languages with native syntax for it are easier) and hands it back as a general lesson.

The cleanest summary of Steve's language-selection thinking in the Drunken era. The four-bucket framework is the rule implicitly running under every other 2004–2006 language piece; the then-current picks (Java for big systems, Ruby for everything else) date the column precisely. Read alongside Tour de Babel for the map, Ancient Languages: Perl for the most thoroughly worked counter-pick.

Related listings