Building software vs. building a bridge

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen

A question that's been with me since the end of the last century:

Why is building software different from building a bridge?

Brainstorm

  • The basic answer: Software is probably the most complex artifact created by humans
  • You can't see it
  • Interactions - network effect.

Software is complex

Back to our basic answer from above: Software is probably the most complex artifact created by humans.

It doesn't repeat

One way to illustrate the complexity of sofware: Ideally, programming code doesn't repeat itself. So, every extra line of code, adds unique complexity.

Now compare this with e.g., a bridge or a steam locomotive: The more you zoom in, the more repetetive it becomes: Big pieces of steel, are just endless repetitions of layers of atoms. And yes, bigger bridges are surely more complex than smaller bridges, but it doesn't increase by the gram of steel that is being added.

Example: Car electronics

Around the beginning of this century, I made a multiple-day trip with a friend in his lease car. I think it was a rather small Lancia. At one stage while my travel companion was driving, I was going through the car's owner's manual. This was clearly a car from the age of digital car electronics, judging by the staggering amount of features that it had.

One such feature was called follow me home. It meant that after you stopped and locked the car, its headlights would still shine for about half a minute, so that you could use the light to go to the house's front door, unlock it, and get inside.

I tried to imagine building such a function without digital technology and microchips. I think it wouldn't be too difficult, but it would add stuff: A switch, resistors, capacities and a bunch of wires going through impossible places.

Building this digitally ou contrary, wouldn't take much effort at all. The functionality was probably already developed, and there probably was already a digital unit to control the car lights. The main effort would be to add it to an already digital user interface + testing + adding it to the car's manual.

Example: Unix in your pocket

One of the unbelievable achievements of Apple, is that they were the first company who finally made Unix suitable for consumers - Mac OS. And than some years later, they achieved in my view something even bigger: They put this whole Unix box in a device the size of a deck of cards - The iPhone. And whether you're using an iPhone or an Android phone, the whole power of Linux is there at your fingertips. That thought can still boggle my mind.

See also