Despite the seemingly endless amount of resources dedicated to learning programming (Kahn Academy, MIT Open Courseware, Stanford’s free classes, etc.) available to people these days, it seems as though it’s harder than ever to learn to program. Now, it’s not because of a lack of resources (obviously); rather it’s because of what a new user can produce with these resources.
Someone coming of age in the 1980s when home computing was just starting to take off would find that not only was everything about a computer new and novel, but everything they did appeared to be at the forefront of computing. Every second of interaction was unknown, exciting, and precious. As a perfect example, you used to have to type in programs on the old Apple machines because disks to store the programs weren’t common/cheap enough. Want to find out what a certain instruction does or modify it to make it do something different? Go ahead, you’re the one typing it in.
Everything a user did felt like they were stretching the boundaries of the machine. Without the internet there was no bar to compare yourself to, only your friends and the cool things they did with their computers. Everything seemed new and as if they were the first person alive to come up with such a cool way of doing things. This, then as it is today, is incredibly addictive. During this time, doing one cool thing with a computer made a user fiend to do more. Inevitably, the user becomes so enthralled with the machine that they put in their 10,000 hours and poof, become masters of the machine.
Contrast this with today. Kids are growing up having smartphones, tablets, and laptops at ever younger ages, and are being exposed to beautiful, wonderful programs that can do so many cool things. Curious and interested, they may sign up for a programming class or read a tutorial online. What’s the first thing they’re taught? “Look, you can make the screen show this horribly antiquated and awkward string of words, ‘Hello, World!’. Isn’t that amazing?!” This kind of stuff wouldn’t even impress my 2 year-old niece, let alone someone who has access to the flash-bang-whiz 99c attractions of the world’s app stores. Even the most inexperienced engineers can build a fun, useful catapult just a short time into learning the material while building something as conceptually simple as a photo-sharing site takes years and years of practice and hard work.
Now, I’m not advocating for the exclusive use of higher-level languages when teaching a person to program or that humanity is doomed because we’ve advanced the state of computing so far that nobody will want to approach it ever again. I think that what really propels people to continue to learn and mature their skills is what drives most creative people: a desire to build, explore, and understand things regardless of the external sex-appeal what they’re currently working on. I know it’s the primary motivator behind my learning and growing. Mostly, it’s just interesting to note the differences between the environments of learning to program 30 years ago to starting to program now.