leverage based todo list
Well its been a month since I started using this todo list every day (as mentioned in this post), and I am still sticking with it.
I found this idea while reading The Effective Engineer by Edmond Lau. This was a great book overall, and think that it provides a lot of valuable information about software development in an easy to digest format. It has a definite Silicon Valley slant, which is acknowledged by the author, but may put off some readers/make some of the advice not as applicable in certain situations. For me, the biggest takeaway is the core idea of using leverage for decision making.
Leverage for any given task is the value produced per unit time. This provides a concrete way to analyze what tasks should be focused on, given that one defines their "value" well. A key dimension to consider is time, be it delayed or repeated returns. It is obvious we should work on important and urgent tasks (Customer A needs feature X by the end of the week). However, just as (if not more) vital are important but non-urgent tasks. These are critical activities that do not find their way into the main plan, but can spell disaster if unaddressed. For most teams, these are problems like scalability, code quality, and hiring. All of these do not provide much immediate value, but shine when emphasized ahead of time. They can prevent failures and enable new growth and activities for entire teams and companies. Ignoring them can lead to an entire project grinding to a halt to do a lack of talent, unmaintable code, or the inability to support a growing user base.
Leverage can be applied at the individual level when using todo lists. Instead of keeping a sorted list of tasks, have 1 main task and a backlog of tasks. Periodically perform a pairwise comparison between the main task and every task in the backlog. If there is a task that provides higher leverage and covers the switching costs, then consider switching to it. Otherwise, work on the main task until is complete, then select the next highest leverage task and move on.
I have tried todo lists before, but often found myself unable to stick with it as I'd spend more time curating my list than working on tasks. This method provides me a low mental overhead while also giving me enough structure to complete my tasks. I've actually stuck to this method, and plan to stick with it for the foreseeable future. All personal and work tasks get thrown on the list, and get crossed off when their done.
Software-wise, I've tried to keep it stupid simple and stay away from more robust (agile-style) applications. I've done todo lists on paper before, but found myself frustrated when I had an idea or remembered something but didn't have my notebook handy. I've used apps that distract with their complexity or didn't provide the same experience on desktop and mobile. The tool I've been sticking with this time is TeuxDeux.
Intentionally restricted and minimalist, this app provides all of the functionality I need and nothing more. This flows perfectly with the leverage based todo list described above, and allow me to separate but keep track of current tasks and backlog tasks. "Someday lists" can be used for ideas, tasks that will need to be done in the future, or short lived lists like grocery and shopping lists. The only other feature I need is the ability to schedule recurring tasks, which is also built in. There is not much else to distract me from focusing on crossing off tasks, which is my main goal here.
Overall, I think the approach to todo lists outlined by Edmond Lau is exceptional, especially when combined with the right tool. I'd recommend anyone who works in or around software engineering to check out the Effective Engine, and hope you find it as useful as I have.