Track your TODOs

Just add a link...

Are you using a work tracker? If so, inside a TODO comment, include a link to the work in the work tracker:

# TODO Replace the naive algorithm with an O(log(n)) algorithm https://work-tracker/ITEM-001
def fib(n):
    if n < 0:
        return f(n+2) - f(n+1)
    elif n == 0:
        return 0
    elif n == 1:
        return 1
    elif n > 1:
        return f(n-1) + f(n-2)
    else:
        raise IncompleteIfTreeException("Values: {}".format(json.dumps({"n": n})))

There’s a few advantages to including a link to the work inside a TODO comment:

  • It ensures the TODO work is in the work tracker which has two implications:

    • You’ll be promoted sooner. From a fast coding perspective, promotions matter because promotions lead to higher impact projects. If you track your TODOs in the work tracker, it’s visible. You are rewarded. You are promoted sooner. If you don’t track your TODOs and you spend time completing them…well, your boss doesn’t dig through git, looking for deleted TODOs, no matter how technical he is. He looks at the work tracker. The work you did is not in the work tracker. It doesn't exist. You aren’t rewarded. You are promoted later.

    • The project ships sooner. If work is in the work tracker, it will be prioritized. Time is spent efficiently. The project ships sooner. If it’s not in the work tracker, it won’t be prioritized. Time is spent inefficiently. The project ships later.

  • It helps the reader (which might be you in 6 months). If the reader sees that fib is implemented inefficiently, she might need to know why. The code cannot explain why. She reads the comment. She learns that fib will be implemented efficiently later. Now she has follow up questions. Who's working on it? When will it be done? To find out, she finds the work in the work tracker. If there's no link to the work, her manual search in the work tracker is slow. It might not even be in the work tracker, and proving the work is not in the tracker is a very slow process. If the comment contains the ticket number, but not a fully qualified url, it’s much faster to look it up, but she still has to build the url manually. Copy the text. Start typing a ticket url in the browser, press -> to auto complete, delete the ticket id from the url, paste the new ticket id, then press enter. If there is a link, all she does is copy the text, paste in the browser, press enter. Or in some editors, she just clicks the URL. Speed up her search and leave a fully qualified link.