“Everyone in this country should learn to program a computer, because it teaches you to think.” — Steve Jobs
The debate around whether everyone (including you) should learn to code typically focuses on one of two things:
- The way you learn to think about problems
- The way programming gives you leverage
While both are true, there’s a third reason why you should learn to program: you’ll need it to stay competitive in the job market. Workplace skills, like programming, normalize over time. While programming is a specialized skill now, it will become a common skill that most knowledge workers are expected to have.
Problem Solving and Leverage
People like Steve Jobs are fascinated by the way programming forces you to think about problems. You have to think logically. You have to break the problem into smaller pieces and build up a solution. Unclear thinking will make finding a solution nearly impossible. Disciplined thinking gives you a set of powerful tools for solving problems in domains far removed from building software.
While I’ve been a professional programmer since early 2015, I was formerly not all that handy around the house. In the last year though I’ve fixed plumbing issues in my apartment, completely redone our master closet, and fixed issues with our car. I’m not talking about changing the oil: I was able to figure out how to replace the electric side mirror after it was side-swiped. What is amazing about these experiences is that I followed the same process I would use at work to debug and understand a new piece of software.
But many would argue that this way of thinking is only half the story. The other reason you should learn to code is it gives you the ability to create leverage. If you see a problem that you and many other people experience, you can build a solution to it. Programming is really about building things that create value. The side benefit of building something of value is that you can charge people for it, which is how startups get founded.
While both of these are valid reasons to learn how to program, there’s a third reason that is more relevant to the average knowledge worker: you’ll need to know how to code in order to stay competitive in the job market.
Skill Normalization Over Time
This happens a lot with workplace skills. Just think, there was once a time when people would list Microsoft Word and Excel as skills on their resume. They were tools that some applicants wouldn’t have experience with, so being able to list them on your resume and answer questions about them in an interview gave you an advantage in the application process.
That was some 5 to 7 years ago. Now, if you were to put Word or Excel on your resume, the reviewer would assume one of two things:
- You don’t know them that well and are trying to cover that up (i.e. posturing)
- You don’t have many skills and are listing everything you possibly can (i.e. padding)
In either case, it’s assumed when you apply for a job that you are proficient with Word, Excel, and the rest of the Office suite or their Google Docs equivalents.
These skills have normalized to the point of being common.
This happens often with workplace skills. Take a more extreme example: typing. It used to be a skill you had to take a class to learn. People would get hired to be typists. Typewriters were expensive and using one effectively was a specialized skill taught in specialized schools.
Can you imagine sifting through resumes now and seeing “Typing” listed as a skill?
So, why should you learn to code? Because it’s a skill that is normalizing. More jobs in more industries are looking for applicants trained in programming and data science. And it’s only a matter of time before this is a skill set that is assumed across the workforce.
Normalization of Programming as a Skill Set
We’re still in a time when programming is considered a specialized skill. There are many people who’s job is to be a programmer. That said, this is already starting to shift.
More companies in more industries are expecting college grads to be proficient in programming and working with databases and APIs. For instance, Python is becoming a common prerequisite for entry level jobs in finance, banking, and marketing.
Additionally, companies are expecting their current workforce to get up to speed. Capital One, JP Morgan, and Booze Allen Hamilton are just a handful of companies training their existing workforce in programming and data science.
This trend is happening as the amount of data we’re working with gets larger and more complex - problems that programming is adept at solving. Excel is easy to use but it can’t handle a really large amount of data. I’m not talking Big Data here, more like not-small data. A dataset that brings Excel to its knees would barely make a SQL database flinch.
A programming language like Python empowers you to not only work with data stored in a SQL database; it can dramatically improve the kind of analysis you can do on that data. For instance, performing the same analysis on different datasets (like one for each state) is a really trivial task with a programming language: define a function to perform the analysis and loop over your data.
Programming is a really powerful skill, which is why the demand for programmers has increased so much. But all the skills that we think of as programming and data science are most effective when they’re applied in support of an existing domain of expertise:
"I would encourage you to think of [programming and data science] not as a new domain of knowledge to learn, but a new set of skills that you can apply within your current area of expertise." — Data Science Handbook, Jake VanderPlas
A marketing analyst can be a more-effective marketing analyst by picking up some SQL and Python; a geologist can be a more effective geologist by learning Numpy, Pandas, and Jupyter notebooks. So while learning to program will change how you think about problem solving and it will give you leverage, the real reason you should learn to code is a culmination of these two: it’ll help you in your job and more employers will expect you to know it already.