Programmers: Users matter more than you (a rant)

Whenever I’m using a web application, and it’s disgustingly slow and requests often time out, I think to myself, “I’ll bet this is written in Ruby on Rails.” Then, I check the response headers, and sure enough – nine times out of ten I see the telltale “Server: Mongrel 1.x.x” header, indicating RoR.

Don’t get me wrong; I think Ruby as a language is great. Unfortunately, its implementation makes it 100% useless as a production language. Academically, it’s awesome. It makes for elegant, expressive code. But developers, please! Before you write your application in Ruby, ask yourself one question: “Do my users give a poop-flinging monkey about how elegant my code is”? The answer is that no, they don’t! Your application will be developed much less than it will be used. Make things better on your users and don’t use a slow piece of crap to run your application. I mean, think about it for a minute. You’re using an interpreted language to run your application layer? And you’re running it from a webserver written in an interpreted language? Don’t you see anything wrong with that?

I know that Ruby’s creator is hard at work on a bytecode interpreter, and if he can make it fast, I will be 100% behind ruby. But for now, stick with something fast. You can throw a bunch of hardware at the problem, but it’s not going to change the fact that you are sacrificing your users’ experience for your own laziness and programming enjoyment. Is it more important for you to have nifty fun writing the application, or for your users to have nifty fun using it? If your answer is the former, you are not a software engineer.

Ruby is not the only culprit here. For example, take ColdFusion. What a piece of garbage! MySpace is one of the high-profile sites that use CF, and half the time it doesn’t even work. When requests do successfully complete, they take far too long and make me want to pull my hair out (thankfully, I rarely use MySpace). If you think that these people don’t have racks and racks worth of servers, you’re kidding yourself – and yet, their user experience is awful because they have bad code running on a bad platform. Now, look at Google. Have you ever done a google search and waited for more than a second or two for the response to come back? No, you haven’t, because Google doesn’t fuck around with crap code and crappy, interpreted languages like ruby and coldfusion. They stick with C, Java, and Python because they don’t want to waste CPU cycles on executing code in the least efficient way possible.

So am I advocating that everyone writes their web applications in C++ instead of scripting languages? It doesn’t really seem practical to recompile your whole application every time you change a template, does it? Well, why the hell not? How long would this really take you? Oh, but it doesn’t seem practical to manage your own memory instead of letting a garbage collector do it for you. Again, why the hell not? Have we as engineers sunk so far that we can’t even trust ourselves with memory management in our own application?

I’m going to digress here into something that has been haunting me for quite some time: that I fear for the future of computing. The generation before us; that generation that pioneered personal computing – these were smart fucking people. They are the people that wrote code in assembly, the people that designed the digital logic inside the CPU!. If you weren’t smart and passionate about computers; if you didn’t “get it,” you did something else with your life.

Nowadays, computers are where the money is. Universities are flooded with idiots who couldn’t program their way out of a paper bag, and are majoring in computer science anyway – these people muddle their way through, taking tests on computer science theory that they’ve managed to memorize long enough to write it down on the test sheet and pass. They do this for four years, then they walk across the stage, shake the dean’s hand and get their shiny, wholly undeserved diploma, which they take to the nearest MegaCorp and get a job sitting in a cubicle twiddling their thumbs and writing the occasional piece of awful code. There are still smart people out there, but they are far outweighed by the number of people that really shouldn’t be involved with computing in the first place. As a result of these people, software is getting worse and worse.

These are the people responsible for things like Windows Vista. I mean, Microsoft has more money than pretty much any other company – you expect me to believe that they don’t have the resources to make a really good operating system? Sure they do – but their cubicles are clogged with the excrement of universities that are basically businesses, selling diplomas instead of ensuring smart graduates. Don’t get me wrong; I’m sure that Microsoft has many of the smartest programmers around. But the rest of them are making Microsoft’s software worse. Whoever’s in charge over there, here’s a tip: ditch the cumbersome, slow-moving teams of mediocre programmers, and trim it down to surgical teams of the really smart ones. Throw away Vista and start over from scratch. You can make a really good operating system, and your users are counting on you to do that. Schlepping crap like Vista and getting away with it based on the fact that nobody has any real choice is a perversion of the free market.

Even more than software, I fear for the future of hardware. Do you know what a bloody friggin’ genius it takes to design the chips inside your computer? Digital logic design is not kid’s table shit! It takes really smart people to make hardware better rather than worse. Most of my class failed digital logic design at least once; I’m one of the few who got through it with an A (despite my intense dislike of busywork) because the DLD professor was one of the few at my university who understood how important it is to separate the wheat from the chaff. Even so, I could never design a modern processor, or even be particularly useful as part of a team that does so. Because I have no illusions about the fact that I am just not smart enough for that task. And you can see the evidence of this problem – processors really are getting worse. They cover it up by shrinking transistors, jacking clock speeds and cramming in more and more cores – but the fact is, if the industry was full of really smart folks (like those from the original AIM alliance, who created the PowerPC architecture) then processors would be a lot better today.

Anyway, thanks for reading my rant. I only hope that if you’re a software or hardware engineer, you’re one of the smart ones. And if you want to tell me what a moron I am, how great ruby is, or what have you – don’t bother; I’m not really interested in hearing from you.

Leave a comment

You must be logged in to post a comment.