Do not fall into the error of the artisan who boasts of twenty years experience in his craft while in fact he has had only one year of experience — twenty times.
Trevanian in Shubumi: A Novel.
I genuinely enjoy problem solving. But there is one thing I hate: solving a problem more than once. That didn’t happen very often when I was working with one technology for an extended period, or when I was working on relatively simple systems or simple problems. I could keep everything in my head. But as the systems I worked on grew more complex, and as I worked on more and different sorts of problems, I started to forget things. I could recognize a problem as one I’d solved before, but I couldn’t remember exactly what I did, and so I had to go through the problem solving process all over again. It felt so wasteful.
This is when I discovered the power of a journal. Not a paper journal, of course – an electronic journal. I started to keep detailed notes about things I discovered while researching problems, the steps I took while investigating, my mental models and how they evolved, and the final solutions to problems. Over time, I built up a library over 10,000 journal entries, organized by topic area and searchable by keyword.
This lets me put my experience to work. If I’ve been away from an area for a while, I can easily refresh my memory by looking at my old notes. If I’m carrying out a complicated procedure, like installing a complex piece of software, I can look at my notes to see what steps are, and what I did to resolve any problems I ran into during the process.
The features I’ve found the most useful in journaling software are:
- Rich text editing (graphics and tables are a must). I like to include screenshots as well as text in my journal entries.
- Full-text searching across all journal entries.
- Support for organizing topics (parent/child structuring, categorization)
Microsoft OneNote works reasonably well – I use that to organize the material for this blog. Lotus Notes works pretty well, too, although it is pretty long in the tooth these days. But if you work at a place that still uses Notes, you can create a discussion database on your work machine and journal in that.
Don’t have a fancy tool? Don’t let that stop you. You can use a text editor for your journal entries, and organize your text documentations into a directory structure. You can even download a free development environment like Eclipse and organize your journal entries using an Eclipse project.
There’s another kind of journaling that can be a time-saver – journaling through code. If your trouble hacking involves running common sequences of commands against systems, you can capture those commands in code so you can run them easily. I’ve used Ansible for that to good effect. You can create a library of Ansible playbooks, where a playbook is a set of steps in some general IT process. You can execute playbooks against one or more systems, so that lets you kick off a sequence of commands on your laptop and have them run on many computers at once.
If you aren’t keeping a journal, why not start? Make every year of experience count!