It has not been mentioned that software engineering differs from other types of engineering (like civil engineering) in that it builds abstract objects (software) that are then expected to function in a number of differing material contexts (hardware). Think about how strange that is. Engineers building a bridge for example translate their ideas into specific arrangements of carefully chosen material. The software engineer builds for a limited number of reasonable architectures and for a virtually unlimited number of hardware in various states of disrepair. It is a testament to human ingenuity that software works at all as well as it does.<p>For this reason, the example Shuttle&#x27;s software misses the mark. Writing code for a single known device is by orders of magnitude a simpler problem than writing code for numerous permutations of hardware.