Learning to Code Enables Coding to Learn
As someone who had been programming for more than two decades when you were flipping people off for suggesting you get into programming, I whole-hearted agree with your assessment that programming is a difficult skill to master. A characterization (at times correct) of the “type of guy” found in the article’s title picture is one of smug superiority. It’s the attitude of “I’m a programmer, it’s really hard, and you mere mortals couldn’t possibly comprehend it.” I freely admit, I’ve been a guilty party to that in my lifetime. When reading your article I felt a lot of that same vibe. It’s entirely possible I’m reading something which isn’t there, but that’s how it struck me.
The primary motivation surrounding teaching kids, or even adults, to code is frequently unrelated to increasing the ranks of professional programmers by 202x. This includes, but is not limited to, some of the organizations you mentioned. Software/programming/coding is intertwined into an ever-growing portion of our lives. Understanding it, even if not for career aspirations, is becoming almost ubiquitously relevant.
In the last few centuries, learning to read and write became an ever increasing necessity for those looking to improve their lives. The point of learning to read and write wasn’t necessarily about become a professional writer (which is still hard and requires lots of practice and study and is something not everyone is capable of, myself included). The point was providing access to knowledge and communication present in the society. Learning to read enabled reading to learn. In many ways, a literacy of the 21st century will be coding/programming/software. Learning to code enabling coding to learn.
I wish I could take credit for that metaphor but it’s someone else’s. If I could remember who it was (my memory isn’t what it once was), I would give them credit. If someone knows who that person is please let me know. I use it often and would like to give proper accreditation when I do.
Even with this trending reality, few children are exposed to coding. Unless a kid is fortunate enough to attend a well-off suburban school, there’s a decent chance s/he won’t even have exposure opportunity to programming until high school, and sometime not even then. The few curriculums including it are often part of the “business” department and/or are just “after school” programs. Note, I’m not minimizing the value of “business” departments. However, folding CS into them perpetuates the mindset of the sole benefit being vocational. Many students take Biology, Chemistry, or Physics (most high schools require multiple years of Science) even though a small fraction will become Biologists, Chemists, or Physicists. And we certainly don’t cram those subjects into the business department.
Yes, most programming is text-based. But text-based coding can become a barrier to entry. So lots of well meaning people, many who could care less about meeting quotas for the number of career programmers, have developed ways to introduce coding with easier digestion potential. On the other hand when I was an obnoxious teenager (flipping off people for suggesting … well … pretty much anything) many of the professional programmers were still using punch cards. They would scoff at (or alternatively be jealous of) programming through an electronic, real-time text editor (much less a modern IDE). And I’m sure the people who had to manually position physical vacuum tubes probably saw punch cards as both “not for real programmers” and much simpler. I’m not suggesting the block-based coding paradigm will become the future dominant model. However, I think history would suggest something simpler (more productive, more inclusive) will emerge sometime.
Again, for the heart of your article I do agree that programming is something which takes time and practice. If the vibe I’ve put out is an over-critical one, it wasn’t my intent. Becoming a better programer is almost entirely driven by hands-on experience. Learning, often the hard way, is usually the surest way to achieve mastery (or at least progress towards it). To whatever extent people are giving the impression that vocational programming is something which can picked up casually on the side, I agree that we should call them out. My hope was to suggest that exposing more people to coding is more than filling software developer openings of the future.