The struggle in becoming a better programmer is real. I've been programming since I was 13, yet still find it both challenging and rewarding. There's nothing quite like it. But it can be overwhelming at times, leading some people to give up and quit.

To become a better coder, you have to be intentional -- in how you read and write code, in how you study new concepts, and even in the way you take breaks and refresh your mind. Intention is key to progress.

We've already shown you how meditation can make you a better coder. Now you can kick that up a notch by keeping a programming journal as well. In this post you'll learn what that is, why it's helpful, and how you can get started right away.

The Benefits of Journaling

For a long time, I thought of journaling as an activity reserved for angsty and anti-social teens -- but that's completely wrong. Nothing more than an outdated stereotype. In fact, journaling is really useful no matter how old you are or what you do.

It helps you articulate your thoughts.

If you're like me, you probably tend to "think through" your coding problems. Trying to implement an algorithm? You run each step through your mind. Need to design a new class? You sit in front of a blank class file, thinking about what variables and methods it'll need. Stuff like that.

And that's fine for small stuff, but can be unwieldy -- even counterproductive -- when you have to tackle something more advanced and/or complex.

That's when a journal comes in handy. It gives you a place to work through your thoughts (e.g. algorithm steps, design process, or whatever else) in a concrete way. You can see everything before you. Not only does it make you less prone to errors, but it'll help solidify those concepts in your mind.

programming-journal-overview

It can make you more productive.

The above-mentioned process of "unloading your thoughts" is more important than you might realize. As it turns out, the simple act of jotting down a task/problem/thought can free up your mind and improve your concentration.

For example, unloading the details of that newly-designed algorithm into your journal can let you focus on other tasks without wasting "brain CPU cycles" on keeping those details at the back of your mind.

A journal also forces you to slow down and think. It's tempting to rush into an implementation, and sometimes that works out fine, but you'll be better off if you think through the entire solution before you write even one line of code. One hour of planning can prevent many hours of debugging!

It can improve physical health and mental acuity.

While it isn't necessary, I recommend that you journal by hand. Get off the computer, crack open a pocket notebook, and write with a pen that feels good in your hand and on the page.

It lets you take a break from staring at a monitor all day, which can cause problems like poor posture and eye fatigue. It also gives you a reason to get up and walk around a bit, which has real benefits for your brain.

But that's not all -- there's something special about physical handwriting that activates a different part of your brain, resulting in greater range of creativity, improved problem solving, and better retention of ideas.

programming-journal-example

It records a history of your progress and development.

This may be the biggest benefit of journaling, especially for new coders. The hardest part about being a newbie is being blind to your own progress and feeling like you aren't moving forward. But each journal entry represents a discrete achievement. It feels good, and that's priceless when learning.

It's also useful for staying motivated on long-term projects because the journal acts as an objective reminder of how far you've come. When you feel like you aren't making progress, the journal tells you that you have -- and that can be a great motivating boost.

Lastly, a journal can be physical evidence when you run into patent or copyright issues, but only if you date and sign your entries. This probably won't be much of an issue unless you work on big projects with millions on the line, though.

What to Write in a Programming Journal

Let's say you're convinced. You want to start. But how? Again, I recommend a pen-and-paper approach (such as with a Moleskine notebook) but if that's not an option then I recommend using a Markdown editor like Haroopad, MacDown, or Typora. Or you can go with something more traditional like OneNote or Evernote.

Once you have that set up, it's time to start writing.

Date and signature. Always date your entries for posterity. If your note-taking app can do it automatically, even better.

Problems encountered. When you run into an evasive bug or a conceptually-tough algorithm, write about it. Start with a description, when it seems to occur, and a list of possible causes. If you can reproduce it, include those steps. Sometimes the act of writing these things can lead you to a solution.

programming-journal-problems

Solutions explored. As you try to solve the problems above, record your attempts to fix them. If the solution works, great! If it doesn't, record why it failed. If a solution is suboptimal, make note of the shortcomings so you can iterate later.

This methodical approach to bug-fixing is extremely helpful, especially when you're first starting out and feel overwhelmed by a bug or algorithm -- but veterans can benefit from this too.

Log your successes. Keep a separate list of every win along the way, perhaps in the back of your notebook. Did that algorithm finally click? Or maybe your five-day search for a bug finally paid off? Write those wins down! Later, when you're feeling stupid or unproductive, you can refer back and see all of the things you've accomplished.

It's a simple thing, but can have huge results. I've personally found it effective in defeating programming burnout. And as your "Hall of Successes" grows longer, it becomes more powerful as a reminder of your skills and progress.

programming-journal-later

Things to revisit later. A bug-tracker might be better for tracking todos and bugs (duh) but a journal can be great for jotting down concepts, algorithms, questions, topics, and other "things" that you can't look into right now but want to research later.

Ambitions and goals. This one's not so much about programming as it is about your future as a programmer. Where do you eventually want to end up? How did today's session or this year's project take you toward that goal? Or did it set you back? These kinds of entries can be great for re-centering yourself and your direction.

Lessons learned. After every session, it can be nice to recap everything you did and think about what you learned. Similarly, you should think about recapping every major milestone on your current project and the lessons you've learned. This is why developers do post-mortems -- by articulating lessons learned, you're more likely to remember them going forward.

Will You Start a Programming Journal?

The beauty of a programming journal is that it can be as simple or as involved as you want it to be. Whether you spend 30 minutes a day or 10 minutes a week, it will prove useful -- but of course, you'll only get out of it what you put into it.

Does this sound like something you'd benefit from? Would you prefer pen-and-paper or a notetaking app? Got any other tips that have boosted your programming? Share with us in a comment below!