Ever heard this: “everyone should learn to code?” Or that “the jobs of the future are all going to be coding jobs,” followed by recommendations to retrain hoards of middle-age and coal miners?
Mike Bloomberg signaled the peak of this idea in 2012:
The idea is still strong today, but I don’t know why. Is there some dev bootcamp cartel out there pushing this narrative? It seems like common sense, but I don’t at all agree with it. Here’s why.
Coding well is really hard. It’s like learning how to do an abstract branch of mathematics in Portuguese. You have to use thought processes you likely haven’t used before. And you need to be incredibly detailed and particular because a machine will do exactly what you tell it to. Until it doesn’t, which leads me to…
Completing projects takes insane levels of grit. There’s a saying that the first 90% of software development is writing code, and the last 90% is debugging. Debugging means chasing an error around dozens of code files while banging your head against a wall until it goes away, only to find, like whack-a-mole, that another error popped up somewhere else. You know those people that can play a single level in a video game over and over for hours because they just need to beat it… you need that level of frustration tolerance and commitment to discover that a single Chinese character in a text file you didn’t write is the reason your whole program broke.
And then understand that you don’t just write code for yourself, but also for your future self and for others. A key aspect of good code is how readable and clear its intention is.
But the most important point is that you’ll likely never use the skill. I do a lot of coding for a living, and I barely program outside of work. Sure I’ve done some projects on the side, but the code I’ve written for myself and actually use is minuscule compared to my entire catalog of work.
So what you face is a very difficult skill that has likely very little to no payoff unless it’s for your job or you like to tinker with data and computer systems for fun.
When you should learn to code
However, if you like solving difficult and nebulous logic problems, then coding is probably something you’ll enjoy. And if you really enjoy it, then it might be worth making a career out of it. Because you kind of need to enjoy it to be good. But you don’t necessarily need to be a Putnam contender to get something out of learning to code. There are good reasons to learn code, even if you don’t want to make it a career.
- You have personal work tasks you’d like to automate. Maybe it’s pulling files from a server, or writing macros in Excel. You don’t need to learn a lot of coding to make these kinds of tasks much much easier. And having a motivation for why you’re learning (and a specific project to work on) helps tremendously. For example, I do all of my budgeting and tracking in a Google Sheet. At the end of every month I have a script that creates a new sheet, cleans it up, and resets values to begin tracking the new month. Don’t need to be a pro for that. (A free book recommendation: Automate the Boring Stuff with Python)
- You like math and puzzles. Did you like solving logic problems as a kid? I had stacks of logic problem books. Coding is the adult version of this where you create and solve your own logic problems at the same time. It genuinely can be fun. It’s a quick way to enter a flow state. So maybe it’s a fun little project or hobby. Which, incidentally, is one of the best ways to start before you decide to…
- Make a career change. This is the positioning that the bootcamps take. Yes software can can be a lucrative and fulfilling career. You get to create every day. But as mentioned above, it takes a certain type of person to really enjoy this enough to be good and make a career out of it.
Okay so you want to code. Here’s my recommendation.
First, figure out which of the three reasons above applies to you. Having a really good “why” to come back to will help keep you motivated and focused.
If you’re learning a specific task, like Excel Macros, watch a few YouTube tutorials and then just start hammering away at the task you want to complete. It’ll be hard, but that’s part of the learning process. You’ll find yourself on Stack Overflow frequently. And there’s likely a community of people willing to answer your question (nerds love answering questions and looking smart. Wait, I mean they love teaching).
If it’s for enjoyment, learn the basics of Python. Then head over to Codewars or Project Euler and just start solving problems. Again, it’ll be slow going at first as you learn the syntax, the libraries, control flow, etc. If you find something was challenging, read the corresponding chapter in a book like this: http://openbookproject.net/thinkcs/python/english3e/.
If it’s for a career change, first figure out if you like it (again, a good indicator is if you easily get into a flow state). Then a bootcamp might be a good idea, but you can certainly do it on your own. But no matter what, doing a lot of work, inside a system of accountability, is the only way you’ll get good enough to get hired. When I hired engineers that came out of bootcamps, having command of the theory and having done a lot of creating were musts.
This is the advice I’d give to a friend who is thinking about coding. I took the traditional path of starting with high school computer science and majoring in it in college, so I didn’t have to retrain myself. So maybe this doesn’t work for you, but find out what does (harder than it sounds, I know). For any pursuit in general, focus on the process and the result will take care of itself. As Mihaly Csikszentmihalyi, the popularizer of the concept of a “flow state” said, “it is when we act freely, for the sake of the action itself rather than for ulterior motives, that we learn to become more than what we are.”
To summarize: Learning to code is likely a waste of time. But if it is right for you, make sure you know why. Then approach the task appropriately.
Questions? I’d love to answer them to appear smart. I mean teach.