I confess to an almost addictive love for a good analogy to explain various ideas. One analogy people use is that they can use a car without understanding how it really works do they can use a computer without understanding how it really works let alone how to program. I think that is wrong. It’s a false analogy. Perhaps it might be more true if computers were as far along in development as cars are but they are not.
We have been driving cars for a hundred years and self propelled vehicles for many more before that. In fact this article (quick history of the car) reports on a a vehicle in 1769. We are nothing like 250 years into the development of the modern computer. Even Babbage (if we really want to count his work) wasn’t born until 1791. The computers built in the 1940s were more analogous to the early railroad trains than to cars though. I doubt anyone ran them without detailed knowledge of how they worked and were programmed. Likewise the cars of 100 years ago were so difficult and unreliable that you pretty much had to be a mechanic to run them. And in the history of computers I think we are closer to the move from trains to the early cars than we are to modern cars.
Oh sure you can use computers quite well without knowing how to program them. But if you are not an expert at the computer you probably call for help from an expert a lot more than you call for one for your car. Most people only call for an auto mechanic when something breaks down. You don’t call one to find out how to tell if it needs gas, put air in tires, turn it on or shut it off. I’ve gotten calls like those from computer owners though. If you are reading this chances are good that you have as well.
Now one could say that we have to make computers easier to use and that is true. We’ve made cars a lot easier to use – how many people still drive a standard transmission any more? Or roll up their car windows with a crank. Some cars have starter buttons rather than keys these days. Computers are not that easy yet. Especially the software.
Computers are tools and like many tools they can be used by both amateurs and experts/professionals. Take a table saw for example. My friend Philip is a highly trained carpenter. His wood work projects are master pieces. Every line is sharp and exact. I can use his tools but there is no way I can produce the quality of work that he does. But I sure wish I could. lack of training and practice is the main reason why I can’t. Computers are like that. If you know more via education (formal or informal) and practice you can do a lot more with them. Right now we teach most people the basics. The computer equivalent of banging in nails. Programming is to some extent the equivalent of bringing people to the next level of really understanding the tool and the proper usage of it.
Not everyone has to be a professional programmer any more than everyone has to be a professional carpenter. But in this day and age where computers are such an essential skill we do have to look at setting the bars higher. In my grandfather’s age people had to have a lot higher level of carpentry skill and kids were taught it. Computer usage may be this generation's carpentry. Programming should be a part of everyone’s basic education at least until we really get computers to be as powerful and easy to use as they have to potential to get. But we’re not there yet!
BTW no one is leaving any good analogies in the comments. Doesn't anyone have suggestions?