My typical working day as Software Engineer

What I work on

I have a personal Google doc with a list of notes. For every task I am supposed to do, I have a small header and I dump my notes there in the form of a bullet list. When I finish the task, I delete them. I also keep a link towards the goals of the team/org.

This is handy for a few reasons:

  • Links to docs, related code snippets, code pointers, bugs.
  • Notes after asking someone.
  • Dump mental state at the end of the day.
  • Describe what I am supposed to work on next morning.

If the notes start becoming more than say around 10 lines, I consider seriously either polishing them and adding them to a bug for context, or writing a design doc. Otherwise, important details may go to the description of the code review request. My doc is currently about 3 pages, despite using it for quite some time.

When I work on what

I split my day in two parts: before lunch and after lunch. Mornings are output focused.

In the mornings, I disable almost all interruptions. That means no email, no chat, no meetings. Exceptions are code reviews and high priority bugs. During the mornings, I focus on more strategic and challenging problems, for goals towards the OKRs of the quarter, unblocking work for others, addressing the root cause of a some important issue, thinking about the design of a system that I don’t know yet how to approach and so on. With the exception of various communications I participate, I would say that mornings contribute to 80-90% of my output, despite being less than 50% of my working time.

After lunch I read and react on the various communication channels (email/chat/non critical bugs). I have the various meetings that help me reorient my work, learn what new is happening, ask or provide help and so on. Among these tasks, I try to do the more clear-cut part of work, like finishing some coding task, finishing some kind of documentation. I also update my personal doc with the various inputs, so I don’t forget them and I don’t rely on means (chat, email) in the next morning, where I don’t have access.

At the end of the day, I run my “shutdown” routine. I update my personal doc by taking notes of the unfinished tasks and writing at the top of the doc what I am supposed to do on the next day. A couple of words are usually sufficient.

Email

I receive several hundreds of emails every day. Not because I am so important, but because that’s how many async communications are conducted.

On gmail, I use filters extensively. Most mailing lists have a corresponding filter and a label. The label is hidden, unless it contains messages. I also have extra filters and separate labels for emails directly addressed to me, from my manager, from my management chain, and PMs.

I also filter out most emails from automated tools that I consider as redundant to a special label that I almost never look at. For example, I almost never look at emails for code reviews. I have a plugin that informs me of incoming code review requests or comments on my code and a customized dashboard so I can quickly look at what my peer group is working on.

When I skim through the titles of the emails under a specific label, the grouping already helps me adjust quickly my prior on how important this email may be and its broader context.

I try to be responsive within a day to the emails addressed to me. I try to read, or mark as read, all my emails within a week.

Meetings

I am based in Europe. Currently, most of my collaborators are either in Europe or in US. Therefore, afternoons/evenings is a common time for everyone. In my case, this is enough time for meetings, rarely reaching capacity. Syncing with people on the east coast of US is not a issue. It is much more challenging with people on the west coast, which in my case is mostly California. I try to limit these meetings to about 1/week because they are quite late for me due to the 9 hours difference.

Chat

I use it for mostly informal, quick turn-around communication. It takes about 10-15 minutes per day in my case, only in the afternoon/evening.

What I don’t do

I have a rule since essentially I started working full-time about 8-9 years ago. At work, I don’t browse non-work websites. This allows me to finish my working hours earlier than otherwise.

My particular situation

The above routine is personal, based on my circumstances. For context, I am a senior software engineer at Google located in Zurich.

It is quite likely that it doesn’t work well for others. Even in my case, it is possible that there is a much better way of organizing. I have been using this routine for about 2-3 years now, with small variations and to me it feels like an improvement compared to not splitting my day in two halves. I also tried to have a week of disabling interruptions, inspired by the book of “Deep Work” by Cal Newport, but that didn’t work for me, since a sufficient amount of changes/events happen that I need to consider or react.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s