My best system yet: text-based project management
Introduction
My current system is simple to start now and refine later when the time is right. It’s flexible enough to adapt to changing circumstances and when information is no longer relevant its efficient to update or remove. With this system in place, I’m able to achieve consistent progress on the things that matter.
But let’s wind back a little to the time when it all began: In 2016, I returned from my Center for Applied Rationality retreat with a newfound motivation to change my life. After the retreat I ended up with a huge load of inspiration to try plenty of new methods, read more books, cultivate better habits, and stay in touch with all these new people. A feeling that probably many of you know from an EAG or LWCW conference. I quickly realized that I needed a way to structure all of this new information to make use of it. This was the moment that I went on my journey to project management.
3 years later, at my last job as product manager, I had the honor to work with an excellent manager. He seemingly never dropped a ball and achieved this with ease. He auto-magically remembered to bring up that meeting from past week again just at the most convenient time when its not yet too late and resources are available. He never needed to write something down. This is very impressive. I’m convinced that everyone can achieve this, without overloading their brain.
To achieve organization excellence, it’s crucial to understand that getting things done involves a long breath. As the saying goes, “Rome was not built in a day” and so every step has a follow up step all the way until a goal is achieved. As Mark Manson put it: “Life is essentially an endless series of problems”. Naturally this leads to many simultaneous projects as the norm, so better handle them without breaking a sweat.
All management tools, whether for projects, to-dos, birthdays, code, workflows, customer relations, and so on, ultimately boil down to knowledge management. Arguably the most powerful tool humans have ever developed to manage knowledge is language. Therefore, to achieve 10x management, we must embrace tools that allow us to manage knowledge effectively. By leveraging the power of language and information processing, we can build systems that are both easy to start and easy to scale.
Perfection is achieved when you can’t remove anything. This statement is especially true when it comes to a system to work with over a long time period. Over the years, I learned that the antagonists of any structure is entropy in the form of uncertainty, obsolescence, confusion, and oblivion.
To combat these antagonists, the best system is one that is general rather than specialized, requires zero setup instead of a full fledged system, is simple instead of complex, and is fast and efficient instead of slow and tedious. By prioritizing these characteristics, I arrived at a text based system which I call Hierarchical Workflow Scaffolding.
Let’s dive in and explore how you can achieve excellence in project management.
How to …
… write a workflow as a hierarchy?
A hierarchical workflow is basically a tree—a well known data structure in computer science. It consists of text lines with sub-entries, called goals, and text-lines without sub-entries, called steps. While dipping my toe into game development I’ve came across behavior trees—a whole research field focusing on structuring behavior as trees. But because the system is to be primarily used by humans we can relax the interpretation and make it more general and simple.
When following a hierarchical workflow scaffold we do depth first traversal, meaning the next actionable step of a goal is always the inner most & top/left most step, as it has the highest priority among the most concrete. Whenever a step is completed its siblings are next in line. Finally when all sub-steps of a goal are completed we evaluate whether the goal itself is achieved or not.
… check off tasks?
Completed tasks are no longer relevant. But tasks can also become irrelevant when they are out-of-date, because the execution simply failed or for any other reason. To achieve this depending on the tool you are using, a task can be deleted (which is not very satisfying but gets the job done) or marked as completed and kept, but automatically hidden away to reduce complexity.
… refine the workflow?
A workflow scaffold continuously evolves going from coarse to fine. New information needs to be integrated whenever it pops up during the day, while checking the current workflow scaffold for plausibility or after completing a task when follow up steps have been revealed. Examples:
If new steps have been revealed necessary to achieve a parent goal simply add them at the end.
If only part of a task has been completed. Split of the task into the part that has and hasn’t been completed and check off the one that has.
If an implicit goal could not have been achieved after completing a single step, state the goal explicitly, move the first task within and add any follow ups.
… specify deferred and due date?
Using date chips: A date at the start of the line means its a due date aka deadline. A date chip at the end means deferred date, a time at which the task gets relevant again.
… attach contextual information?
Store information directly as sub entries to a task. If the task has actual sub-entries that are tasks, create a parent entry called “info” and place all information within.
Store information externally and link to it. This could be a Google doc, or a text node somewhere else within the same tool.
When it comes to knowledge management, there are two intuitive methods for how our brain memorize information: episodic and semantic memory. Episodic memory involves encoding and retrieving information about the context, location, and sequence of events. Semantic memory, on the other hand, involves encoding and retrieving abstract concepts and facts. Each of these types of memory have their respective tools that extend the brain’s capabilities.
Clearly when scaffolding a workflow it’s all about the context and sequence of events. But many work items requires certain input in the form of abstract concepts or facts and also produce such information as output. Optimally, the Hierarchical Workflow Scaffolding system should be implemented using a tool that supports both episodic and semantic memory.
Currently, my system lives inside Dynalist, an outliner similar to Workflowy, Tana or Logseq. These tools have great support for hierarchical structures, making them the first choice for such system. However, it may also be implemented in rich text editors such as Obsidian, Notion, or Google Docs, each with their respective pros and cons.
Outlook
The system presented is simple yet very powerful and can easily be extensible with more language features. But with great power comes great responsibility to handle it wisely.
On the one hand confidence is essential to have less not more work. Just like driving a car instead of walking, saves you much sweat, but worrying about whether you can steer it safely adds stress. Similarly, getting a glimpse of the internal complexity of a plane while a mechanic is repairing it may cause concern about whether it’s all done correctly while in the air. Confidence that a workflow scaffold is realistic and meets all external expectations is important and easily obtainable reassurance, such as in the form of visualizations, would certainly prove very helpful.
On the other, reducing complexity and therefore making information easy to comprehend is key to making a system useful. Tools such as Dynalist or GoogleDocs are agnostic to what is managed with it. They don’t understand the semantic of the information and can’t support in the differentiation between relevant and irrelevant. Although I currently manage around 20 concurrent high level project areas with such agnostic tools, a tool specialized for the semantics behind hierarchical workflow scaffolds would increase this number greatly.
Here are some areas where I see room for improvement just to name a few:
Keeping the next actionable step visible for collapsed nodes
Predicting the workload ahead of time
Reusing past workflows as templates
Collaborating with others
If you are excited to explore this topic further, I invite you to reach out! I’m curious to hear about your experiences, opinions, and ideas. As we look into the future, it’s important to continue to evolve and improve our knowledge management systems to be able to tackle the great problems of humanity.
Let’s start a conversation and Let me hear about your experience!
( https://t.me/+OlGnNtKvQoxmMWI0 )
Any system that people actually use is better than a system they do not. Writing the sequences of steps on sheets of paper (one paper per project, one line per task) and sticking them to your wall would probably do 80% of the job...
When I think about “Getting Things Done”, another useful functionality would be to add context. For example, if the next step is “buy food”, the context is “in the shop”. (As in: it is important to remember this task when you are in the shop. But if you remember it anywhere else, it only makes sense as a reminder to go to the shop.) You should be able to assign contexts to steps, and when a node is collapsed, you should still see the context of its next step. Even better, you should see the nodes grouped by context of their next steps, somehow. Even better, you should get a notification (when you enter the shop, when you turn on your PC, when you call person X) if there is a project that has a next step in that context.
Great observation, that most tasks are context depended in terms of a specific location. Immediately more of these contexts or pre-conditions pop up in my mind: social circle, mindset, internet connection, … Thinking about this more, there seem to be 2 different types of conditions: some that have to be met once sometime before doing something and some that have to be met continuously to be able to do something. Maybe one could connect a system that creates location/time based reminders for steps with pre-conditions. What do you think?
The contexts will probably be highly individual. For example, for me it would make sense to have (a shorter name for) a context “I am at home, my kids are not at home, I am not tired yet, and I have at least an hour of uninterrupted free time”.
If things are so individual, probably tags are the way to go. You could then have a auto-generated step containing all steps with a particular tag. Logseq and Tana actually have such query items. In OmniFocus I’ve seen a hierarchical tag structure which looked pretty useful.
When it comes to the 80%, I’d agree with you if “the job” is defined as “getting relief from the complexity in the moment”. I’d rather define “the job” as having a system that you can trust and rely on for a prolonged time. Then a piece of paper is not cutting it, based on my experience—its too expensive to make changes.
I do agree with your attitude of better writing things on paper with the simplest imaginable structure than not structuring things at all.
Have you looked at org mode in emacs? I use it to structure my notes and todo items. Org mode is able to further enhance the process by listing todo items (by date, tag etc), showing an agenda and so on and on and on.
Can you go into more detail how a service that ghost writes texts for you helps you improve your project management? (suspect this is a bot generated advertisement)