Over the past year, there's been an explosion of interest in terms of teaching children how to program in schools. This is a great movement; the world is becoming more digital by the day, and as we automate away jobs with technology we certainly need more people to help maintain that automation. While it's not a 1:1 replacement for the jobs that get lost in the process, it's an industry that's not going anywhere. Organizations such as Treehouse or Codecademy, and efforts such as code.org are helping educate others when it comes to the simple fact that these skills are useful in todays economy and cannot be ignored.
The thing is, as someone who's lived and worked "in the trenches" for the past seven to eight years, the rhetoric coming out of some of these movements is somewhat alarming. I think this is doing a major disservice to the future generations of programmers, and I wanted to take a minute to explain what learning to program really does for you, career-wise.
The Hidden Side of Programming
There's a few things these movements don't teach you about programming for a living.
- Simply learning to program does not automatically open doors for you - being successful in programming requires drive and hard work just like any other industry.
- A great deal of programming jobs are based in maintaining a code base, not "writing the future" or the latest amazing technology. Generally, we as programmers fear jobs that are just maintenance. It's not something that will be explained outside of the core of the industry - these jobs don't typically offer you advancement opportunities, they stifle your creativity and generally cause you to consider looking for a new job, often going against what can be (in many cases) a considerably decent salary.
- That aforementioned "considerably decent" salary will be driven down over time as more and more programmers become available. What's posited as a great reason to learn to code right now (money) won't necessarily be the case in a few years.
- Ultimately, what's often thrown around as you get further into this career is the fact that nobody wants to be doing this when they're 40 years old. At some point you either try to move up to management, or change careers (or retire, if you're lucky enough).
If you're following along, this isn't really considered a long-term career path. As the world becomes more and more digital, being able to program becomes the same kind of skill as being good with your hands and being able to follow some directions. Yes, knowing how to control the devices and technology around you enables you to "build out your dreams" or "own your destiny", but it's not a given - it requires levels of drive and dedication that some people aren't willing to put out there.
The entire world cannot be artists, or it wouldn't function. If I talk to any programmer I know who actually enjoys doing this for work, they consider themselves an artist first and a data wrangler second; it's not a particularly enjoyable field to be in just for the money. These educational programs and efforts sell themselves as a way to realize your dreams, and while that's a lofty goal, it's just not a given because you can now write some code.
Dissecting some Lofty Quotes
"Coding is the American Dream. If you want to be the next Mark Zuckerberg or even want a high-paying job, those jobs are for programmers. … And yet the opportunity to be exposed to that is going to the top 10 percent, and that is just morally wrong."
Hadi Partovi, Founder, code.org
I would hesitate to refer to "Coding" as the "American Dream". The role of a programmer is easily equated with any service-industry level job, albeit using more of your brain than your hands. You're still beholden to someone else at the end of the day, someone who controls when you get paid, someone who expects more and more with less and less. Programming is not a safe haven from the economic woes we face today.
I believe the point made at the end of this quote to be very accurate, though: the top 10 percent shouldn't have the only access to essential knowledge deemed 'critical'. The thing is that this statement could be used for just about any industry out there today - Law, Medicine, even Craftsmanship; our society doesn't enable easy access to this information any more than it does with programming. It's a larger problem that needs to be solved.
"Coders change the world. They build new, amazing things faster than ever before. Anyone with imagination can learn to write code."
Jeff Wilke, SVP Consumer Business, Amazon.com (via code.org)
This is an incredibly bland quote that glazes over the fact that most programming jobs don't actually entail building new amazing things. It is very, very possible that you will wind up maintaining someone else's code or editing a trainwreck that the person before you created. It's not all innovation and aspirations.
"We need people from all walks of life to learn to code. Control your destiny, help your family, your community and your country."
Mitch Kapor, Founder, Lotus Development Corporation & Partner, Kapor Capital (via code.org)
Another bland quote that implies that being able to program helps you control your destiny. If you have a desire to learn, you're in control of your destiny. Subscribing to a single discipline doesn't guarantee you success or even (necessarily) the chance to obtain your goals. It's a tool, a utility.
"Our programmers are our artists. They write beautiful code that millions of our travelers start to play with, to use, to help them travel better. It's a profound sense of power and satisfaction to have your work affect so many, so quickly, across the globe."
Dara Khosrowshahi, CEO, Expedia, Inc. (via code.org)
I've worked with a ton of programmers in the past, at different companies of varying sizes (startups, bigger companies, freelancing/contracting), all over the world, and as a result I don't feel off the mark with this statement: you wind up not caring about this two weeks in. As long as you're creating for someone else and some company owns what you build, you begin to back off of the idea of going all in. You stop being wow'd by the idea that millions of people use what you wrote - you realize it's the network effect, and you could go work any number of other computer-related jobs and have the same thing. This isn't to say you're a passion-lacking worker-bee; you might have aspirations of helping people around the world, and that's a good thing I'm just illustrating what's not often shown.
You'll see many deny this, though, as the tech industry has a problem with speaking out, and has what could arguably could be considered a very Japanese work ethic - you live and die by the company you work for.
Granted, we're not at the point of literally dying, but the hours and expected commitment have many sad comparisons. It's also not to say you have to fit that mould - it's just noting an environment you could easily wind up in. You're expected to care 110%, or they'll find someone else who can do what you won't.
"If you can program a computer, you can achieve your dreams. A computer doesn't care about your family background, your gender, just that you know how to code. But we're only teaching it in a small handful of schools, why?"
Dick Costolo, CEO, Twitter (via code.org)
Whether a computer cares about you or not is totally irrelevant in terms of whether you should learn how to program or not. We should be teaching it in more schools, but we should be teaching it for the right reasons - it's essential, and can be an art, but it is not some almighty savior.
"The extensive Treehouse library of step-by-step video courses and training exercises will give you a wide range of competitive, in-demand technology skills that will help you land your next dream job or build your startup idea"
"Our mission is to bring affordable Technology education to people everywhere, in order to help them achieve their dreams and change the world."
The company that's going to get involved with schools and teach children how to program... is presenting themselves as a way to land a dream job or become your own boss. The former isn't always the case, and the latter is in actuality such a rare occurrence that most people never have it. I greatly admire them for reducing the costs surrounding teaching this material, but positioning this as a world changing proposition for the people who choose to give it a shot is ultimately misleading.
So Should I Learn to Code?
Yes. A million times yes. Just do it for yourself; don't do it for the money (because it won't always be there), and don't do it because people tell you it's job security - you can't possibly do it forever, and unless you plan your retirement correctly, good luck when you're 40. If you don't get into it as an art, then you're getting into nothing but new-age labor. You become a mechanic of the digital age.
I believe programming should be taught in schools, and I 100% agree it's an essential skill in the world today. I do not, however, agree with the people who seem to believe that it's the most life changing thing you could do for yourself (of course, I encourage you to determine this for yourself). If we're not careful, we're going to do to the next generation what earlier ones did to us. We have a country of college graduates who were brought up on the idea that there'd be jobs for them, because it's what they were led to believe from those who came before them.
They were wrong.
Teaching programming is an important goal as we move forward, but it is not a fix for a broken educational system. If we want kids to succeed, we need to continue to focus on fixing that - rooting out the bad teachers and paying teachers more. We need to fix the problem in this country that people are going hundreds of thousands of dollars in debt just to have a decent paying job.
The aforementioned programs don't fix these problems; they're simply training for the newest blue collar job.
Note: code.org is not full of bad quotes; I think it's a genuinely good idea as far as movements go. The quotes I pulled are indicative of the problem, a case of making the field out to be something it's not.