There are lots of good reasons not to learn programming: It’s hard, and there are lots of other things to learn. There are lots of bad reasons too, often bemoaned by older, grumpier curmudgeons on the internet, angry that someone has a hobby and isn’t taking it as seriously as they do.
In a recent piece You’re not a programmer and that’s ok, the author decries that people are trying to learn:
But if you aren’t dreaming of becoming a programmer — and therefore planning to embark on a lengthy course of study, whether self-directed or formal — I can’t endorse learning to code. Yes, it is a creative endeavor. At its base, it’s problem-solving, and the rewards for exposing holes in your thinking and discovering elegant solutions are awesome. I really think that some programs are beautiful. But I don’t think that most who “learn to code” will end up learning anything that sticks.
Although punctuated with well placed jabs at the industries espousing “Learn to Code in 20 minutes”, the moral is simple: Don’t bother trying. Jeff Atwood made similar screeches in Please Don’t Learn to Code
After poking fun at a mayor’s hobby, he then neatly demolishes a couple of straw-men, drawn together with the same old assumptions that the only reasons to learn to program is to get a job, change the world, or to solve a problem. To Atwood, learning to code is as important as learning plumbing, but I can make similar comparisons too: Why bother learning mathematics? You’re not going to be an astrophysicist. Why bother learning to write? You’re not going to become a poet. Why even bother learning to play guitar, you’ll only be crushed by the music industry, and so on. I’ll stop before I get to yet another car analogy. Encouraging professionalism doesn’t have to come at the expense of learners or hobbyists.
Personally, I don’t advocate learning to program to create more fuel for startups to burn—I just I think it’s fun. I’m a fan of Seymour Papert, who wasn’t trying to create a workforce, but trying to give children a sandbox for their ideas. The computer is not just a machine to enable bureaucracy, but an opportunity for people to play and create. Who gives a shit if they don’t learn the arcane corners of the ANSI C standard.
My advice is to ignore the monks in their monasteries, complaining that teaching the plebeians to read and write won’t give us better software. When you ask them how to learn, they will tell you to learn how they did, on awkward and old machinery, in what they describe as character building exercises, and yet at the same time they will dismiss you if you learn for the same reason they did: Curiosity.