Use an External Memory

Meta Info

Ammerse Values:
A: Mi: M: E: R: S: Ex:
Author: Stijn Dejongh
Published on: 2023-08-23 00:00:00 +0000 UTC

./free-mind.gif >

Problem statement

You want to reduce the impact of “forgetfulness” and being “pulled out of your flow”.

Intent

Contextual forces

What is this? These describe factors at play that influence the outcome of the practice. They are not necessarily good or bad, but they are important to be aware of. Some contextual forces are enablers, giving the practice a higher chance of being useful. Others are deterrents, making the practice less useful in your given context.
  • Context switches hurt your productivity
  • Modern systems and activity are too large to pit in your brain completely
  • The more you have to keep in memory, the more likely you will forget something
  • Having a mental task list becomes exhausting after a while
  • We wish to be able to easily report progress when queried
  • Hand-overs take a lot of time and effort
  • Computers are great at remembering stuff

Solution

  • Use a technological or physical aid to keep track of your ideas and notes
  • Make sure you trust your external brain, in order to free head-space
  • Revisit your notes regularly
  • favour text-based formats, as they are easier to version, maintain and port
  • Whatever system you use, make sure it is easily accessible, and non-disruptive to your primary focus

Rationale

Human memory is extremely lossy. We are better equipped for creative, constructive thinking than for storing factual information. Focus is easily disrupted. It makes practical and economic sense to try and find a way to free up your headspace and thinking power for the endeavours that actually matter.

Examples

There are many online (free and paid) systems that offer you a way to store your thoughts. Some of them are listed below in the references section.

You can use a simple text-based system to keep track of your thoughts, or To-Do items. I personally prefer using these text-based systems as they allow for easier cross-platform portability, and avoid being locked in to a single vendor solution. This entire knowledge base can be seen as one big “external brain”.

Personal testimonials / opinions

Stijn’s developer logs

Working on enterprise projects tends to be a continuous struggle against interruptions, pivots, and moving targets. In order to stay on track, it helps to keep track of your actions and thoughts. The best way I have found so far is to keep track of my actions on different projects by including short developer logs inside the code repositories. This allows me to come back to a project that has been on ice for a while with relatively low friction. In addition to this, I try and keep a day-to-day running count of what happened during any given day. This is done in a separate log, which I try to write at the end of the day.

tip: One of my favourite ways of note-taking while working on a software project is to add a dev_notes directory to my codebase. For short-lived projects or changes, I tend to add this file to the .gitignore configuration of my repository as to not muck up the workspace of my colleagues. For more long-term or collaborative projects, consider creating a dedicated repository to host all of your developer notes. You can get creative with symbolic links to make these folders show up in your codebase regardless of their physical location.

References