I wanted to share a simple, yet powerful technique I discovered during my 2nd year as a software engineer, which has served me extremely well ever since. I recommend it to everyone I mentor and have received positive feedback from other SDEs who’ve used this technique. Drumroll please…
I manage a daily TODO list for myself.
Ok I know, that was probably a bit anticlimactic. Let me explain further before you nickname me MOTO: Master of the Obvious. :-P
The format of the TODO list is really simple. It’s just a plain text file with two sections of bulleted lists. It looks like this:
TODO -most important thing I need to do -next most important thing I need to do -... Accomplished -stuff I did -more stuff I did
I keep my TODO items in priority order, and use the Accomplished section to record what I did that day. As I add items to the Accomplished section, I remove them from the TODO section. As new tasks come in, I insert them into the TODO section in priority order. Each day, I copy the file from the day before into a new file and erase the Accomplished section. I name the text files after the date (MM:DD.txt) and organize the files into folders by year. Again, I know it may seem simple or obvious, but disciplined use of this technique over time promotes some very healthy behaviors.
First, it forces me to list and prioritize the work I have to do. This allows me to stay on task, since I can refer to the list if I’m not sure what I should be working on next. It also gives me a queue of work so if I get blocked on one task, I can make progress on the next task in the queue. It also helps me see when I don’t have clarity around certain tasks. If an item on the TODO list is hanging around for a week or longer, something’s wrong. Maybe the deliverable of the task is not well defined, or the task should be broken down into smaller tasks.
Another important benefit is that the list forces me to admit when I have too many things on my plate. My rule of thumb is if the TODO list gets larger than 4 things, it’s time to make a change. This may mean talking to my manager or scrum master to (1) ensure they agree with my priorities and (2) see if there are alternatives like handing tasks off to someone else on the team. If no changes can be made, it at least helps reset expectations (mine and my manager’s) on how much I will be able to accomplish and by when.
The Accomplished section provides a little morale boost at the end of each day since you can see your impact visually. However, where it really helps is, when you’re working at a company that requires you to write an annual self review. I’ve been lucky in my career and have had several good managers, however I never rely on my manager to remember everything I’ve done in a year. I always want to be able to vouch for myself. My TODO list technique helps me do this.
Before writing my self review, I go to my TODO list folder for the previous year and do a simple “less *.txt”. I can then step through all of the files for that year in order. I focus on the Accomplished section and when I see something that stands out as noteworthy, I note it down. It generally takes me less than 20 minutes to look through all files for a year and at the end, I have a rough outline for my self review. I then build a narrative around those key accomplishments.
A year is a really long time. There have been several times that I have looked through TODO list files from January or February and thought, “Wow, that was last year? I thought that was the year before.” Without the TODO list logs, I would have missed putting that on my self review. Also, while some contributions by software developers are easy to track down, e.g., commit history, others are not, like participating in design reviews or giving a talk. The TODO list mechanism helps me capture all accomplishments, whether they result in code being written or not.
The result is that my self reviews are very detailed and complete. I once had a manager, whose performance feedback review for me was basically echoing my self review and saying “I acknowledge that James did this. I acknowledge that James also did this…” It was kind of funny, but also illustrates the power of this mechanism. I feel much more in control of my own career, because I’m confident in my ability to provide complete data on my contributions. It can also make your manager’s life easier, which is never a bad thing to do.
If you’re skeptical, I still recommend giving it a try. It’s so simple and low cost, what could it hurt? Give it at least a month and see what you think. You don’t have to use my exact format, but the key elements to preserve are (1) making work visible, (2) forcing priority decisions and early communication on expectations, and (3) maintaining a log of accomplishments.