The Cathedral and the Shed

I spent yesterday reading, debugging, and then fixing a Java program. What a pain in the ass. If I manage to go another 5 years until I do Java again, I’ll be happy.

The problem with Java is that the language provides the tiniest little basic units, and everything else you need you have to build. Or use other things that other people built for you (but first you have to learn about them and understand their quirks). That all makes sense from a theoretical viewpoint, but it is just much harder to use than a language like Perl which has very well developed, robust primitives whose quirks I already mastered years ago.

I was thinking about an analogy in the shower this morning. Imagine you are standing in a meadow. To your left there is a shovel and a chisel. To your right are a bunch of bins, each with a neverending supply of various building supplies. You see doors, windows, hunks of tin, bolts, sinks, even a fireplace (with the fire already lit!).

You feel a drop or two of rain. You look up in the sky and see a huge thunderstorm on the horizon heading directly at your meadow. You need a shelter fast. Are you going to:

  1. use the shovel to open a quary, cut stones, mix mortar, and build a cathedral
  2. use the building materials to quickly throw together a shed to keep the rain off

That’s what programming in Java and Perl feel like to me. With Java, you can build vast, intricate, beautiful structures. There will be mighty foundations, delicate spires, graceful buttresses, not to mention exciting spiral staircases and mysterious passages. It takes time, hard work, imagination, and finesse. Usually, the result reflects the amount of work that went into it. With Perl, you can make something that solves your problem right quickly and easily. It won’t be vast, it certainly won’t be beautiful, but it will keep the rain off.

Programmers are the kind of people who love vast intricate systems. The best programmers I have ever known are often less interested in the full context of the system than in the beauty and elegance of their part. They like writing code. When there are existing parts available to them that are not quite right for the job and prevent them from writing code to do it right, they often make their own thing that they trust more.

At the Sagrada Fami­lia in Barcelona, I saw both kinds of construction in one place. The cathedral builders know that it will take a long time to finish. So they built a stonecutting shack out behind it. Gaudi also designed and built a school on the property with the Sagrada Familia for the children of the workers. It was built cheaply of simple materials.

Even Gaudi knew that sometimes a humble shack is enough to solve the problem.


Leave a Reply

Your email address will not be published. Required fields are marked *