There is an interesting pair of essays about how universal “learning to code” ought to be over at Coding Horror: Please Don’t Learn to Code and a follow-up So You Want to be a Programmer. The first essay questions whether we really need more programmers, and whether learning some basic programming is that valuable a skill as compared to learning how to understand a problem and its solutions. The followup clarifies that what is being criticized is learning to code for the sake of knowing how to code, as compared to learning to code in order to solve a problem you’re motivated to solve.
As someone who teaches a programming course populated at least partially by students who don’t actually want to learn to program, I would add the observation that if you don’t want to program, and can’t envision a problem you would want to solve by programming, you’re going to hate learning to program, and consequently may not do it very well. I’m lucky that I’m not teaching a CS1 that is a required start to a curriculum, because it allows me to tell students that if they haven’t taken enough other courses yet to realize why they ought to be able to at least write a little code, they should go off, take other courses that interest them more, and then come back to this one when they realize how it will help them.
And that is the part of these essays that I like the most – the suggestion that if you are going to develop your skills or put effort into learning something (whether as part of personal-development or, I would say, part of being a full time student), find a problem you get excited about, figure out what you need to know to understand that problem, what you need to know to solve that problem, and let that guide your learning. As the followup essay says, “The toughest thing in life is not learning a bunch of potentially hypothetically useful stuff, but figuring out what the heck it is you want to do.”