Everyday I ride my bicycle to work at the University of Arizona. I go right past the University President’s house, and his custom golf cart sits out front. I got to thinking about how his golf cart would look if it were built the way most software is designed. For instance, it’s almost literally a straight line from his house to his office in the the Old Main building on campus, so I imagine the cart would have no steering wheel. It would probably seat just one person. I doubt it would have brakes or even acceleration. It would just go one speed when you turned it on, in a straight line, and, when you get to the end, you would turn it off. When the President wants to go home, he’d have a few strong men pick up the cart and turn it around to point back towards his house. Since it’s usually sunny in Tucson, probably it would have no roof or windshield because those weren’t needed on the day the cart was built.

So much of the software I’ve seen and used seems to built to solve exactly the problem the original coder had and little else. That means the programs have hard-coded values like paths to input files or databases or parameters that change the output. There is usually little to no documentation or any attempt to verify that the program would work under various conditions. I’d like to think that, at the end of reading my book, you would think about how a real golf cart seats more than one person, can go variables speeds and turn in different directions, how it has safety features like a roof and seatbelts, and is a generally useful vehicle that can be easily used by many people for many different purposes.