Jan 23, 2017
This is Part 3 in a series about how learning how to program could affect your career and some of the experiences I've had with programming in mine
A quick Google Search shows hundreds of sites that proclaim you should learn how to program. I've personally doubled my salary learning how to program and it was a strong factor in SpaceX deciding to hire me. However this does not mean you should learn to program and there are many cases in which I have recommended that people don't learn programming.
Some reasons that I read, or I hear, usually follows the lines of
These pitches are echoed all over the place, even from Forbes magazine. A lot of times it's accompanied by a pitch to then pay money for a bootcamp class, or book, or subscription to an ad sponsored email list. In these cases there's a clear reason why you're told to program, so someone else can earn money.
This is not to say there aren't altruistic people teaching you how to program. There are plenty of well-meaning people that also give the same advice, but again I strongly believe this advice does not universally apply.
If you're learning programming with the sole intent of making money easily, or getting a "work from anywhere" lifestyle, consider the economics of this. If programming was easy, if anyone learn it in 6 months, if you can work remotely, why would companies pay you a nice salary to do it? When I say you, I mean you, versus a person in India, or Mexico, who can work for one tenth of the cost. Or you versus the high schooler down the street that just graduated. Cal Newport writes an excellent blog series, one of the points being that to be valuable, you must provide unique value to someone else. What will make you a more valuable programmer versus anybody else?
It's true, computers are becoming and increasingly integral part of life, but just because they're around isn't itself a compelling reason to learn how to program. There are many objects that are common place, such as cars and houses but rarely do you see the advice "You live in a house, you should build your own", or "You use your car, you should learn how to make your own transmission".
Conversely programming itself is an abstraction of physical transistors or byte code, but usually when people talk about "learning programming" they're talking about an arbitrary middle layer. Of course learning to program is a step in learning how computers work, but it's like saying that if you learn how to change your oil you understand how your car works.
I commonly read about how "English Majors" should learn programming. This one bothers me the most because implies programming is a superior skillset to whatever a person already knows. I feel like approach is largely negative, and even if it were true, is not a good way to convince people to program. I feel that people should be interested in an activity for its merits, rather than being scared into it by being told that their previous choices were largely mistakes.
If you look past click bait titles there's some underlying truths to how people generate value from their skills.
I write English. There are other people that also write English such as JK Rowling, Tom Clancy, and J.R.R. Tolkien. Yet those people were paid millions of dollars for their words. I doubt anyone will pay me for the words on this blog. The difference is those people have mastered the English language in their own unique way through years of hard work and practice.
Learning to do program isn't free, even if Youtube videos or books cost $0 dollars online you'll need to spend many hours of your life focusing on learning programming (or any other skill really).
Pay attention to the skillsets of the people that earned value from programming, usually people like Bill Gates or Mark Zuckerberg are examples. Those people were good at programming, but they were also good at other things, especially leadership and figuring out what people wanted. A good programmer that can't communicate or work with others usually does not have a great life. An unfortunate example of this is Phil Katz, who was an extraordinary programmer, but had trouble working with others and arguably did not have an ideal life in his later days. Strongly consider what skills you have that you can work on outside of programming constantly.
There's a lot of good reasons to learn how to program, but the reasons above in my opinion are not the right ones. If you're deciding to program I would carefully evaluate if you're being swayed by arguments such as the one above. If so think hard about whether learning programming is right for you. In the next post I'll talk about reasons why learning programming can be beneficial.