Taking vacations to explore other interests, as well as breaks throughout the day, are good ways to recharge so we can maintain product focus and avoid burnout. However this can be hard to put into action and easy to forget when we are deep “in the weeds”, resulting in a vicious cycle.
I’ve noticed a few times where I would feel particularity stressed out because I was stuck on a problem with a deadline. I would get bogged down with trying the first thing that came to mind instead of analyzing the problem fully. I would forget to take breaks or skip them in hopes that this would give me more time to solve the problem.
However in hindsight I realized that this approach is naive and unhealthy. It actually took longer to try to brute-force the solution which was why there wasn’t any time for breaks. One behaviour I am trying to do more of is to spend a bit more time brainstorming possible explanations of a problem before confirming which is the correct one.
Here are some ideas I’ve been trying out that I hope others would find helpful.
Explore the unknowns first
Planning the features of a product and delivering them on time is key to its success. However, as products become increasingly complex involving many teams, one challenge is accurately estimating the amount of time required for each phase in advance without having access to all the required information.
There might be dependencies that fall in one of two categories: something you have seen before and can provide a good time estimate, or something unknown and thus requires an investigation before an estimate can be reached.
In almost every case the investigation should be tackled first because it can uncover additional dependencies and unknowns which can stall the project. Finding this out earlier in the product lifecycle increases the chances that an alternative solution can be found or additional resources can be allocated.
From personal experience, discovering the unknowns first provides a greater peace of mind that the project can finish on time.
Consult tribe knowledge
Stackoverflow is one of the first places I check because it provide a wealth of suggestions from others, but I found that this is mostly true only for common questions and environment setups; when it comes to questions that are highly specific, there usually isn’t an answer available or there’s no question altogether.
I found that internal wikis and bug trackers are often an overlooked resource and can be a treasure trove of information for obscure and highly-specific questions. And as always, you should consider updating the page if you discover more information or discrepancies to help fellow travellers!
Multitasking is bad
Computers are great at solving problems in parallel but personally I’m finding that for humans the opposite is true for complex tasks. The biggest reason is that constantly switching contexts takes time and is a mental burden.
For example, it can take a significant amount of time to recompile a project, even though the change is trivial. This makes it easy to get sidetracked into looking at PRs or checking email, only to forget what the difference between the previous build was that you are trying to test. Instead, use the time waiting for the build to further analyze the problem or verify your solution.
Writing down the current task
We still need to keep track of all the tasks that we need to accomplish. I like to keep a daily list of top priority items. Everyday I would bring over any remaining tasks, add new new ones, and reprioritize the items.
This frees up my mind, allowing me to focus solely on the current task without having to recall future tasks. I can also estimate the size of each task and see my progress throughout the day. And of course there is always the satisfaction of crossing each task off.