Saturday, May 9, 2009

What Killed Smalltalk: My Balls

People are talking about this.

Everybody else loves it, but I don't like it at all.

He calls C++ "a man's language" and says Java is an "estrogen" language. He later compares them, saying you have this "manly" language on the one hand and this "insipid" language on the other. Because the opposite of manly is insipid? And we get this right after a huge fight about sexism at Rails conferences? Is that epic sexism fail? Or is it merely regular sexism fail, mixed with timing fail? There's no doubt it's a dick move. The only question is, how big a dick move was it?

He goes on to this idea that C++ punishes you for fucking up, and that's a good thing. It's only a good thing for people who fuck up a lot. This is the same bullshit argument people had about Java vs. Ruby in 2006 and 2005. Before that, it was the argument against Python. It's the argument people used when they said nobody should use Lisp ever, and the reason superstitious programmers are afraid of lambda and eval.

The central assumption of Java was that you should remove dangerous features from languages so that the programmer can do a minimum of damage. It also makes Java a language where a framework like Rails could never happen, but the theory was that this tradeoff was a win. It's the chastity belt design principle, and it was trashed several years ago, back when nobody considered Ruby mainstream. I forgot who delivered the coup de grace, but that idea is deader than Subversion. Uncle Bob endorses it.

He also fails to grok that obscurity is not failure.

Uncle Bob spends at least 12 minutes explaining that TDD makes it easier to refactor. He cajoles the audience to use TDD. IN 2009! Every other conference has people arguing about which test or spec framework is the best; RailsConf wants to introduce you to the amazing new concept of TDD. He name-drops RSpec like that scene in American Pie where the dad tells the kids "keep it real, homies." This is why I skipped RailsConf. Last year they had us sitting through Joel Spolsky's Windows jokes, in a room dominated by OS X and Linux geeks. This year they wanted you to sit through an introduction to TDD.

Of course you should write tests. And he's right when he says that people need to stop hating on other languages. But most of his other points are tiresome bullshit, and wrong.

Like I said last year, RailsConf has taken a bad direction. It serves powerful, evil demons: the Sandpaper of Averageness and the Nyquil of Safety.

Bob's idea that we are becoming a profession is completely insane. Professionalism itself is ceasing to exist. Programming isn't turning into a profession - it's turning into a form of pop culture. That's why people use the term "rock star" to describe programmers.

Here's a quote from Alan Kay:

"Once you have something that grows faster than education grows, you’re always going to get a pop culture."

That's programming in a nutshell. Why else would we have this phenomenon of "rock star" programmers? What else could explain it? Why else do people joke that working in technology means working in a fashion industry? Alan Kay, one of the inventors of Smalltalk, hits the nail on the head here. Knowledge from wild young hackers grows faster than any educational system for structuring or preserving that knowledge, and the inevitable result is a pop culture. But a pop culture is no breeding ground for professionalism! That's absurd!

Professionalism in action

Here's a quote from Bob Martin in the Q&A after his keynote:

"Can you be too professional? No."

Oh, yes you can.

All you have to do is look at history. Programmers then:

Programmers now:

And Bob Martin says we're becoming more professional? This is bullshit on wheels! The only way programmers are becoming more professional is if time is moving backwards.

Uncle Bob's presentation was only appropriate for RailsConf at all if you disagree with what DHH said in the widely hated Tim Ferriss keynote - that programming in Ruby is just one step in doing unconventional things that make life better on every level. Uncle Bob argues for the Nyquil and the Sandpaper, saying things which are either obvious or false - and a few which are obviously false - while DHH goes off on a tangent and faceplants at a conference organized around his own framework. Was that fail? Yes. DHH's fireside chat with Tim Ferriss failed miserably as a keynote presentation, with people abandoning it in droves. But maybe it's good to fail every now and then. People who are afraid to fail never do anything interesting at all.

Of course when DHH built a Web framework in Ruby, it was unconventional. A lot of people at RailsConf jumped on a bandwagon, and that's not unconventional at all. But DHH's failed interview was in the spirit of what made Rails and Ruby big.

Uncle Bob, however, is trying to create a world where nobody ever got fired for writing a unit test. He doesn't just serve the Sandpaper of Averageness and the Nyquil of Safety; he worships them. RailsConf is turning into a haven for demon worshippers!

OK I'm done.

No, wait: Hitler! FUCKING HITLER!

OK. Now I'm done.

It's great to be a dynamic speaker who gives a thrilling presentation. But it's better if you can do it while saying things which are true.

Here's another quote from Bob Martin:

"Wolverine was pretty good. Great effects. Engaging plot. Good acting."

I rest my case.