notion image

Supercharge your Learning with This One Tool for Programmers!

I’ve found this one habit which I’ve been experimenting with in 2023 which I’ve noticed has prompted me to increase the quality of my learning in my daily work life! At first, I was sceptical, but after trying it out, I’m convinced that if you’re serious about having fast progression, you should take this up.
This one habit is writing a “daily” development journal!
In this article, I’m going to explain:
  1. what a development journal is;
  1. the benefits I’ve experienced of using this technique;
  1. why I think you should use it if you’re a programmer;
  1. and what control points I think a “good” journal has.

What is a Development Journal?

A development journal is a log of specific problems you’ve encountered in your daily work while programming. You encounter a problem - any unfamiliar technical situation - and you make a log of how you dealt with it.
You give the context of the problem (i.e. what you were working on at the time), the specific outcome you were looking to achieve, why you struggled to reach the outcome (including the technical difficulties or misconceptions you faced), and finally how you came to a solution - telling the story of the steps you took to debug is a plus.
Bonus points are also awarded for leaving some ideas on how you could have prevented this problem from arising in the first place or by setting some action in place which means the issue won’t arise for future devs.
Even though you might deep-dive into a technical concept to explain the problem, this isn’t the same as a blog post, which I would consider to be covering a more general topic. Problems should be fine-grained - the theory is that we solve lots of small problems well and the bigger problems will start to take care of themselves as we train our problem-solving muscle.
You don’t need to write daily, but you should develop a smell for when a problem you experience in your day-to-day life will result in worthwhile learnings.
Concerning the Theory of Learning:
There are 4 things you need to learn a skill (e.g. programming) quickly:
  1. Willingness to learn.
  1. A standard for what good looks like.
  1. Conscious deliberate practice → try to create a good output (e.g. solve a bug effectively), reflect on how it went, and repeat.
  1. Feedback from an expert.
Creating a development journal forces you to cover points 2, 3, and 4.
When writing an entry you are forced to check the theory to check your assumptions (point 2).
You use the theory to take time to actively reflect on your craft and how you could do it better (point 3).
Writing in a journal makes it easy to present to an expert, allowing them to easily raise your awareness of the misconceptions you have (point 4).
As you repeat this cycle, you will start to learn more quickly.
As an example, here’s my Development Journal.

What Benefits Have I Experienced So Far?

  1. Discovering misconceptions I had on a topic when initially covering the topic.
  1. Gaining a more comprehensive understanding of specific topics.
  1. Sharing my learnings with others (and my future self) quickly and effectively.

Why Do I Think That you Should Keep a Development Journal?

1. Revisiting Problems Raises Mistakes I Made the First Time Around

The most shocking thing I’ve noticed is that a few times I got a solution working in the day, only to write out the solution in my development journal and quickly google a concept and realise my understanding was completely wrong!
It’s easy to glaze over something in the moment, especially when you’re deeply focused, and make a wild assumption that’s completely wrong. It takes time away from the problem and an analytical approach (a different mindset) to notice those mistakes made in haste. Often I’ve gone back to a problem the next day to correct my mistake in the previous day, or tell someone who I’ve helped to correct what I told them to do!
Having the document to share with others really helps here!
Here are some examples where I only realised my mistake after writing out the entry:

2. More Focus Time to do Deep Dives

When solving the problem, it’s often not a good use of time to tunnel on the theory behind how the system is working in excessive detail. When writing my entries, I quickly google my assumptions and can take some time to learn how a system works in full.
If you focus on a specific problem, you will likely do a deep-dive into some tool that you use daily - understanding one part of the tool that you use deeply will prevent other problems from arising later, as you have addressed your misconceptions about how the tool works early.
Most programmers won’t take the extra time to follow up on learnings - I think by solving the problem they’ve done 75% of the hard work, but there are massive gains to be made in logging a journal entry about it!

3. Writing to Teach Solidifies Learnings

Writing out my explanation to others is an exercise which often helps me more than the advantage of sharing. Creating learning content is a great way for you to learn as it forces you to understand what is going on
For more, google the Feynman technique.

4. Writing it Down Confirms you Understand

Often, we think we’ve thought about something, but I’ve found that I only realise how little I understand once I force myself to explain it to someone else. Writing it down gets rid of this false sense of confidence I have in my understanding of a topic - it’s a way to discover what I actually understand, and what I don’t.

5. Daily Problems Keep Learnings Relevant

Choosing to write about something that actually happened (i.e. today) means you don’t ever go off and learn about something you won’t need to. It’s easy to read up on some theory, but it's difficult to know which theory will be most useful for you.
Learning about something you actually struggled with prevents you from veering off and wasting time reading useless topics.
Solving daily problems is a way of auto-prioritising your learning!

6. Keep a Log of the Important Things

The primary goal of the journal is to speed up my own learning, but one secondary advantage is that I can share the log with others who are experiencing the same issue. If I see multiple people facing the same problem at any time in the future, I can send them a link to read themselves - this saves me time in writing it out multiple times.
You can present your entry to an expert to get them to challenge your conclusions - they can then raise your awareness on topics you otherwise wouldn’t find and quickly point you in the right direction where you can improve. Make it easy for people to help you!
It also means that when I have a vague feeling that I’ve faced this issue before, I can go and search the archive and see what my past self did (maybe I will learn something new and be able to go back and correct my journal entry).

Control Points I Use for my Journal

✅ = Control point
❓= The why
 
✅ Focus on a specific problem which took less than a day to solve
❓Focusing on something too big can be daunting
❓Keeps the examples grounded and most relevant to my daily work
 
✅ My journal has minimal overhead to add an entry
❓This reduces the effort required to start writing (otherwise I won’t want to write).
💡
Currently using Notion as a headless CMS - simply add a page to publish!
 
✅ Entries are published and can be accessed publicly
❓I can immediately share with others
❓Forces me to present my argument clearly so I understand it
❓Forces me to double-check assumptions with a google (for fear of looking dumb)
 
✅ Write as though you are explaining to a peer
❓Helps format your thoughts and ensures you understand it yourself
 
✅ Explain the context of the example
❓Not everyone who reads the entry has context - share it so it can be valuable to all
 
✅ Share the full code solution where possible
❓I’ve been stuck in the past with a code snippet solution without knowing where the snippet belongs in the context of my app
 
✅ Make the entry as soon as possible
❓This keeps it fresh, retaining all the complexity of the problem
 
✅ My journal is searchable
❓This makes it easy to find past entries

Conclusion

I hope this helped convince you to start up your own journal!
If you like this site, you can generate it as a template with npx next-notion-blog-builder! This comes with your own development journal which you can keep similar to mine 😍