in ,

Optimizing personal task management using computer science methods


There are already a lot of articles on task/personal/time management on Minority, so one more won’t hurt.

I have referred to many articles to optimize my workflow, but I have never found the best solution. As a student, I have free time, so I am stuck in a situation where I have a lot of time and a lot of things to do, but I don’t know which one to do first. Every morning when I ride my bike to the laboratory, I am full of energy, thinking about what I will do today. When I sit at my workstation and open the ToDo app, the screen is full of to-dos. I immediately fall into choice difficulty. I decided to open the minority to check the daily report first.

Finally, I found a task management solution. Although it is not the best solution (otherwise this article would not have taken half a year to complete), it can cope with my current work and life and barely achieve some balance.

In the process of exploration, I unknowingly used a lot of computer expertise. Everyone’s life and work rhythm is different, but these optimization ideas may be used as a reference.

Why do you need task management?

This is a commonplace question, and there are many articles on the minority, so I won’t go into details here. It is unrealistic and unnecessary to completely distinguish between task/personal/time management, so this article will refer to task management.

Everyone's needs for task management are certainly different. You can refer toThis articleDetermine your work style and then decide whether you need task management.

But I still want to show the task management process first.

“Ordinary” Workflow

My workflow is built around Microsoft ToDo (hereinafter referred to as ToDo). It is very simple and only provides functions such as “My Day”, task lists, deadlines, starred tasks, etc.

Let me introduce “My Day” briefly. It is a special task list. You can add a to-do task to “My Day”. At the end of the day, ToDo will automatically clear the list, which means it will be a new “My Day” the next day.

  • Initialization: I will add some tasks to “My Day” before work every day, which means today's work content
  • Regular updates during the day: After lunch and dinner, I will review the tasks completed in “My Day” and decide on the next task
  • Update from time to time: add a new task when needed, set task priority, deadline, etc.

This workflow is so ordinary, how can I show it to you?

But this is exactly the result of my efforts.

Before this, I was addicted to classification and reflection, and was keen on organizing tasks. I enjoyed building a task board in Notion and dragging tasks. In order to collaborate with others, I would also synchronize the same tasks to Feishu documents and enjoy the process of at classmates. Every night after work, I spent half an hour organizing and classifying tasks, and felt that the day was particularly fulfilling and meaningful.

But this kind of complex system is like a castle in the air, which collapses quickly when time is tight. When I am busy, I don’t have the energy to think about whether this task is generally important or extremely important, or how to classify this task. I just know that there are constant messages on WeChat reminding me to submit materials quickly and finish the work quickly.

