Should you learn to code? Probably not.

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:

I wonder how much those coding skills helped him in his presidential bid.

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.

Code Quality

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.

  1. 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)
  2. 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…
  3. 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.

Just let me read one more thing and I’ll be ready

I.

I have this tendency, and maybe you do too. I think it’s born from a feeling of never quite being ready or skilled enough to accomplish something — say a job interview, or a diet, or a new hobby, or a blog, or a business. It’s caused by the fear of uncertainty that lies ahead in whatever pursuit might be worthwhile.

I believe the biggest achievers in life (and don’t lie, you want to be one of them too), have a singular, obsessive focus. A grand vision. A master plan. And they pursue it doggedly until it is realized.

So I try to bootstrap myself to a vision. And unfortunately this is incredibly easy for my uber-forward-looking brain to do. I get drunk on that vision. I succumb to daydreams and sleepless hours of bedtime fantasizing. I create movies of conversations I’ll have with mentors, or future employees.

I encumber my browser tabs with articles promising to answer the question “how do I do this?” Or I fill my Amazon cart with books from an online reading list promising everything you need to know about this. “Once I read through all of these,” I think to myself, “I’ll have developed enough expertise to begin.”

I get this rush in my chest like I’m finally about to open the lost scrolls and be given The Secret. So I settle into a chair, open the book, and be prepare to be graced with enlightenment…

But it never, ever, comes.

And then I find reality of the work is nothing like these fantasies. I’m crushed. And I walk away, rejected and defeated. Please, fate, tell me I’m not the only one.

Sure I get closer. I gain a little knowledge or wisdom. I become a better person, or better thinker. But no, I still don’t have it figured out. I’m still not an expert. And I’m still navigating with uncertainty.

I flounder. I experience the dip. I realize how hard it really is to become an expert, or to change a personality trait, or to fix a diet. And I quit. Books go unread. Tabs get closed.

You think I’d be immune to this pattern by now. I’m not.


II.

If it can’t be destroyed, can it be managed? I believe it can. And a blog is one way to do that. By writing freely and openly about my current pursuits or interests, waking from the daydream and releasing my expectations for what each pursuit might bring, I will build a path, brick-by-brick, with destination unknown. You can only connect the dots looking backward.

Michel de Montaigne, a favorite lay philosopher of mine, took this flaneur-like approach to his own interests. He’d write an essay on whichever topic happened to excite his intellect. It seems like a more fulfilling and care-free way to live.

A great struggle in my life is to overcome building up a vision so clearly only to have reality slap me in the face. I know that by reading, instead of doing, I can prolong that slap. But it will hit sooner or later, and it will turn me away all the same.

How can we set ourselves up to expect, and then push through, the slap? Is it better to live aimlessly? No, I contend. But neither is it good to live with such a targeted and specific aim that you cannot accomplish it.

I believe, like most things in life, the optimum is somewhere in the middle. How can we feel out that middle path?

First, by setting an abstract vision for yourself — the kind of life you want to lead and the kind of achievement you strive for — you can give yourself flexibility to reorient and determine a concrete path to the next step. If it’s too concrete, the cold slap of reality will destroy it swiftly.

Second, determine the next concrete step to achieving that goal and set a deadline. Try to do it without too much research first; another failure trap. But what if research and asking for advice are part of the next step? It’s fine, but make sure you self-reflect enough to know it’s not a procrastination technique.

Third, keep a constant perspective on long-term thinking. Short-term thinking is really easy to abandon. A goal like “lose 5 pounds in a month” is incredibly short-term. The consequences of failure are small, and the ability to push out the deadline too easy. Instead, if your next concrete step is short-term, remind yourself that this short-term goal is the best thing to get me closer to my long-term vision.

Fourth, bias yourself towards action. If you don’t know if you should consume or produce, always pick produce. The most successful people in life have been those that could Get Things Done.


III.

I am not a master at this process, nor am I entirely sure it’s perfect. I’ll write posts here as I discover more about it and how my mind works. It’s an on-going conversation. Maybe you have a different perspective, which I encourage hearing.

I can say, though, that from what I’ve gotten from studying successful people, they all do something like the four steps above. Take everybody’s default successful person example: Steve Jobs. Was his grand 25-year old vision in 1982 to invent the iPhone? Impossible. But his unflinching vision did guide him into determine that the iPhone was the next best concrete step in the mid 2000s.

What is that vision to you?