Simple ain’t (always) Easy

There is a certain kind of joy in taking care of the things you own. Learning to use your tools in the best possible way. Using simple tools instead of the latest does-it-all gizmo. Sometimes this means going against the flow: Every time someone sees my razor I get strange looks. “Why don’t you just use an electric one? Or a multi-blade cassette razor?” Because I like shaving with my Merkur. Sure, it takes longer to learn, a little longer to shave correctly, and you don’t find simple razor blades any more in most stores.  Internet to the rescue, and I have a stock of 100 blades at home. With one blade lasting a good week, I won’t have to buy new blades for two years. Did I mention the cost? Ten Euros. Add the soap and you’re at 20. That’s ten Euros a year for shaving. Oh, and no more ingrown hair. No more blood. No more stubbles.  Aftershave? Haven’t used one for ages.

Or cooking. Honestly, how many cooking knives do you own? I have ONE. Once you learn how to properly use a real knife, you don’t need all the other stuff.  Unless you’re a professional chef of course. Take good care of your knife, and it’ll last you a lifetime. Learn how to use a Japanese whetstone. I did have a short period of “fuck this, once it’s blunt I’ll just buy another one”, but I missed my whetstone — those cheap sharpening devices just don’t cut it. Another one: Learn how to properly use a cast iron pan.  If you treat it carefully, your grandchildren might use it one day without noticing its age. Beat that, non-stick crap!

Oh, and if you haven’t yet, learn how to drive stick. Better fuel economy and the ability to use the engine to break are more than worth the learning curve. The design of a manual transmission is way simpler than an automatic one, making it lighter, less error prone and cheaper. And you get a few percent more performance out of your car. And the priceless look on the engineer’s face when I told him that the skids in my car are still the original ones, never exchanged them. They are twice their usual replacement age, but still good as new. Engine break FTW.

I could go on and on. The lesson here is that simple is better than complex.  Sure, you have to learn a bit more, and be a little more careful when using simpler stuff. But the reward is less breakage. Less cost. Less hassle.

There are lots of paradigms based on simplicity in software engineering. KISS (Keep It Simple, Stupid) for example. Or Small Is Beautiful. And or course the venerable Worse Is Better. Unix was able to beat its contenders in part by being simpler: It did less. Programmers had to take care when executing a syscall; if it failed, you just repeated it, and most of the time, it worked on the second try. It would have been better to correctly save and restore the process state during an interrupt, but simply failing and expecting the program to re-execute the syscall is much simpler. Unix won.

When I look at programming languages today, most of them are incredibly complex beasts. The number of keywords and operators is skyrocketing. Early examples would be Perl or C++, but even C#, D, and the oh-so-simple Java sport an impressive number of stuff you have to learn before you can use the languages to their full potential. I’m not talking about standard libraries here: The languages themselves are complex enough. Don’t get me wrong, I think D is a pretty nice language, and at work I’m a happy C# user, but sometimes I’d like to drive stick while programming. And for me, this doesn’t mean C.

This is one of the reasons why scripting languages are becoming more and more popular. Less cruft, less burning hoops to jump through just to keep the compiler happy. And this is why I love simple languages like Scheme (there, I said it), Forth, or Erlang. Ummm… Erlang, simple? Yes. Once you get the hang of its Prolog-esqe syntax, it’s an incredibly simple language, and the OTP approach of Letting It Fail is an excellent example of Worse Is Better.

My personal heaven would be Erlang for servers, Forth for embedded stuff, Scheme for everything else.

Why the hell aren’t these languages more successful?

Because they don’t look like C. And because Simple and Easy are two different things.


2 thoughts on “Simple ain’t (always) Easy

  1. Pingback: Simplicity, the 2nd | (define answer 42)

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s