Skip to main content

Command Palette

Search for a command to run...

Why You Should Keep a Programming Journal

Published
‱5 min read
Why You Should Keep a Programming Journal

The Benefits of Journaling 📓

đŸ€” 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.

đŸ’Ș 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 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.

What to Write in a Programming Journal 📓

📆 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.

🎉 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.

đŸ€“ Things to revisit later

A bug-tracker might be better for tracking todos and bugs, 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.


Summary 📝

While I hadn't written in my programming journal in a while, I can see why it can be useful, especially if you're a junior.

I've been reading back on my old journal entries written in 2018. It has some notes I made of concepts or questions I had, notes of events of that particular day and how I felt on those days including decisions that were made by the team or by management. Its a great way to see how I've grown since writing those entries.

I don't know whether I'll start journaling again but in many ways, these blog posts I'm writing are a form of journaling for me. I enjoy writing them and reading through them retrospectively. I may start to go through my old journal entries and create blog posts on the ones I think would be good to share.

Comments (13)

Join the discussion
J

This post was nothing but inspiring. As a military veteran who is use jotting down problems, solutions, and concepts, this aligns well with me and inspires me to journal as a now junior full stack web developer. Good thing I already use Notion and I look forward to using Hashnode as a medium to share my experiences as a dev and also retrospectively reflect on the progress I have made as a developer.

1
J

Thank you for your kind words Joshua. I'm glad you've found my article useful.

And thank you for introducing me to codingfantasy.com ! Need to start playing that to up my CSS game.

All the best

1
J

James Lieu Welcome. I am glad that I could have done that for you as well. Serving one and another in many ways than none 😁

A

I usually write simpler notes now. Sometimes complex writing becomes a task in itself and I start to procrastinate then.

1
J

Makes sense to me Asad.

I think I also fall into that trap, if writing simpler notes works for you, go for it :)

1
B
Basharath4y ago

Yes, I'm using 📝Notion to document my works, ideas, and tasks. This article gave a clear insight into the benefits of doing that. 👍

1
J

Thanks for reading Basharath. I also use Notion now, its great!

1
G
girolamo4y ago

Thanks for the cool article!

Love the way you’ve structured your post! It feels like you really care about your readers :)

Ciao!

1
J

You're welcome Girolamo!

And thank you for the feedback, it means a lot!

A

Cool 😎 just what I needed

1
J

Thank you for reading Ackon! Hope this was helpful

J

Awesome post james!

I'll implement this method into my daily workflow. Thanks for the inspiration!

1
J

You're welcome!

Once you have a few entries, remember to read them from time to time, you'd be surprised how much better you've become.

D

Hey! Thanks for writing this article! I find it really useful and I think I'm gonna implement the system you've mentioned in the article. Cheers!

1
J

You're welcome! Remember to go back and read your own journal entries after a while, you'll really see how much you've learned and grown. Thanks for reading and commenting

S
Sandeep4y ago

This is awesome đŸ”„

Definitely going to make a journal!

1
J

Thank you! I'm glad to hear you're going to start your journal

1
A

I’m doing this while I learn the ropes, but with a paper notebook. Although I’m barely in the middle of learning HTML, it’s helped me a lot with retaining information and keeping me focused.

1
J

Paper notebooks are a great way to journal. Sometimes stepping away from the laptop screen allows for a more deeper focus and thought-process when adding your journal entry.

Thanks for reading and commenting Adriana!

2
P

Thanks for posting this James, I have always considered journaling (and blogging) development as a way to share and hold yourself accountable for the progress you make.

It also serves as a great reference when you know you did something before but do not remember the details, yay for search :)

2
J

You're welcome and thank you for reading.

You make a good point about holding ourselves accountable for progress we make and serving as a great reference to something you've done before.

You'd be surprised how much you've grown once you look back and read some of those past entries.

1