More Than Engineering
What do great engineering feats have in common with writing software? Let’s look at one of the biggest (many say the greatest engineering achievement of all time): Going to the moon.
Engineering is often called a by-the-book discipline. The engineering books of the day couldn’t get us to the moon; there were far too many significant unknowns. NASA wrote the book as it went along.
There are two ways of handling unknowns. Science, with experimentation, testing, and verification, is one. Going to the moon required massive scientific investigation. No one knew the effects of prolonged weightlessness. (That’s what we call it, but it’s really falling—all the time, non-stop, 24/7.)
The other approach to unknowns requires human ingenuity and intuition. That’s why NASA wanted experienced pilots. As he approached the moon’s surface, Neil Armstrong was running out of fuel as numerous alarms sounded. He made the right choices.
Solving this second class of unknowns is sometimes called a Black Art. If its practitioners succeed more often than not, you can’t call it guesswork. Neil Armstrong was a highly experienced test pilot and he’d faced the unknown many times before.
In the 80s, the powers that be decided programming should become Software Engineering. Unfortunately, it didn’t connect to other engineering disciplines. At the college level, it was more likely found under Computer Science.
So, what is programming? Is it science? Engineering? Or a practical art? Bismark said, “Politics is the art of the possible.” I say, programming is the art of the practical. However, the practical arts don’t have the academic standing of science or engineering.
All engineering is based on scientific principles. All practical arts are based on engineering principles. But the final product comes from the hand of the practitioner, not the engineer or the scientist.
To design a house, an architect obeys the laws of physics, follows engineering guidelines, and uses 3-D computer modeling to feel what it’s like to walk through it. Programmers exercise the software to feel what users will feel.
The NASA astronauts provided that feedback. They took the work of the engineers and the scientists and refined it into workable systems. This is where software is weakest today. It’s time to move beyond Software Engineering.