I'm a Lazy Bum and it's My Greatest Strength

From this rant.

I believe that computers are meant to serve people and not the other way around. That means that if something inherently simple is difficult to do, it's wrong.

Not everyone agrees with this. A surprising number of people like things to be difficult. I have never understood this, but it is a fact. Some people revel in the intellectual studliness of mastering, say, C++ template programming or x86 assembler. I don't. I think C++ is a pain in the ass. Life is short, and I would rather spend my allotted time skiing or making love to my wife than worrying about whether or not I need to define a virtual destructor in my base class in order to avoid memory leaks. And that means that when I want, say, for something to appear centered on the screen, I want to be able to do it by typing "
center" rather than "margin:auto". If I can't tell a computer to center something by saying "center", then as far as I'm concerned the computer is wrong, not me.

Like I said, not everyone buys in to this worldview. I don't get it, but it is surprisingly common. I think it might have something to do with job security. I first encountered the complicated-is-beautiful mindset when I was working for NASA. I had an idea for how to simplify spacecraft sequencing and make it less error prone. I figured everyone would love it. To the contrary, the establishment fought the idea tooth-and-nail (and still does to this day). And this attitude is 
everywhere. It's the reason the tax code is so fucked up. It's the reason the law is so byzantine. It's the reason that languages like C++ and Perl thrive.

I like simplicity. I think the computer should have to conform to my brain and not the other way around. 

Different people have different ideas of what it means to "work". For me, the ratio of effort expended to the quality of the [finished product] is paramount. I want to put forth as little effort as possible to get something that looks decent. (
Yes, I'm a lazy bum. It's my greatest strength. Laziness is a powerful motivator for finding more effective ways of doing things, and it has served me quite well.) Everything else is secondary.
(emphasis mine)
I agree with everything the original author said except for the part where he muses that some people love complex computer issues because of job security. I think it's instead because they like feeling smart, and mastering something complex is certainly something that can make you feel smart. Inventing complexity where there is none, however, is not smart and the amount of wasted effort therein could probably fuel an economic recovery.


Kay said...

Wife? You have a wife?

Ben said...

No, I do not have a wife. Most of what you read (the indented part) was an excerpt from someone else!

Kay said...

Oops. I wasn't reading closely enough. Thanks for clearing that up.

Laura said...

Mom, that is exactly what I thought at first too, I had to double take!

Ben said...

The quoted text is now both doubly-indented and in italics.

Ben said...

It was doubly-indented before, FYI.

Mike Machenry said...

Yeah this post hits on one of my biggest pet peeves. Being able to memorize and master something complicated is by far one of the most common was for insecure people to convince others they're intelligent. You should go to a Perl Mongers' meeting sometime. There are occasional one-ups-man-ship battles about who can remember what each of the ${punctuation_mark} variables do.

Chad said...

I, on the other hand, go crazy when people refuse to solve problems because they're too lazy or it's too hard. At the end of the day, there will always be something you need to do that the computer won't do for you. Making the customer happy is more important than how difficult something should be.

Ben said...

Well, I take a more practical approach to the invented complexity in computer systems when it comes to programming.

I sure as hell don't punt the problem because the solution is inelegant. You have you use your laziness as a motivation to never have to solve the problem more than once. In short: write some abstracted function/object/whatever so that you never have to solve it again.