I spent some time last night perusing Bret Victor’s post titled “Learnable Programming.” It’s a through but easy-to-follow post on introductory programming. Writes Victor on the challenge of programming:
- Programming is a way of thinking, not a rote skill. Learning about “for” loops is not learning to program, any more than learning about pencils is learning to draw.
- People understand what they can see. If a programmer cannot see what a program is doing, she can’t understand it.
Thus, the goals of a programming system should be:
- to support and encourage powerful ways of thinking
- to enable programmers to see and understand the execution of their programs
Alan Perlis wrote, “To understand a program, you must become both the machine and the program.” This view is a mistake, and it is this widespread and virulent mistake that keeps programming a difficult and obscure art. A person is not a machine, and should not be forced to think like one.
How do we get people to understand programming?
We change programming. We turn it into something that’s understandable by people.
If you haven’t ever got started with programming, set aside one to two hours and go through the post. It’s aesthetically pleasing, incredibly detailed, and best of all: fun! I guarantee you’ll learn a ton.