> Engineers design materials, structures and systems while considering the limitations imposed by practicality, safety and cost.
That's where I begin to say that computing comes up short as 'engineering':
The problem is that too often in computing the "design" work, just the design work alone, before construction, cannot really tell what the "practicality, safety and cost" will be. So, too often in computing we have to build the system and then test it to know what its "practicality, safety and cost" are. That was often the situation in the construction of medieval cathedrals: Some examples stood; some fell down; some on the borderline got weaker over time. Apparently eventually the strong cathedrals were built mostly drawing from experience, that is, closely copying what had already worked before. That technique is trial and error and copying and not really the 'design' of engineering.
If bridge engineering were the same as software construction, then just to know how strong the bridge was we'd just have to build the bridge and then test it. For rocket engineering, to know if it could reach orbit we would have to build and launch it. Indeed, instead, in rocket engineering we can determine the rocket trajectory that will put the maximum payload into the desired orbit.
That's where I begin to say that computing comes up short as 'engineering':
The problem is that too often in computing the "design" work, just the design work alone, before construction, cannot really tell what the "practicality, safety and cost" will be. So, too often in computing we have to build the system and then test it to know what its "practicality, safety and cost" are. That was often the situation in the construction of medieval cathedrals: Some examples stood; some fell down; some on the borderline got weaker over time. Apparently eventually the strong cathedrals were built mostly drawing from experience, that is, closely copying what had already worked before. That technique is trial and error and copying and not really the 'design' of engineering.
If bridge engineering were the same as software construction, then just to know how strong the bridge was we'd just have to build the bridge and then test it. For rocket engineering, to know if it could reach orbit we would have to build and launch it. Indeed, instead, in rocket engineering we can determine the rocket trajectory that will put the maximum payload into the desired orbit.
I explained further in
http://news.ycombinator.com/item?id=4356303
in this thread.