The essence of programming

“There really wasn’t a lot this machine could do that you couldn’t do yourself in half the time with a lot less trouble,” said Richard, “but it was, on the other hand, very good at being a slow and dim-witted pupil.” Reg looked at him quizzically. “I had no idea they were supposed to be in short supply,” he said. “I could hit a dozen with a bread roll from where I’m sitting.” “I’m sure. But look at it this way. What really is the point of trying to teach anything to anybody?” This question seemed to provoke a murmur of sympathetic approval from up and down the table. Richard continued, “What I mean is that if you really want to understand something, the best way is to try and explain it to someone else. That forces you to sort it out in your own mind. And the more slow and dim-witted your pupil, the more you have to break things down into more and more simple ideas. And that’s really the essence of programming. By the time you’ve sorted out a complicated idea into little steps that even a stupid machine can deal with, you’ve certainly learned something about it yourself. The teacher usually learns more than the pupil. Isn’t that true?”

Douglas Adams, Dirk Gently’s Holistic Detective Agency