Decision Time — cover art: a small council of woodland animals around a long honey-oak Victorian war-room table, with several name-cards (each blank) and small carved wooden models of language-symbols arranged in front of the seats, a young wizard in a cornflower-blue robe standing at the head of the table with a respectful proposal in his hands.

2005 · Drunken Blog Rants · Rant

“There *is* such thing as a silver bullet, but you have to buy them in bulk and hand them out to a whole army.”
— From Decision Time, April 2005
Read the essay

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

Author’s note

Overly long piece advocating for creating custom programming languages for various Amazon-specific problems, with Erlang as an example of a language that solves a specific problem that's hard in C++.

This led to some teams adopting Erlang at Amazon, interestingly. I think it was abandoned after a few years.

When I went to Google, I was surprised to find that they use custom languages all over the place. Borgcfg is the most notorious, their turing-complete production configuration language. But they have others, as we had to support them all in Grok/Kythe. But by and large, Google proved my thesis true. Was nice to be there.

AI Notes

Written April 2005, twelve months into a working year of language-tour blogging at Amazon, and treated as a summing-up. The opening recaps the five most-read essays from the previous twelve months; the middle is a working list of Amazon-specific problems that C++, Java, and Perl don't solve cleanly: N-box distributed systems, time-series, custom wire protocols, configuration at scale, build- and cycle-time. Each item has a recent production scar attached. The body is the proposal: adopt a new language properly, the way Amazon adopted Perl, Java, and C++ before, and put a small dedicated team on the libraries, tools, documentation, and porting work it takes to make the language usable for a thousand engineers. Erlang and Gambit Scheme are the top picks (concurrency story plus the ability to grow abstractions); Ruby, Common Lisp, OCaml, Haskell behind. The argument is organisational, not technical. The languages exist; the library and tool support doesn't, and waiting for the open-source community to deliver it hasn't worked. The silver bullet exists — you have to buy enough of them to arm a whole army.

Read against what Amazon actually did (which is not this), it's one of the clearest documented moments of an engineer asking a large engineering organisation to make a strategic move it wasn't going to make. It also worked as a prediction: Erlang's concurrency story did turn out to matter, and the JVM languages did eventually absorb most of what Steve wanted. And it's a record of a kind of in-house technical writing — careful, fully referenced, addressed at one's own management — that mostly no longer exists on the open web.

Related listings

  • 2005

    Tin Foil Hats

    Six weeks earlier. Tin Foil Hats is Steve picking for himself; Decision Time is Steve asking the company to pick for everyone.

  • 2005

    Choosing Languages

    The methodology behind the pick. Choosing Languages lays out the criteria; Decision Time applies them and names candidates.

  • 2005

    Duck Season

    Same month. Duck Season is the equalizer; Decision Time is the moment Steve points at the slider arrangement Amazon actually needs.