As many people take some time to reflect on the past 12 months, I want to review the productivity system I’ve used as a software engineer, and share what have worked for me.
Many tech companies have adopted the scrum approach to plan sprints, many teams I’ve seen use Jira while others use similar products such as Trello. You may think this should be sufficient since Jira already track tasks and assignees, what’s the point of having another todo tracking system? That’s what I thought initially too, but here are a few pitfalls:
Your work todos and personal todos(if you use one) are most likely in different places(one in Jira, the other in your personal todos) that means you have to manage different tools.
Not everything is appropriate to be logged in Jira as a ticket or subtasks for an individual. For example, to complete a design documentation, you may need to schedule meetings with engineers from infra team, you may need to do implement a proof of concept demo before putting it down as proposed solution, you can break them down into sub tasks on Jira, but 1) This level of granularity is often unnecessary for other team members or the team manager to see 2) sub tasks may not be easy to be included in JQL(Jira Query) compared to a story ticket.
Therefore I only use one app to manage all my todos, after experimenting with a handful of Todo apps(Reminder, Google Tasks, WunderList etc), I find Todoist is the best fit for my use case, especially with it’s natural language todo creation and filter views, , here is the projects and filter views I use:
The only thing I think is a bit counterintuitive is that the free plan does not include a reminder feature, which should be the basic feature for a todo app.
I really like the idea of keeping a brag document, before I read this amazing article, I already had something similar to a developer journal that I take notes about problems I encounter and the solutions from day to day work. So I thought why not combine them together, in my opinion the benefits of combining them together are:
Less documents to manage
Can be updated more frequently
Provide more context on how a problem is solved and what kind of achievement it is. For example, your teammates encountered a tricky production bug, you helped them debug the root cause and fixed it quickly, now you can not only keep a note of the problem and the solution, also how you helped your team fix a production bug which removed the risk of losing customers etc(as an achievement)
The journal is chronological, however when we need to retrieve info, we either search by the keyword of the problem or filter out the achievements when we need to write promo doc or update our resumes, so there should be a label or filter feature for you to tag a paragraph to be achievement of certain category.
I used Dynalist mainly because you can nest things infinitely, use labels to find certain content quickly and you can link anywhere within the app, lastly it support sync everywhere as well as backup. Here is the template I created in Dynalist:
There are some alternatives such as workflowy although the free plan has a limit on how many items you can create per month.
Leave a comment below if you are interested in the template I created.
The developer journal + brag document mentioned above often acts as a scratchpad, I dump everything I can think of during the day, add tags when applicable.
Sometimes I noticed myself keep adding notes under the same theme for more than a few days. For example, for the past weeks I’ve been researching how to integrate Route53 with a legacy system, I find new problems I need to answer almost every day, but they are all related to DNS or traffic flow. Once I reached to the point where I am clear on the subject, I will summarize these Q&A into a note, with better structure and formatting so that it could be published to internal wikis or public if appropriate.
I’ve used notion for this type of summary notes, what I like about Notion are the markdown format support, clear user interface and wide range support of integrations, makes it easier for me to export it to different platform with great readability.
Even though I spent majority of my time with my laptop+monitor like every other software engineer, there are times where you want to write things down with just pen and paper, many apps are built for kind of mind mapping or diagram activity, but at the end of the day, using pen and paper allows me to focus more on the complex content I want to create and express more freely/easily.
I use Midori notebooks for everything I want to put down on paper at work. (I also use its cotton notebook for journaling since writing on cotton paper with fountain pen is joyful to me)
Alfred is the best workflow or efficiency apps hands down. I’ve used it for many years and I think I’ve only scratched the surface of its powerful features. You will need to buy the powerpack to use Alfred but it’s a one time purchase(about 40 USD) and it’s worth every penny. I use features such as hotkey, snippet, keywords, workflow every day and I would highly recommend it to every developer or anyone who wants to boost their efficiency.
Magnet: window management, similar apps such as rectangle. In my opinion, window management is a must have if you user monitors to manage many windows.
f.lux: it makes the color of your computer's display adapt to the time of day, warm at night and like sunlight during the day. If you spend hours a day looking at a screen, flux can help reducing eye strain.
Horo: free timer app on Mac with clean UI, this is basically my pomodoro app.
What’s your developer productivity system? Leave a comment below 😎
Also published here.