Computer programs are like a working engine in many ways. I don’t care how my car engine runs as long as it does. The only thing I have to do is to turn the key and make sure the gas tank isn’t empty. An engine is a complicated bit of machinery that man has honed and improved for 100+ years. So every car engine in existence is the result of 100 years of development and probably millions of man hours, but we all take it for granted. The same goes for computer programs. Programs are really, really big, Windows Vista probably took the same number of man hours as the Great Wall of China, and possibly even more. But all I want is for Windows to work when I turn the power on. I don’t care that it has hot-swapping for USB devices, or that it uses the hard drive as virtual memory, I just want Windows to work.
If I turn my car key and my engine doesn’t rev up, there is a problem. The problem might be a small one, like the battery is dead, or a big one, like a blown gasket. The point is that everything has to be working 100% correctly in order for that engine to start when I turn that key. The same thing goes for computer programming. Programming is so precise that every single character means sometimes, there are no extra commas or misspelling. A misspelled variable is a variable that doesn’t exist. At times computer programming is excoriating painful because you know what you want to do, but sometimes in haste your fingers mistype. When a computer program crashes there are 100 things that might be the problem, much like a car engine.