We've all heard the slogans... "Do more with less", "Work smarter not harder", "Failing to plan means planning to fail", "Slower is faster".
Effective software professionals need to master managing a wide variety of tasks, accounting for how they spend their time and continuously improving their own practices. For many, journaling, task management, and time tracking tools will help with these practices.
However, as David Sparks and Mike Schmitz, hosts of the Focused podcast put it, "life is about more than cranking widgets." The goal of these tools is not to enable getting more done (they probably will), but to enable people to be better stewards of their time and resources. While it may be satisfying to write another unit test, release a new feature, or resolve a stubborn bug, there is always more we could be doing. Mastering the practices and tools described here will help make more time available for what we believe we should be doing the most.
Journaling for productivity is different from what most people think of as keeping a diary. Journaling captures tasks, observations, ideas, and lessons to be periodically reviewed, distilled and migrated.
- Tasks: Identify something that needs to be done (e.g., a bug to fix).
- Observations: Describe something that happened worth remembering almost like in a lab journal.
- Ideas: Capture unspecific but possibly important thoughts to be processed later (e.g., a better approach to a sorting problem).
- Lessons: Record key takeaways worth sharing with others (even your future self).
Effective journaling also demands that one periodically slow down, pause, and reflect to review one's record of activity. Such pauses enable one to make more deliberate decisions (e.g., acting instead of reacting) about future work as well as to recognize patterns of activity worth changing. While there are many approaches to journaling, two useful sets of strategies come from Bullet Journaling by Ryder Carroll and Building A Second Brain by Tiago Forte.
Key journaling strategies
What to journal and how to journal are deeply personal. Here are a few high-level strategies to consider:
First, treat a journal as an append only log. Journaling is most useful when one can make entries quickly and easily. The more effort involved, the less likely journaling will be done. Now, one may ask, "if the journal is append only, and everything is jumbled together, how can you ever find anything?" The answer is in the second key strategy.
Second, periodically reflect and distill what was journaled. Sort through the material to organize what is truly important and copy into more permanent homes. Bullet journaling recommends using pen and paper journals, because effort is required to physically copy things from one place to another.
Common reflection cadences are daily, weekly, and monthly. Where appropriate, it might be worthwhile to align reflection cadence with a project's sprint cadence.
Building a Second Brain recommends progressive summarization, which involves underlining important entries upon daily review, highlighting important underlined entries upon weekly review, and migrating (copying) important highlighted entries upon monthly review.
At longer cadences, more substantial reflection and review are appropriate. For example, at monthly intervals, it's reasonable to check in with yourself and ask ... what should I stop, start, and continue for next month? Are my practices productive and effective, or do I need to make some adjustments?
At longer intervals (e.g., seasonally), it is a good practice to ask yourself deeper questions ... what are my vision/theme/aspiration(s) for this season? How well have I lived up to my aspirations so far? At these more substantial reflection points, it's often a good practice to bring the old journal to a close and start a new journal by copying key information (or migrating) forward to encourage reflecting on what is worth moving forward.
Tools to consider
A video series from Tiago Forte describe which journaling tools work best for different people. In addition, consider Drafts, GoodNotes, Notion, Obsidian, and Evernote.
While journaling aims to help you be a generally more productive person, task management enables productivity of a particular plan of action. If tasks are not managed, they can wind up being left undone or, maybe worse, done without respect for priorities. In turn, this circumstance can hurt longer-term goals.
While journaling aims to help you be a generally more productive person, task management enables productivity of a particular plan of action. If tasks are not managed, they can end up being left undone or, maybe worse, done without respect for priorities. In turn, this circumstance can hurt longer-term goals.
For many, the tactile acts of checking tasks off as done or moving tasks across a project board (e.g., Kanban) have great appeal because they provide a sense of progress.
What goes into task management?
When defining tasks, make them SMART -- specific, measurable, attainable, relevant, and timely.
- Specific: Specify as many of the Five W's as practical (Who is responsible? What is the definition of done? When does it need to be completed? Where does it need to happen? Why is it necessary?)
- Measurable: Identify a quantifiable way for an observer to judge progress or completion. What are the artifacts or evidence of progress or completion?
- Achievable: Is everything needed (experience, skills, time, resources, etc.) to accomplish the task available? This may not always be clearly known before hand.
- Relevant: Is the task related to broader goals and themes?
- Time-bound: What is the deadline? Or what is the maximum time you are willing to put into this task to move it forward?
This information can help determine how a task fits into larger goals, as well as when and how it should be done.
Another useful tool for managing tasks is the Eisenhower Matrix, which divides tasks along two axes: "urgent and not urgent" and "important and not important". The approach suggests that you DO those tasks that are both urgent and important, PLAN those tasks that are not urgent but still important, DELEGATE those tasks that are urgent but not important and ELIMINATE those tasks that are neither urgent nor important.
Tools to consider
A white board can be a useful way to manage tasks, especially when its being shared across a co-located team. Beyond that, consider Apple Reminders, Google Keep, Trello, Jira, TaskWarrior, Omnifocus, Things, Due, and GitHub Projects.
The last key part of this trio of practices is time tracking. That is, keeping track of what you actually spend your time doing. The more frequently you switch tasks and/or are subjected to interruptions, the more challenging time tracking can be. A simple practice uses tally marks for each quarter hour (15 minutes) next to task names/ids.
For example, suppose you plan to spend 4 hours on task A in the morning and 4 hours on task B in the afternoon. Midway through your morning, a collaborator asks you to quickly review an abstract and bio before it is submitted. After spending 15 minutes on this new task C, you take a bathroom break. On your way back, a user pulls you into an office asking for help and you spend 25 minutes with them (new task D). Your 4-hour morning on task A has now become 3 hours and 20 minutes.
Task Time Tallies Total ------------------------------------------- Task A |||| |||| |||| | 3.25 ------------------------------------------- Task B |||| |||| |||| |||| 4.0 ------------------------------------------- Total 7.25
Task Time Tallies Total ------------------------------------------- Task C | 0.25 ------------------------------------------- Task D || 0.5 ------------------------------------------- Total 0.75
Error resulting from quarter-hour resolution can be minimized by rounding and consolidating (e.g., group many short tasks that are less than 5 minutes). With experience, interruption volume can even be predicted and planned accordingly. Alternatively, interruptions can sometimes be managed by simply being wholly unavailable (e.g., in your office not answering calls or email, etc.) except at prescribed times.
When reviewing time logs, ask yourself if time could or should have been spent more productively. Why did that happened? What could be automated/delegated? You may be surprised where you actually spend your time.
Tools to consider
There are automatic and manual time tracking tools. Manual time tracking can be straightforward, as the example above shows. Automatic tools track application usage. If configured properly, the tools can account for the same application being used for different purposes. Some time tracking tools provide informative ways to visualize how time is spent.
Consider ActivityWatch (an automatic time tracker) and TimeWarrior (a manual time tracker).
Specific tools are not as important as the actual practices themselves. Good pencil and paper approaches can be adopted for every practice mentioned here. In fact, some schools of thought recommend using pencil and paper over other tools because it is inexpensive, quick, and infinitely flexible. Starting with pencil and paper is a good idea, and after gaining experience, you will be able to more easily identify digital tools that may fit your needs. Tools should provide value-added functionality and not hinder your workflow. Additionally, almost all tools operate in the cloud, allowing users to access information from anywhere and with any device.
Robert Underwood is a Postdoctoral Appointee at Argonne National Laboratory in the Mathematics and Computer Science Division under Franck Cappello. His research interests are at the intersection of HPC, lossy compression, and data management. He earned his Ph.D. in Computer Science from Clemson University in 2021. He leads development of the LibPressio data compression library ecosystem, is a contributor to the SZ compression framework, and participates in the Joint Laboratory for Extreme Scale Computing. Wherever he is, he advocates for software productivity through sustainable development. He writes articles on his website as he is learning to learn.