Hello all,
Did you know that writing software is fundamentally easier than other branches of engineering? Richard Stallman once explained this quite eloquently:
[I]f we put an
if
statement inside of awhile
statement, we don’t have to worry about whether theif
statement can get enough power to run at the speed it’s going to run…. We don’t have to worry about whether it will loop at a speed that causes a resonance and eventually theif
statement will vibrate against thewhile
statement and one of them will crack. We don’t have to worry that chemicals in the environment will get into the boundary between theif
statement and thewhile
statement and corrode them, and cause a bad connection…. We don’t have to worry about whether the heat can be dissipated from thisif
statement through the surroundingwhile
statement.
Writing software is also fundamentally easier than logistics. We don’t need to worry about whether the if
statement will be lost because we won’t know inside which of our while
statements it’s going to be. We don’t need to worry about how much delay there will be when we transfer it from a while
statement to a for
statement under heavy traffic conditions.
If writing software is easy, why are good programmers hard to find and expensive to hire? Stallman explained this better than I could:
If we assume that the intelligence of programmers is the same as the intelligence of mechanical engineers, and electrical engineers and chemical engineers and so on, what’s going to happen? Those of us with the easiest field, fundamentally, are going to push it further. We make bigger and bigger things and eventually it becomes hard again. That’s why we can develop much bigger systems than the people in the other fields.
So there you have it: 1) At a fundamental level, writing software is easy; 2) Software systems are much more complicated than the systems of other fields.
The other day I was talking with a logistics professional who expressed his frustration at the difficulty the domain experts (i.e. the logistics professionals) have to transfer their business knowledge to the IT guys. This is a big issue and I think it has a lot to do with this fundamentally-easy-thus-extremely-complex peculiarity of software. I’m going to write more about it in the next few days.
Regards,
Antonis