Recently the President proposed a 4 billion dollar plan that would enable public schools to teach computer science courses to everyone from K-12 in order to fill the ever increasing demand of programmers out there today. And once again, it brings "coding" to the front-lines. We saw something similar in 2014 when the US President became the first to write a line of code in the Hour of Code campaign. And once again I find myself playing devils advocate, mainly because I don't think everyone needs to code and because it takes more than one hour to learn how to do it. If it were that simple, then why not start the "Hour of Healing" and have everyone K-12 learn how to become doctors. And if we are going to do that, then let's indeed teach kids how to become doctors, or how to become astrophysicists, and not just focus on this thing that we call "code".
Computer Science is a new "basic" skill that everyone should have, is what I heard during the press conference. And that's for sure a dangerous statement to make. For many many reasons. Starting off, it's alot of pressure for a child to learn "Computer Science", when many are already struggling to learn some of the more basic fundamentals such as basic math and reading. It's the same reason why we shouldn't teach kids theoretical physics in pre-school. Sure, it'd be awesome if they started young and one day mastered it, but that's what college is for. Needless to say, most jobs in America, don't involve programming, so re-hauling our entire academic structure in order to incorporate it into our daily lives is a bit irresponsible and misguided.
The President further stated that "...Computer Science isn't an optional skill, but a required one..." much like reading and writing. Thank you for that Mr. President. Good to know that the past 15 years of my life equate much to reading Curios George. Statements like that are what made me fire up the blog to address the situation. Most companies don't have IT departments or in house programmers nowadays. Much of that work is either purchased or outsourced to other countries. Whole companies can run off of Intuit software nowadays, and anything else is done through excel sheet and Google Docs and people who are educated in business, marketing, sales, etc. Most people don't require HTML in their day to day work lives, and if they do, I assume it isn't as vital as it sounds. Maybe it's changing the font of a title on a page, or adding an image somewhere.
This "Everyone can code" movement a misleading idea about what Computer Science is and what "coding" is. It's glamorized into this exotic field in which hover cars pick you up from home and zip you to planet "cdos run". And it's not that. Obviously. Coding is a learned skill much like printing t-shirts is a learned skill, much like managing is a skill. It takes time to learn and every job is different. Every company has their own way of doing things, their own structure and their own workflow. And at the end of the day it's a way to generate a paycheck really, no different than any other job out there. You have bad managers, you quit, you rinse and you repeat. So why is this field all of a sudden the hottest thing around?
Computer Science Is Actually Pretty Hard
For me personally, the overall Computer Science curriculum was insanely difficult, and something that I would never wish to repeat again. I even have nightmares that I have one exam left to go before I graduate and I have no clue at what I'm staring at. So before we start teaching kids that GoLeft(2); GoUp(1); is programming and hours of fun, let's take a quick look at what a sample college curriculum consists of for Computer Science:
- C programming language
- C++ programming
- C++2 programming
- C++3 programming
- Assembly Language
- Statistics
- Calculus 1
- Calculus 2
- Calculus 3
- Ethical Programming
- VB.NET
- Electrical Engineering
- Circuit Design
- Advanced Circuit Design
- Operating Systems
- The ones I blocked out...
And I'll stop there for the sake of me not remembering all of it. So needless to say, this isn't for kids and majoring in Computer Science is an insane amount of work and not an everyday skill like reading or writing. Most 4-5 year olds can read basic words. Not many though can tell you the area under a curve or the odds that a red ball will be picked out of a jar with 34 total balls and that is on fire. It's a complex field, much like many other scientific fields out there and we shouldn't be bombarding young minds with such things when they aren't ready for it confusing them even more about possible career choices.
What About Engineering?
Computer Science is a very specific field and it mainly involves utilitarian tasks, such as code maintenance and network maintenance, and presently it seems to revolve around web development. With the current push in space exploration, genetics and renewable energy sources however, you'd think that engineering fields would get more attention. But of course those fields require actual science and physics and calculus, and those sound too difficult for most people. Coding though, very cool. Mr. Robot and such. People tend to forget that we interact with physical objects much more than we do with virtual. We drive cars, created by mechanical engineers, we drive to work on roads, designed by civil engineers, and we work inside of buildings created by architects. Why are those jobs any less important than the guy's who's job it is to create an email blast or to add ads to a web page? They aren't. But they also aren't as cool sounding.
A Job Programming Isn't So Great
Let's be honest, every job sucks. And this one is no different. I've worked for 5 different companies in my career, and they've all pretty much been the same. Short deadlines, no specifications, and bizarre ideas from someone who can barely log in to their email.
It's just a job really. You work with other programmers, you stay late, you eat lunch and you go home. The pay is usually above the average, but that's only because companies are still willing to pay high premiums for websites and for software. If you over saturate the market with programmers, then for sure this won't be a high valued career choice for long.
What We Really Mean By "Computer Science"
The main reason that I'm opposed to this career hype, is because by Computer Science, we really mean the internet. That's it. We're not referring to database administrators or Cryptogography or security or writing software for NASA. We're talking about YouTube, Facebook, Twitter, Instagram and every major social media site out there right now. We're talking about serving ads to people and we're talking about mobile games that people spend millions of man hours playing each and every day. We're not talking about space exploration and artificial limbs and organs. We're talking about "Computer Science", this vague keyword that no one is really too sure what it means, but man, it kind of sounds cool.
A Few Last Words
Before we spend a small countries yearly GDP on trying to teach kids how servers serve files and browsers show said files, we should probably tackle the bigger problem currently at hand. And that problem has been present since I attended school myself. Outdated text books and outdated teaching methods. Before we teach children to read HTML, we should probably make sure that they can read and write in a human readable language. Computer Science for all sounds like an amazing opportunity on paper and in press conferences, but it's just a vague concept that can be replaced with any of a dozen keywords and sound equally as exciting. It doesn't resolve any issue we currently have in education, it just adds another layer on top further masking the real issues.
Walter Guevara is a Computer Scientist, software engineer, startup founder and previous mentor for a coding bootcamp. He has been creating software for the past 20 years.