Slow is The New Fast
My last post had been brewing over a week or so of related reading; funny, the synchronicity of things sometimes. In light of the hard evidence Steve Yegge presented, it’s amusing to see Joel Spolsky spreading FUD:
[T]here are three and a half platforms (C#, Java, PHP, and a half Python) that are all equally likely to make you successful, an infinity of platforms where you’re pretty much guaranteed to fail spectacularly when it’s too late to change anything (Lisp, ISAPI DLLs written in C, Perl), and a handful of platforms where The Jury Is Not In, So Why Take The Risk When Your Job Is On The Line? (Ruby on Rails).
Someone should tell Amazon that they have failed. And for that matter Yahoo!, Google, the BBC, and countless other shops small and large that use Perl.
Anyway, Joel is typically known for holding opinions that are occasionally, shall we say… conservative, but basically smart. This time, however, he delivers a piece of pure and incontrovertible garbage if there ever was one (actually, he delivers at least one more, but I’ll skip the other stuff):
[Ruby]’s known to be slow, so if you become The Next MySpace, you’ll be buying 5 times as many boxes as the .NET guy down the hall.
Really? I thought Ruby web apps scale the same way as Java web apps and .NET web apps and Perl web apps and web apps in Blub and Bob and any other language: lots of cheap frontend reverse proxy boxes to make the facade fast and big iron and replication, partitioning etc. to make the database backend fast.
Web apps are almost invariably database- and network-bound – not CPU-bound. Writing in .NET will just make your code faster at waiting for your queries to run and the output to be delivered.
But it will also make your codebase at least 5× larger and 3× slower to build. And between buying 5× as many boxes and hiring 5× as many programmers (pay no attention to the math behind the curtain), I’ll go for more boxes, every time.