Amy M Haddad

Why Programmers Need a Training Journal

By: Amy M Haddad


The field of programming is as wide as it is deep. No matter if you’ve been programming for a month, year, decade, or more, all of us have something in common: there’s a lot of information to learn and we need to continually get better at our craft. In that sense, all programmers are in “training.”

As such, many of the training habits I used as a long distance runner I now apply in my current endurance activity: programming. Here’s one of them: using a training journal.

A Training Journal

I was searching for patterns.

Each evening, before bed, I’d head to my desk, grab a legal pad and pen, and write a few notes about my running workout that day. This informal process included the number of miles I ran, how I felt, and the food I ate.

For example, “don’t eat a large seafood dinner the night before a long run.” Or “I started the race way too fast.” Or “I felt great during my run today...ate a simple dinner (chicken and pasta) last night.”

I used these notes as feedback to make tweaks for subsequent runs and races. In other words, I kept a running training journal to help me get better and reach my goals. It worked.

So I now apply the same idea to get better as a programmer. Each evening I open my navy Moleskin notebook, write the date, and jot down a few notes about my programming work from that day.

Get Better Each Day

Self-improvement was the main reason why I began keeping a programming journal in the first place. I write whatever comes to mind, but my comments tend to cover these topics:

  • Mistakes I made and important lessons learned.
  • Learning strategies I experiment with, which is how I came to use the spot checking technique.
  • Productivity: ways to work at my peak.
  • Topics I’m learning now and those I want to learn in the future.

Like my running days, I’m searching for patterns, which emerge over time. Similar comments start to resurface and that’s a sign it’s time to make a tweak. Or, equally important, I know what to keep doing.

Above all, I’m looking to get better. Taking a few minutes to reflect is helping me along in that process.

Keep the Momentum Going

There’s one thing I do now with my journaling process that I didn’t do when running: find something positive each day. That’s the second theme of my journal.

Learning to program isn’t easy. Nor is the process quick. It requires a lot of persistence: the journey is more like a marathon, not a sprint. Finding something positive about your performance is a daily reminder that you are making progress⁠—even on those days when you’re frustrated and feel like you didn’t get much done.

There’s always something positive that comes from your work. To get at that, a question I ask myself is this: am I better now than I was this morning? Then, I write a few words to answer it.

So the problem is still unsolved. But you figured out the right data structure to use. Or you thought of the correct algorithm and got it working on paper. That’s progress.

Or perhaps a concept you’ve been struggling with finally makes sense. That’s also progress.

Taking a few minutes to reflect helps you recall these small successes, which will fuel your momentum and your confidence.

The Non-Defining Moment

Small gains each day can lead to exponentially bigger progress over time, which was precisely the recipe for success in my running days.

There wasn’t one particular run that got me into great shape while training for long-distance races. Instead it was a matter of showing up each day and working hard. The gains were small. But enough small gains got me the results I was after.

Likewise, getting better as a programmer isn’t about writing one great program or solving one tough problem. Rather, it’s about getting a little better each day.

A programming training journal reminds me that: the daily effort matters. After all, success is merely an accumulation of small wins overtime.

Make It a Reality

Keeping a training journal may seem like a good idea in theory. But what’s it like in practice? How do you make it a habit?

I've found that an easy way to integrate something new to your routine is to link it to something you already do. For example, after you brush your teeth, write in your journal. That way, you link something that’s already part of your routine (brushing your teeth) with something new (writing in your training journal). Doing so makes the new thing easier to integrate and remember.

Eventually, it’ll feel like you’re missing something if you don’t write. I feel like I’ve come full circle with my work for the day once I’ve taken some time to reflect on it.

Keep in mind that you don’t have to write paragraphs, though sometimes you may. Oftentimes a few sentences or even just a few bullet points is plenty.

But another motivator for writing in your training journal regularly is when you start seeing results. Soon enough patterns will emerge and you’ll find ways to do things differently—to do things better. You’ll have ideas for the problem you’re working on or the bug you’re trying to fix.

You’ll also have plenty of material to look back upon when you read through your notes from a few months ago. This is not only useful for self-improvement reasons, but to also see how far you’ve come.

← back to all posts