I’ve been taking an introduction to programming class on Coursera, and it’s been going well so far. Recently, I wrote a small extra-credit essay for the class, which I’ve decided to recycle here. Why not?
Programming is often associated with a certain stigma of being archaic or overly complicated. I’ve certainly heard these references when I mention my enrollment in this Coursera Python class. And to a certain extent, I absolutely understand the sentiment. In my experience the complexity isn’t found in the process itself, but in the way familiar tools have different rules when programming. We’re all familiar with indents, punctuation, and language, however when we’re learning to program, these tools are often used differently. It’s quite a hurdle to re-program years of familiarity with a new set of functions. It’s like saying that the familiar park, reverse, neutral, and drive of your car on rainy days now perform different functions. Our minds have to make some plodding steps to not assume the old familiar rules. Without a proper, and paced, introduction to these variations of the rules, then it’s very easy to be overwhelmed.
Additionally, there is a cultural stereotype associated with programming. We commonly see media portraying programmers as heavily educated nerds slaving away for countless hours writing in cryptic languages. Not unlike mythical wizards in a sense. We apply an unjustified amount of mystique to what is in fact a fairly common practice. While all of these preconceived notions don’t directly make programming more complicated, they certainly seem to frame our mindset and expectations.
Beyond the initial leap of overcoming the expectations and the new rules for familiar tools, we then have to find a practical use for our new knowledge. Anyone who has ever studied a foreign language is familiar with the adage of “use it or lose it.” We can follow the weekly instructions flawlessly, but if there’s no practical application to practice our new skills then it can be very difficult for a programming language to take root. The early stages of learning to program can be especially tough to practice. There isn’t much call in the real world for a program that can be outperformed by a scrap of paper.
Programming ultimately requires extra diligence and sustained momentum in the early days of learning. Getting past our infant programmer stage quickly seems to be key to growing our early programming skills into a language we can genuinely use and enjoy.