I just read this article: Programming is Hard. I agree with several points made therein, but I have a different way of explaining how hard it is to be a programmer. I like to ask, by analogy, how hard is it to learn to play piano?

The answer depends on your goals:

  • Learning the basics and writing toy applications is easy, like learning to play Mary had a Little Lamb with one hand.

  • Becoming a professional programmer who builds robust real world applications is hard. It takes years of work, just as becoming a professional pianist takes years of dedication and practice.

Most programmers live somewhere between those two extremes - able to enjoy coding and creating small to medium sized programs that solve interesting problems that give them a sense of accomplishment, just as many piano players have enough skill to enjoy making music.

So here’s my advice whenever someone asks “should I learn to code?":

If it sounds fun to you, go for it! If you find that it’s not for you, you’ll at least gain some insight into how the digital world works. And you’ll be able to play the equivalent of Mary Had a Little Lamb on a computer (we call it “Hello World”). If it is for you, you’ll get this feeling that you’re being let in on a way to control the universe, a superpower, and you’ll take it to a level dictated by your personal drive and determination, perhaps all the way to a new profession.

But don’t expect to play Beethoven’s Fifth after your first lesson. And bear in mind that some people have innate gifts that take them further and faster than the rest of us. But don’t let that discourage you. You don’t have to be the greatest programmer ever, only good enough to get something out of it.

So, to answer the question in the title: No, I don’t think everyone should necessarily learn to code, but no one should be afraid to try. And if you don’t like it, maybe try the piano.