Amy M Haddad

4 Ways to Get Through the Dark Days of Learning to Program

By: Amy M Haddad

image All of us have them. In any long-term pursuit—getting a PhD, training for a marathon, or learning to program—there are dark days. You know, when the finish line seems like forever away. The work we’re putting in doesn’t appear to match the results. Motivation comes to a halt.

It’s critical to get back on track when days like this happen. Otherwise, one dark day can lead to another, and another. It’s better to nip it in the bud and find the intrinsic motivation to move forward. Here’s how.

1. See How Far You’ve Come

A programming training journal is useful for many reasons. It’ll remind yourself of the daily progress you’re making as a programmer. It’ll point out what went well, and what needs some work. It can also help to pull you out of your dark days.

Page through your journal. Read what you were working on a month ago. You’ll be shocked at how far you’ve come. What you thought was so hard last month is easier for you now.

For further validation of your progress, read what you were working on several months ago. Then, think of where you are now. If you’re consistently working at getting better, then I’m convinced that you’ll be impressed with the results. Your daily effort is having an impact: you’re moving forward.

2. Think of the Big Picture

If you’re like me, there are parts of your programming practice you prefer over others. For example, I’d rather dive into a new problem than study my Anki flashcards.

In the moment, the idea of studying flashcards may not be alluring. But when I step back and think of the big picture I realize it’s time well spent. And so I do things, like reviewing my flashcards, because they’re helping me become a better programmer. They’re investments in my future self.

It’s just like a sprinter who prefers to sprint around the track, but they realize that lifting weights consistently helps them run better. So they find the motivation to hit the weight room because it helps them get better at their main objective: running.

Whenever you find yourself thinking that “I’d rather….”, catch yourself and think of the big picture. Remind yourself of why you’re doing what you’re doing. That is: why are you learning to program in the first place?

Reminding yourself of your “why” is the best way to fuel motivation. There’s a purpose behind the time and energy you're pouring in.

3. Find One Person Who Believes in You—and Your Pursuit

Naysayers are everywhere. They’ll question your pursuit. They’ll try to bring you down. They’ll try to sway you from your path.

Don’t let them.

Try to avoid these people. At the same time, find one person that believes in you and your pursuit. Perhaps it’s a spouse, parent, professor, or manager. It only takes one.

Even though you’re the one putting in the time and work, there’s comfort knowing that there’s someone in your corner who shares the same unwavering belief and confidence in your pursuit. When a dark day hits, you can safely turn to this person and can be reinforced by their support.

Equally important, it’s such a joy to share successes—no matter how big or small—with someone else.

4. The Value of Variance

I vividly recall the workouts from my days on the cross-country team in high school. Not only because they were hard, but also because there was such a variety.

One day we’d run sprints around the track. One day we’d run up and down a hill. One day we’d run a slow, steady pace for miles on end. And, usually once per week, we’d do a swim workout.

This variance helped my physical and mental stamina. It kept running fresh and interesting. It kept me and my teammates motivated. It got us into fantastic cardiovascular shape. Above all, the variety added some fun into the seriousness of competition.

I add variance to my programming routine for many of the same reasons. It prevents getting into a rut. It stimulates ideas. It’s energizing. It keeps programming fun.

Variance can take different forms. One way is to change up your routine. For example, I almost always exercise around noon each day. But I’ll occasionally exercise in the morning just to change things up.

Another way is to pick something that’s entirely different from your primary programming focus. For example, say you’ve been working on a few projects to get better at React. To add variance, pick an interesting problem that has nothing to do with React—something that just seems fun to work on—and tackle that for the day.

Prevent Dark Days

This post has largely been about what you can do when dark days hit. But it’s important to try to prevent them from happening in the first place. That said, there are two things I recommend.

First, watch your inputs. There’s a lot of content out there and it takes many forms: books, podcasts, courses, and articles. A lot of it is useful. But there’s also content that can start the negative cycle. Once the negative loop starts, it’s hard to get out of it.

So avoid it. Instead, be selective and find content that’s going to help you get you where you want to go.

Second, write down your goals. This simple act makes the commitment much more real.

It’s equally important to write down your plan each day, which will help you reach your ultimate goal. That’s why I highly recommend making a daily schedule. On Tuesday evening, for example, I create my schedule for Wednesday. It includes everything I want to do and when I’ll do it.

So when the alarm goes off on a cold Tuesday morning, you pull yourself out of bed because you already made the commitment to program the evening before, when you made your schedule. You already made the commitment. You already identified what you need to do. Just get out of bed and implement the plan.

Above all, be aware. Notice when you feel a bit off and aren’t at your peak. Then do something about it. Hopefully, this article has equipped you with a few ideas to help you get back at it.


← back to all posts