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.