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
ifstatement inside of awhilestatement, we don’t have to worry about whether theifstatement 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 theifstatement will vibrate against thewhilestatement and one of them will crack. We don’t have to worry that chemicals in the environment will get into the boundary between theifstatement and thewhilestatement and corrode them, and cause a bad connection…. We don’t have to worry about whether the heat can be dissipated from thisifstatement through the surroundingwhilestatement.
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