This article is originally re-published from Books on Code.
I have a serious question for you: what is holding you back from becoming a programmer?
Likely, your blockers are psychological. You tell yourself that there is an impossible number of skills to learn, that other people are smarter or better at studying, or that the competition is just too fierce.
Was trying this expedition a big mistake? Are you too old? Do you need to go back to school for a computer science degree? Perhaps you were not meant for this after all.
I get emails from my readers who are going through these struggles. Students from my free email course, How to get the Most From Technical Books, ask questions about concrete and specific ways to study, when what they don't know is that fear is driving their study habits. They quit their job or declared their intentions; they feel the pressure while facing a steep and seemingly endless learning curve. They want to sit with a book and glean knowledge, but the scatterbrained mindset pervades.
In this article, I'm sharing three crucial strategies to become a programmer. These strategies are to help change your mindset, dispel fear, and become the person you want to be.
The three strategies outlined in this article are inspired and drawn from the book Atomic Habits (2018) by James Clear.
Atomic Habits is a New York Times bestseller that book lovers rave about. As someone who has read self-help books for a long time, I have become cynical to the genre. When I first heard of the title, I thought Atomic Habits was going to have another airy premise along the lines of "good habits are good and bad habits are bad" with lots of filler and inspirational words.
This is not true of Atomic Habits. The book is dense, no longer than it needs to be, and packed with actionable mind hacks and real lightbulb moments. If any self-help book gives me one great insight, I consider it a success. For my review of Designing Your Work Life, my great insight was "gravity problems": all of humanity's tendency to drive themselves crazy over problems as persistent and unsolvable as gravity's existence.
With Atomic Habits, my key insight is our identity's unconscious bond with our environment. More about this in the following sections. But on top of that insight, the Four Laws of Behavior Change are real show stoppers.
Who do you want to become? ... Start there and work backward from the results you want to the type of person who could get those results. Ask yourself, "Who is the type of person that could get the outcome I want?" Who is the type of person that could lose forty pounds? Who is the type of person that could learn a new language? Who is the type of person that could run a successful start-up?
--- Atomic Habits
Start with the end-game first. This is similar to the insight Cory Althoffhad in his book The Self-Taught Programmer: "Instead of studying opening moves [of chess, [Josh Waitzkin] started learning the endgame (when there are only a few pieces left on the board) first. This strategy gave him a better understanding of the game, and he went on to win many championships."
When you have a clear vision of what you want to become and frame your actions around the identity, your chances for success are far greater. Why? You are better able to identify the characteristics you need to embody and filter out the distractions. The murkier the vision, the more likely you are to be overwhelmed and focused on areas that do not contribute to the end goal.
A common pitfall for aspiring programmers: they think they need to know everything --- basically the whole universe pertaining to the set of 'programming skills'. They are so fearful of their own inadequacy that applying for a job today sounds preposterous.
I'm fortunate to have an uncle who has been in the industry for decades more than me. He has had to re-invent his tech career several times over. His advice to me has always been this:
Each tool or skill is not very hard to master. It's just that there's an infinite number of them.
And believe me: you do not need to know an infinite number of things. A small, steadily growing subset is enough.
So really, you need to be defining your subset. And that subset can change across your career.
Start with a picture of what you want to be building and work your way backwards. For example: let's imagine you want to build a fence around the border of your house. Where do you start?
You imagine the fence you want, which is easy to do without skill. If you want to do it in the first place, you probably have an idea about the end product. You then pose initial questions about how you might build your fence. This is the point you start learning: you watch YouTube videos, or consult books, or do whatever you have to do to answer your questions. You isolate your project into steps and learn each step as you go along. Eventually, you do end up building a fence, and you picked up skills along the way. Now that you can build a fence, you can build fences for other people and maybe even get paid to do it.
Notice that it's building a a fence --- not building a house with plumbing and electrical and all. And notice the skills centered around a project.
Programmers ultimately are builders and we use building terminology to talk about our work. Reframing your identity as a builder, rather than a learner, may do you wonders in achieving your goals. Instead of framing your programmer journey around reading books and taking courses, you frame your journey around building things and supplementing your knowledge with books and courses. This simple reframe will move you to the fast track in achieving your goals.
Programmers are a diverse crowd. As someone who enjoys working with designers and empathizing with the end user, front-end development suits me. There are many areas in the universe of 'programming skills' that I do not know. When I started a web developer internship, I only knew HTML, CSS, and programming fundamentals. It was all I needed to start building things.
Common career wisdom is to "do what you are" (and there is a popular career book, called Do What You Are) so your specific programmer identity should be at the intersection of who you tend to be already and the identity you aspire to. What makes Atomic Habits such an amazing habit book: it's all about going with the grain of who you are.
If your true goal is to get a job as a programmer, you ought to design your goal specifically to build just enough skills so that someone will pay you to do it. Ways to work backwards from your aspirational identity: doing informational interviews, reading job applications for their top list of skill requirements, and doing mock interviews if you can.
Every action you take is a vote for the type of person you wish to become. No single instance will transform your beliefs, but as the votes build up, so does the evidence of your new identity.
--- Atomic Habits
I have a secret: Books on Code itself is an act of identity building. When I show up to write an article or a candid weekly email, I am casting a vote for myself as a programmer, a writer, and a little bit of an entrepreneur. I am still taken aback when I receive emails seeking my "expert" advice.
Books have frowned upon the phrase "fake it 'til you make it," but I find it empowering. If imposter syndrome is going to be there anyway, you might as well own it. I say to myself, "Yeah. I'm a total faker. But gosh darn it --- I'm going to walk the walk and fool everyone, including myself."
How do you fool yourself into thinking that you are a programmer? Atomic Habits points out a truly life-changing mind hack: if you take little actions in the name of that new identity, your subconscious will take notice.
The truth is this: we're not trying to change what your conscious mind thinks about who you are. You can call yourself a programmer all you want, but if your subconscious mind doesn't believe it, you can't truly become.
As Atomic Habits says, "The most practical way to change who you are is to change what you do." And so, what do you do? For a programmer, it's simple: you code every day.
The act of coding is one of the most crucial votes you must take for your identity. I receive emails from people who feel stuck in their endless books and courses --- certainly not feeling like they can call themselves programmers.
Programmers program. Get rid of your imposter syndrome by opening that dusty text editor or IDE. Get rid of the other metrics, like how much you do not know. Programming is programming. Don't overthink it.
Sometimes, it's easier to grasp this concept by framing it in a different context. Consider these other votes you can cast for different identities:
Each time you write a page, you are a writer.\
Each time you practice the violin, you are a musician.\
Each time you start a workout, you are an athlete.\
Each time you encourage your employees, you are a leader.
Each time you code, you are a programmer.
Atomic Habits also encourages being kind to yourself. When casting votes for yourself with identity-shaping habits, keep this in mind:
The good news is that you don't need to be perfect. In any election, there are going to be votes for both sides. You don't need a unanimous vote to win an election; you just need a majority.
So cast your votes and be kind to yourself.
You are on your way.
It's one thing for me to tell you to do a thing: "Program every day." But will you actually do it? Maybe not.
We can all agree what is good for us, but we don't all actually do what's good. In reality, we're antsy, bored children inside who don't like to take direction, including from ourselves.
So how do we talk to the child inside each of us? Atomic Habits offers two frameworks: the four-step pattern of habit formation and the Four Laws of Behavior Change.
First, the four-step pattern of habit formation. It goes like this: (1) Cue, (2) Craving, (3) Response, and (4) Reward. Habits require these things in order to be habits. For example, hunger is always triggered by an (often subconscious) cue, like an apple in a bowl on the kitchen counter. It forms in the consciousness as a craving. Then we 'respond' by eating the apple. And we are rewarded with the sweet, crunchy taste.
When we try to form a habit, we fail when we rely on willpower . We are wired for immediate satisfaction, and yet most good things do not have that intrinsically.
The Four Laws of Behavior Change mitigate this problem. These are criteria you can implement into every habit you want to have:
Make it obvious
Make it attractive
Make it easy
Make it satisfying
Making it obvious is setting up the 'cue' response. For example, if you set up a reminder with your home virtual assistant, or if you leave a coding textbook where you're sure to find it in the afternoon, you are 'cued' to take the action.
I titled my strategy "Make it easy and satisfying" because I think those are the bigger challenges in forming a coding habit. We tend to overcomplicate things and be harder on ourselves than we need to be. The labor of deciding what to work on may make the habit complicated. Taking on projects that are overly ambitious might make the habit hard and not satisfying.
Whenever I want to build a new habit, I try to focus on easiness. I know the kid self inside me is lazy. She will fight me on a bad day. So I need to build an argument for my future self so that she can't say no. The "five minutes" strategy is great. Tell yourself that you only have to do it for five minutes --- or even less. Just two minutes. You can have the project already open or pre-planned. Perhaps your coding for the day is just following along with a tutorial (but actually following along; not watching a video) or doing exercises on FreeCodeCamp. Be kind to your future self and remove the guess work.
I have a phrase I tell myself. My present self is smart. My future self isn't. I do not expect my future self to behave or to anticipate edge cases. It's up to me to anticipate them now, so that when my future self fails, I have taken care of her.
And of course, you need to make your habit rewarding. Make sure you are giving yourself something with the right amount of challenge. Give yourself milestones to celebrate and ways to celebrate them. We are reward machines, so give yourself a daily treat after coding. I am a big fan of matcha, so I promise myself I make a latte after a coding session. I like matcha for its identity vote --- for the health conscious, mindful, and rejuvenated version of me.
Expecting human error is thinking like a programmer.
Creating a reward response is just being smart.
We're programmers, so we ought to program our subconscious.
If you take these strategies to heart, I guarantee you that you will get closer to your goal of becoming a programmer. The journey is hard, but it can be made easier with good habits built through the right mindset.
Also know that I am here for you on your journey. If you want to stick around, feel free to join my email list at Books on Code or to sign up for my free email course How to Get the Most From Technical Books. We're sure to have lots of fun.
Also, if you have been sold on Atomic Habits, which can help you form better habits everywhere in your life, you can find an inexpensive copy on Amazon.
As always, I appreciate the time you spend learning and sharing with me. I look forward to seeing you in the next article. 👋😊