Lisp is for Entrepreneurs - Part 2 (Amazon)
Saturday, March 4, 2006
A couple of months ago, I wrote a blog posting titled
"Lisp is for Entrepreneurs". It got a lot of hits and I got a lot
of good feedback on the posting. However, it was interesting that
people just didn't seem to get the point of the article (although I
thought I summarized it pretty clearly at the end of the post). For
those of you that liked the post and would like another example, here
is one that most people can relate to quite easily - Amazon.
I recently came across the web page of a guy who used to work for Amazon (he's since moved on to Google). While at Amazon, he maintained a personal blog that was only available inside of Amazon. Since leaving the company, he has started to make some of the entries generally available on the web. One of the posts is titled "Tour De Babel" and is a "rant" on different programming languages. I have excerpted below the section on Lisp (emphasis is mine):
"When Amazon got its start, we had brilliant engineers. I didn't know all of them, but I knew some of them.Again, this was a case of smart people using Lisp to develop products that pushed them to the front of the pack. Once they got there, the original programmers might have "moved on to greener pastures" and the software might have been been rewritten by "schedule-driven people who could make their managers happy by delivering crap fast"; however, the important thing is that Lisp helped the original entrepreneurs get Amazon started as a viable business!
Examples? Shel Kaphan. Brilliant. Greg Linden. Brilliant. Eric Benson. Independently famous in his own right, before he ever even came to Amazon. Also brilliant.
They wrote the Obidos webserver. Obidos made Amazon successful. It was only later that poop-making engineers and web devs, frontend -- schedule-driven people who could make their managers happy by delivering crap fast -- it was only later that these people made Obidos bad. Clogged the river, so to speak. But Obidos was a key cornerstone of Amazon's initial success.
The original brilliant guys and gals here only allowed two languages in Amazon's hallowed source repository: C and Lisp.
They all used Emacs, of course. Hell, Eric Benson was one of the authors of XEmacs. All of the greatest engineers in the world use Emacs. The world-changer types. Not the great gal in the cube next to you. Not Fred, the amazing guy down the hall. I'm talking about the greatest software developers of our profession, the ones who changed the face of the industry. The James Goslings, the Larry Walls, the Paul Grahams, the Jamie Zawinskis, the Eric Bensons. Real engineers use Emacs. You have to be way smart to use it well, and it makes you incredibly powerful if you can master it. Go look over Paul Nordstrom's shoulder while he works sometime, if you don't believe me. It's a real eye-opener for someone who's used Visual Blub .NET-like IDEs their whole career.
Emacs is the 100-year editor.
Shel, Eric, Greg, and others like them that I wasn't fortunate enough to work with directly: they didn't allow C++ here, and they didn't allow Perl. (Or Java, for that matter). They knew better.
Now C++, Java and Perl are all we write in. The elders have moved on to greener pastures.
Shel wrote Mailman in Lisp. Emacs-Lisp. You don't know what Mailman is. Not unless you're a longtime Amazon employee, probably non-technical, and you've had to make our customers happy. Not indirectly, because some bullshit feature you wrote broke (because it was in C++) and pissed off our customers, so you had to go and fix it to restore happiness. No, I mean directly; i.e., you had to talk to them. Our lovely, illiterate, occasionally eloquent, well-meaning, hopeful, confused, helpful, angry, happy customers, the real ones, the ones buying stuff from us, our customers. Then you know Mailman.
Mailman was the Customer Service customer-email processing application for ... four, five years? A long time, anyway. It was written in Emacs. Everyone loved it.
People still love it. To this very day, I still have to listen to long stories from our non-technical folks about how much they miss Mailman. I'm not shitting you. Last Christmas I was at an Amazon party, some party I have no idea how I got invited to, filled with business people, all of them much prettier and more charming than me and the folks I work with here in the Furnace, the Boiler Room of Amazon. Four young women found out I was in Customer Service, cornered me, and talked for fifteen minutes about how much they missed Mailman and Emacs, and how Arizona (the JSP replacement we'd spent years developing) still just wasn't doing it for them.
It was truly surreal. I think they may have spiked the eggnog.
Shel's a genius. Emacs is a genius. Even non-technical people love Emacs. I'm typing in Emacs right now. I'd never voluntarily type anywhere else. It's more than just a productivity boost from having great typing shortcuts and text-editing features found nowhere else on the planet. I type 130 to 140 WPM, error-free, in Emacs, when I'm doing free-form text. I've timed it, with a typing-test Emacs application I wrote. But it's more than that.
Emacs has the Quality Without a Name.
We retired Mailman. That's because we have the Quality With a Name -- namely, Suckiness. We suck. We couldn't find anyone who was good enough at Emacs-Lisp to make it work. Nowadays it would be easy; Amazon's filled up with Emacs Lisp hackers, but back then, CS Apps couldn't get the time of day from anyone, so they did what they could with what they had, and there weren't enough Emacs-Lisp folks. For a while, they even had Bob Glickstein on contract, the guy who wrote the O'Reilly "giraffe" book Writing Gnu Emacs Extensions, sitting there writing Gnu Emacs Extensions for Mailman in this little office in the Securities building.
CS Apps was Amazon's first 2-pizza team, you know. They're completely autonomous -- then and now. Nobody talks to them, nobody helps them, they build everything themselves. They don't have web devs, they don't have support engineers, they don't have squat, except for rock-solid engineers and a mentoring culture. And that's all they've ever needed.
But they had to retire Mailman. Alas. Alackaday. And I still get to hear about how much people miss it. At parties, even.
I think there may still be more Lisp hackers, per capita, in CS Apps than in any other group at Amazon. Not that they get to use it much, but as Eric Raymond said, even if you don't program in it much, learning Lisp will be a profound experience that will make you a better engineer for the rest of your life.
Religion isn't the opiate of the masses anymore, Karl. IDEs are."