Working at Home
Over the past week, as I’m sure many others in the software world have, I’ve been adjusting to working at home. The COVID-19 pandemic has hit the SF Bay Area hard, and in order to try to reduce the spread of the virus the local government has imposed a mandatory 14 day shelter-in-place order. This has disrupted the lives of all in the area, especially those working in industries that requires them to interact directly with others: foodservice, hospitality, transportation, and tourism all come to mind as areas of the economy are most hard hit by these dramatic changes to daily life. Supporting these workers is critical to ensuring that the lasting impact of the virus is minimized.
From a personal perspective I find myself in the privileged position of being able to conduct my work from my home mostly without interruption to my productivity. I’ve been lucky enough to have jobs that allow me to work from home throughout my career, but this is my first experience with working remotely for an extended period of time. With that in mind, I’ve been carefully noting things that have worked well for me this week and making plans to improve in the next few weeks. I’ve interestingly found a selection of these ideas to be mappable to the same principles we strive to apply in our engineering work, and as many in my field have been doing over the past few days I figured that I’d share my discoveries in hopes that others can learn something and perhaps be inspired to improve their work from home lives.
When working “normally” in the office I have a regular routine that I execute on a daily and weekly basis. For me this routine includes exercise, meal timing, meeting schedule - all the habits and behaviours that surround my working time to make me as productive as possible throughout the day. I’m doing my best to ensure that a change in working environment is minimally disruptive to these habits: I still get up in the morning and go for my morning walk, I’ve been doing my best to eat on my usual schedule, I still prioritize attending meetings and checking in with my teammates. Much like good test results, or properly-designed workflows the repeatability of these behaviors supports me doing my best work, creating the best product possible, and enjoying the process of doing my work; to eliminate these practices on account of a change in workplace wouldn’t serve me.
Separation of Concerns
Keeping my personal life and my work life distinct isn’t easy when working remotely. I’m usually able to mentally disconnect from work easily by leaving the office, but since my office and my living space are now one in the same I don’t have the same luxury of physical separation. In order to make sure that I am able to keep some semblance of distinction between working time and personal time I’ve been careful to keep my concerns separated: I’m not going to try to get housework done during working hours, I’m using that time to focus on my work. Similarly, when I’m not “on the clock” I’ve been careful to keep my work machine put away, out of sight and out of mind. Just as normal I’m not checking email late at night, I’m avoiding Slack messaging off of working hours. Separating the concerns of my life, just like separating concerns within code, is important to making sure that I’m organized and don’t “burn out” on my work.
Much like writing code that produces responsive experiences for consumers, I want to work in a manner that creates a highly-responsive experience for my co-workers. In order to facilitate this while working remotely I keep as active and aware as possible on Slack, Email, and GitHub. Since those that may need me don’t have the ability to just walk by my desk when they need to chat it is extra important for me to respond with speed to these messages in a way that makes sure that I’m not blocking the work of others by not being responsive. Each of these important platforms has notification features that I utilize to ensure that I’m being pushed the most important information as it happens while also avoiding unnecessary distraction.
As developers we spend a good deal of time building tools and systems that are designed to optimize productivity - CI, tests, linters, analytical datasets and more all support the process of software engineering. Some developers, myself included, find that further optimizing our work environments to be both fun and rewarding: I have spent a lot of time configuring my editor, creating scripts that automate frequent tasks, and even built my own keyboard! I’ve carried this over to my home working environment as much as possible: I’ve set up a good chair, a spare monitor, mouse, keyboard, and a headset for video conferencing. All these tools and accessories not only help me create my best work, but also put me in the mindset of work when I set myself to it for the day. Much like stepping through the office doors helps me get my brain firing I find that my at-home working environment is conducive to setting myself up for success throughout the day.
These items seem to carry a theme: keeping my home working environment and routine as similar to my office working environment as possible. I believe that emulating the office as much as possible will be important for me succeeding during this time, especially as someone who thrives on routine and structure. Keeping that in mind I’m avoiding being overly strict with myself: I’m keenly aware that I am violating some of the “best practices” of working at home. For example I’ve heard many say that getting dressed as though you’re going to the office is conducive to working well; this may be true but I’ve also found that I’m perfectly productive in my sweatpants! Allowing myself to cherry-pick productive habits and balance them with personal comfort supports a work-life balance that remains important no matter my working location.
At the end of the day, everyone should be doing what’s best for them, especially in this challenging time. I encourage everyone to build a working environment that works for you: it should support a healthy balance between your productive professional life and your personal obligations and happiness. As I’ve engaged in this I’ve tried hard to remember that my situation is dramatically different from others’ and its important to recognize that what works well for me isn’t necessarily going to be effective for for others. We should keep in mind that individual workflows, personal responsibilities, family obligations, financial situations, and more all impact how dramatic the transition to remote work has been and will continue to be for those whom we work with daily. We as people should remember in our daily interactions to give each other additional grace, recognize the challenges that everyone is facing, and be as open and understanding as possible.