A complex system does not necessarily mean a good system. A complex system itself will bring a huge maintenance burden, coupled with external interference (such as the instructor's fatal series of calls), it will naturally make the system difficult to maintain in the long run.

KISS:Keep It Simple and Stupid.

Eric S. Raymond designed the Unix operating system based on the KISS principle in “The Art of Unix Programming”. I also want to create a “simple and stupid” task management system to cope with this “grassroots” world.

Why is task management so difficult?

Task management, in simple terms, is deciding what should be done and when. Such a seemingly simple problem is difficult to find the optimal solution. I decided to use my professional knowledge to solve this problem from the perspective of computer science, so the first task is –Prove that there is no optimal solution to this problem

This proof is actually quite difficult, although I can't prove it. As a second choice, I can prove that task management takes a long time to find the optimal solution, and this time may be ridiculously long.

The key to the proof is to compare it to a difficult problem in computer science – the knapsack problem.

Knapsack problem

Given a set of items (multiple items), each item has its own weight and price. There is a backpack with a certain capacity. Which items should we put into the backpack so that the total weight of the items does not exceed the capacity of the backpack and the total price of the items in the backpack is the highest.

The knapsack problem looks simple, but it has long been proven to be a “difficult problem”.1You might think that this is not that difficult, why not try them one by one, put the items in one by one, and change a few items when the backpack can't fit anymore, and you can always try out a solution with the highest price. Computers do the same, and they do it faster than people. But as the number of items increases, it will take a lot of time to try all the solutions. Even at the speed of computers, it may still take thousands of years to traverse, which is why the knapsack problem is “difficult”.

If we think of tasks as items and a day as a backpack, then the time required for the task corresponds to the weight of the item, and the reward for completing the task corresponds to the price of the item. Task management is actually deciding which tasks to put into the backpack of a day so that the price of tasks completed within a day is the highest. The concept of time required for a task is relatively specific, but the reward for completing a task is a matter of opinion. Everyone has different views on the reward for completing a task. For example, I think the reward for writing a paper is greater than the reward for making a page of PPT for my tutor (the reward setting is also reasonable in reverse).

Since task management can be seamlessly replaced by the knapsack problem, it makes sense that I can’t find the optimal solution, because this problem is too difficult. So let’s find a “feasible solution” for task management—not necessarily the best, but it works.

How to optimize task management?

Pruning optimization

For each task, I need to decide whether to include the task in “My Day”. This decision-making process is visualized as a tree (decision tree). Each option (yes or no) is like a branch, leading to different results. Pruning optimization is to cut off the branches of the decision tree.

In human terms,Not all tasks are worth putting in To-DoInstead of constantly looking for an app that can meet all your needs, it is better to simplify your needs.

How can I ensure the correctness of pruning? How can I ensure that the simplified requirements can meet my work needs?

First, clarify the purpose of task managementImprove work efficiencyso I removed all life-related tasks from ToDo. For a while, I tried to manage my entire life and work in ToDo, such as categorizing some tasks into lists such as “Games I want to play”, “Movies I want to watch”, and “Wishlist”. It seems that ToDo has more functions and is more useful, but it distracts my attention. I can't quickly determine the content of the day's work, but instead I am thinking about what movie I should watch today.

After removing the life list, I also consciously control the tasks added to ToDo, no longer greedily adding all the possible tasks I can think of to ToDo, and making sure that a task is important enough to enter my decision tree. I also regularly delete tasks from ToDo, because if a task always exists, it means it is not important, otherwise it should have been completed long ago.

In the end, there are usually no more than five tasks in ToDo, and I only need to select 2-3 tasks to add to “My Day”, which is quick and easy.

Locality Principle

Although computers are fast, they are also forgetful. Therefore, when designing programs, we usually tend to reuse nearby data. This is the “locality principle” in system design.

The human brain is also very forgetful, and many things are forgotten in a blink of an eye, so I also try my bestPlace tasks close to resolution

When I was writing papers in the past, I would leave some tasks in the “paper writing” list every day and solve them the next day, such as “For part XXX, you can refer to XXX paper”. The next day, I opened the writing software, but I stared at the long paragraphs of text and tried my best to get back to the idea of ​​last night. Maybe I remembered while writing: Oh, I seem to have recorded some tasks in the list yesterday. Then I opened ToDo to find the corresponding tasks, and then started writing the paper again by referring to the writing software.

According to the principle of locality, the tasks in “paper writing” should be placed in the writing software itself, because this is a task that I need to solve when I write a paper. In ToDo, I only need to remind myself to write a paper. Therefore, when I write a paper, I will use brackets or bold marks to mark the corresponding places “You can refer to XXX paper here”, and I can start to complete the tasks according to the corresponding marks when writing the paper the next day. This method is also used in writing code, notes, and minority articles.

The locality principle ensures that the brain stays focused and does not forget what needs to be done due to frequent context switching, making work across the day smoother.

Task completion time expectation

An important constraint in the knapsack problem is the capacity of the knapsack, which corresponds to task management: how to ensure that the planned tasks can be completed on the same day. It is easy to determine the working hours of a day, but if the task is not completed, how do you know how long it will take?

Good time managers may be able to skillfully estimate the relatively accurate time to complete tasks, so that the amount of tasks scheduled every day will be reasonable. However, it is difficult for ordinary people to accurately estimate the time to complete tasks – usually there is no need to estimate, because there will always be someone to help you determine the time to complete the task.

Supervisor: How long will it take to get a version of this paper?

Me: Um… I don't know

Instructor: Could you give me a version this afternoon?

Me: (can only) yes.

Joking aside, estimating the time required for tasks is valuable and often overlooked. If I don't consider the time required for tasks, I will want to leave a whole block of time for each task to be completed, and only tackle one task in the morning. When I am assigned some work at short notice, my time becomes fragmented and I don't want to tackle the planned tasks. As a result, I found that a task does not need a whole morning to complete. If I can plan it according to the granularity of hours, I can arrange several tasks in one morning.

A morning sounds short, but four hours is very long. Apart from sleeping, how many four-hour days can we have in a day?

I consciously estimate the time required for each task and use mathematical methods to exercise my estimation ability. Expected value is a mathematical tool often used in algorithm analysis, which represents the average result of possible states after multiple experiments.

If you record the “estimated completion time” and “actual completion time” of each task, you can know whether each guess is accurate. This difference can be called “guessing bias.” In “The Hacker and the Painter,” the author plans daily task schedules by calculating the mathematical expectation of all historical task guessing biases.

According to historical data, if the expected deviation is 15%, then if I now estimate that a task will take 120 minutes to complete, the actual completion time is likely to be 120+120*0.15=138 minutes.

Based on the mathematical expectation of the deviation value, I can have a rough impression of how long each task will take to complete, which also makes it easier for me to plan “my day” more efficiently.

The Nature of Task Management and Stupid Systems

The essence of task management is personal management. If a person is self-disciplined enough, like a sophisticated machine, there is no need for all kinds of fancy tools or methodologies. All you need to do is list the tasks and complete them one by one. But I am not so self-disciplined, and my execution is not strong enough, so my schedule is constantly disrupted. I am also greedy and want to complete as many tasks as possible in the shortest possible time. These ideas prompted me to constantly change my task management ideas, optimize my own work processes, and keep moving closer to rationality.

The current task management system is still not optimal. There will still be days when I don’t know what I want to do. But I can’t blame the system for this confusion. It is a stupid system that can only wait for my input. There are many smart AI assistants now that can think ahead of time and intelligently plan daily tasks, but it can’t do it, and I don’t want it to do it. In the process of improving it, I can discover my real needs.

Computer science is a man-made science. Many theories are derived from human society, and in turn, I use them for myself. In this process, I completed the task, but more importantly, I changed myself so that I can gracefully join the “grassroots team” in the future.

> Follow Minority Little Red Bookexperience the wonderful digital life🍃

> Practical and easy to use Genuine softwarethe minority presents you 🚀

What do you think?

Leave a Reply

Your email address will not be published. Required fields are marked *

GIPHY App Key not set. Please check settings

siftrss – Secondary filtering of RSS and generation of new RSS address (online tool)

Reversing A Network Protocol