Python Training by Dan Bader

Keep journals to become a better developer

I keep two kinds of journals during my day to day work that I’d like to tell you about. They help me stay organized and motivate me to improve my skills as a developer.

Work logs

The first journal is a work log where I record what I’m working on during each hour of the day. I also use it to jot down the occasional observation or idea. I take these notes to compare what I wanted to do each day and what I actually worked on. It’s useful in daily standups too, where it helps you compile a summary of the previous day for your teammates.

I use Day One for this type of journal. It supports Markdown and comes with a helper app that reminds you to update your journal in regular intervals1. Check out Brett Tepstra’s Doing or just use a plain text file if you want something simpler2. Here are some examples of what I recorded over the last few days:

  • The pageview threshold should work more like a high-pass filter, e.g only if we see a resource on more than 5% of the traffic we should consider it for prefetching.
  • The health check script dies with a timeout connection error in deployed_git_hash().
  • Refactoring the clientside URL transform code.
  • Old versions of prototype.js break Array.reduce

A “thing’s I’ve learned” file

The second journal is a separate file in which I track what I learned about software development in the past. I update this file every time I realize something that’s worth remembering. Every month I revisit all items to see if they’re still valid or if they need tweaking. I find such a journal tremendously helpful, especially as a tool to remind me about the progress I’ve made.

I use Notational Velocity for this journal but something like Evernote works too. Here’s an excerpt of what’s in my ‘things I’ve learned’ file at the moment:

Pairing & Social:

  • Switch drivers more often when pair-programming; either per feature or after fixed time intervals.
  • How to end shouting matches quickly and painlessly: Grab a whiteboard, write down pseudo code for each approach, write down pros and cons for each approach, discuss. Usually consensus will just happen magically at this point.

Code Reviews:

  • Focus on the user facing parts and the core functionality first. This is the most important thing, architecture and code quality come right after.

JavaScript:

  • Given several ways to do something look at popular libraries like jQuery or Zepto to find the most compatible way to do it.

I found keeping journals to be a great technique for staying organized and becoming a better software developer. You should give them a try too! Let me know how it went and what your experiences were.


  1. I’ve set Day One to alert me every hour which is a good tradeoff between being to coarse and getting interrupted too often. 

  2. If you’re looking for something paper-based then try Bullet Journals. I’ve heard great things about this technique. 

<strong><em>Improve Your Python</em></strong> with a fresh 🐍 <strong>Python Trick</strong> 💌 every couple of days

Improve Your Python with a fresh 🐍 Python Trick 💌 every couple of days

🔒 No spam ever. Unsubscribe any time.

This article was filed under: career, craftsmanship, and programming.

Related Articles:
  • How to become a better software developer – A while ago I gave a presentation at Mobify’s monthly Engineering Meeting where I spoke about various tactics that can help you become the best software developer you can be. I figured this may be useful to other folks as well and decided to share it in a blog post.
  • Software engineer reading list: My favourite books about programming – Reading books is one of the best ways to improve your craftsmanship and to become a better software developer. This is a continuously updated list with my favourite programming books, sorted by topic. I link to the ebook version where possible but most books should be available made from dead trees as well.
  • Remote work tip: Rubber ducking with a journal – This productivity hack for developers might sound a little bit crazy, but I found that it works quite well.
  • 7 ways to avoid aggravation in code reviews – Thankfully many software companies have adopted code reviews as a best practice these days. An overlooked aspect of how code reviews are conducted is how they can also affect the relationship between engineers negatively.
  • Remote work tip: Keeping your team in the loop with screencasts – Lately I’ve been doing a lot of remote collaboration with a team of designers and developers. This article explains a technique for sharing information that I found really helpful.
Latest Articles:
← Browse All Articles