You want to reduce the impact of “forgetfulness” and being “pulled out of your flow”.
Intent
Delegate the remembering of things to an external system, in order to free up your headspace for more important tasks.
Solution
Implement a Reliable External Memory System: Use a combination of technological and/or physical tools to keep track of your tasks, ideas, and
notes. This can include apps, digital notebooks, or physical systems like paper planners or sticky notes.
Regular Review and Maintenance: Establish a routine for revisiting and updating your notes, ensuring that your external memory remains a
reliable source of truth. This can be done through daily or weekly reviews.
Prioritize Searchability and Organization: Favor systems that allow for easy searching, tagging, and categorization. Text-based formats are
recommended for their simplicity, version control, and portability across different platforms.
Ensure Accessibility: Make sure that your external memory system is accessible from multiple devices and platforms. This reduces the friction
involved in capturing and retrieving information.
Avoid Over-complication: Keep the system simple and easy to use, avoiding the temptation to over-engineer your external memory with
unnecessary features or integrations. Favour using plain text based formats and tools, as they are easier to version, maintain, and port to
different systems.
Contextual forces
Enablers
The following factors support effective application of the practice:
Trust: You trust your external brain to remember things for you, and you trust yourself to remember to check it.
Routine: You can schedule time consistently, to revisit your notes and take action if needed.
Searchability: You have a system in place that allows you to quickly find what you need.
Availability: Your external brain is easily accessible, and does not require a lot of effort to use.
Simplicity: The system is simple enough to use that it doesn’t add cognitive load, but rather reduces it by offloading memory tasks.
Deterrents
The following factors prevent effective application of the practice:
Inconsistency: You lack trust in your external memory system, either because you forget to check it or because it has failed you in the past.
This inconsistency can lead to missed deadlines or forgotten tasks.
Overwhelm: You have accumulated too many notes across various systems, leading to confusion and difficulty in finding relevant information
when needed. This fragmentation can negate the benefits of using an external memory.
Inconvenience: Your external memory is not easily accessible, requiring too much effort to input or retrieve information. This inconvenience
can lead to underuse and a failure to fully integrate the system into your workflow.
Over-automation: Relying too heavily on automated systems (e.g., task managers or reminders) without a manual review process can lead to
complacency and the overlooking of critical tasks.
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.
Context switches hurt your productivity
Modern systems and activity are too large to fit 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
Application
Consequences
Perfectionism: Using an external memory can lead to perfectionism in tool selection and configuration, where more time is spent fine-tuning
the system than actually using it. This can detract from overall productivity, as the focus shifts from content to tooling.
Over-reliance: There is a risk of becoming too dependent on the external memory, which might diminish your ability to think critically and
solve problems on the spot. If you always rely on your notes for problem-solving, your capacity for improvisation and quick decision-making might
suffer.
Anxiety from Loss of Access: If you lose access to your external memory—whether due to technical issues, loss of physical notes, or being
away from your usual tools—you might experience anxiety or feel lost. This can be particularly troubling if your entire workflow depends on this
system.
Data Overload: As you accumulate more notes and tasks, there is a risk of becoming overwhelmed by the sheer volume of information stored.
Without proper organization and regular culling of outdated or irrelevant information, the system can become a burden rather than a relief.
Mitigation strategies
Set Boundaries for Tooling: Limit the time and effort spent on configuring and selecting tools. Choose a simple, reliable system early on,
and resist the urge to constantly tweak or upgrade it. The focus should be on utility, not perfection.
Periodic Review and Pruning: Regularly review and tidy up your external memory. Remove outdated notes and tasks, and reorganize information
as necessary to prevent data overload. This helps maintain the system’s usefulness and prevents it from becoming a source of stress.
Backup and Redundancy: Implement a backup system to prevent loss of information. This could be as simple as regularly exporting digital notes
or keeping a physical backup of critical information. Consider combining digital and physical systems to mitigate the risk of total
data loss.
Balance Memory with Critical Thinking: While it is important to trust your external memory, make a conscious effort to engage in
problem-solving and critical thinking without immediately turning to your notes. This practice can help maintain and develop cognitive skills
alongside external aids.
Establish a Routine: To avoid inconsistency, create a daily or weekly routine for checking and updating your external memory. This ensures
that your notes remain relevant and actionable and that you develop a habit of relying on the system without becoming overly dependent.
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”.
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.
Pham, T. (2011). A Simple Personal Wiki with VoodooPad. asianefficiency.com. https://www.asianefficiency.com/organization/a-simple-personal-wiki-with-voodoopad.
Traceable decisions: Creating minimal but effective design documentation to track and communicate decisions in software development, reducing the need for excessive meetings and improving team alignment.
Avoid Gold Plating: Write readable code that is as well-designed as it needs to be at this point in time.
Keep a changelog: Maintaining a Changelog in your project’s codebase ensures clear documentation of significant changes, enhancing traceability, collaboration, and efficient release management.
Organize your workflow: Apply a personalized approach to productivity, helping you offload and organize tasks and ideas using a trusted system, ultimately reducing mental stress and enhancing focus.