Articles, podcasts and news about Swift development, by John Sundell.

Working remotely

Published on 10 Mar 2020

Having the freedom to work remotely — either from home, from a co-working space, or from anywhere else — can be incredibly liberating, fun, and actually lead to a quite substantial boost in productivity and overall focus. However, working remotely can also be really challenging, especially in the beginning — as it typically requires a much greater degree of personal accountability and organization than working on-site.

I’ve personally been working remotely for many years, and I still am. So, in this article, I thought I’d share my top five tips and learnings as to how I try to get the very most out of my day-to-day work as a remote developer, writer, and podcaster.

Like always with articles that are of a more personal nature, I just want to point out that the content of this article is based purely on my personal experiences, not on any form of wider research.

Office hours

One of the most challenging aspects of remote work, especially when working from home, is to clearly separate work time from free time. Doing so might not seem like a big deal in the beginning, especially for people who have flexible working hours — but for me, it’s truly essential.

I love my job, and will often choose to code not only for work, but also as a hobby, and for fun. There’s of course nothing wrong with that, but when your home is also your place of work, there’s a risk that work simply becomes a bit too accessible.

A very common fallacy about remote work in general is that people who work remotely will often slack off or get distracted with non-work tasks — but I’ve found that I need to worry a lot more about over-working than under-working. Left unchecked, I could easily work for 10, 12 hours per day — which isn’t very healthy in the long run.

To address this issue, I typically set up office hours that I try my very best to follow, and to have days on which I don’t work at all. If you’re only working from home temporarily, or if you’re part of a team that already has office hours in place, I’d recommend following those times as much as possible. Because regardless if you’re passionate about code or not, we all still need to rest.

Setting up a dedicated workspace

Continuing on the topic of work/free time separation, one of the easiest ways that I’ve found to achieve a clear distinction between when I’m at work versus when I’m simply at home, is to set up a dedicated workspace within my home.

While I personally have a dedicated room within my apartment that’s essentially my office and podcast recording studio, that might not be possible for everyone. However, even you live in a small place or don’t have any spare rooms, there’s still often a way to set up a somewhat separate place for working.

For example, you might be able to put a small table or desk somewhere, or to mark a certain part of an existing table as your “desk”, at least during office hours. You might also be able to buy a cheap desk second-hand, or from a low-cost furniture store (I personally used the 15 Euro “Linnmon” IKEA desk for my first few years of working remotely).

Not only does having a dedicated workspace have ergonomic advantages (working from a couch or bed can be cozy for a while, but often isn’t very comfortable or healthy in the long run), for me, it also lets me literally walk away from work when I’m done for the day — which in turn enables me to truly relax when I’m not working.

Maintaining routines

When commuting and going to a specific place to work, we often tend to form our routines around going back and forth between our home and our workplace. From getting ready to leave in the morning, to perhaps picking up groceries on the way home from work — there are many kinds of routines that can easily start to break down when working from home.

I think actively maintaining those kinds of routines is crucial in order for each day to have a certain degree of structure. Call me old fashioned, but I still get ready in the morning as if I was going to an office. I still have breakfast away from my computer, and I still take breaks for lunch and run my errands after I’m done with work for the day. I’ve found that whenever I compromise those routines (for example by having lunch at my desk, or by starting to work immediately after I wake up), my stress levels rise significantly over time.

At the end of the day, these first three tips all come down to maintaining a solid work/life balance — which may seem like basic stuff, but once you bring your work into your home, I think actively working on that balance and maintaining a robust set of routines becomes increasingly important — at least for me.

Daily and weekly planning

Depending on whether you work as an independent developer or freelancer, or whether you’re part of a team, working remotely might also require you to take a lot more responsibility for organizing your own work.

While the way each person prefers to organize their tasks might differ quite a lot, one thing that I’ve found particularly useful when it comes to staying focused and productive while working remotely is to make daily and weekly lists of tasks that I’m aiming to complete. Not only does that give me a more concrete plan for each day of work, it also gives me a sense of accomplishment whenever I can mark one of those tasks as done.

Like I wrote about in my “Productivity” article back in 2017, apart from my main lists of tasks and goals, I also like to maintain a separate list of ”Quick wins” — smaller tasks that I can pick up whenever I’m between two of my main tasks, or when I’m waiting for someone to complete a set of work that I depend on. By starting each day by completing a small task (like replying to an email, or making a small UI tweak, or doing a code review), I feel like I’m getting started on the right track.

The wonder of video

Whether its via Slack, GitHub or any other channel — I think it’s fair to say that many developers are very used to communicating via text (and sometimes GIFs), so it’s quite easy for that to become the only means of communication and collaboration when working remotely. While text does has a certain efficiency to it, I also think that the value of having face-to-face meetings and discussions shouldn’t be under-estimated.

Thankfully, in this day and age, we have access to so many tools that let us run all sorts of meetings and collaboration sessions over audio, video, and beyond (VR meetings, anyone?). While many teams already do things like agile standups and daily planning sessions over video services like Skype, Slack and Google Hangouts — there are a ton of other ways to incorporate audio and video calls into our daily work.

For example, if I feel like a few other developers and I are getting stuck in a text-based discussion on Slack or GitHub, I typically suggest that we jump on a quick call to discuss the problem face-to-face instead. That way we can resolve misunderstandings, show examples, and come up with a solution much quicker than if we kept going in circles via text.

Pair programming, designing architectures, workshops, and even having agile meetings like retrospectives are all tasks that are 100% possible (and can even be great!) to do over video call. All it takes is to try to foster a culture within the team that having a video call is not necessarily like having a “serious meeting” — it can sort of be the remote working equivalent of a “water cooler discussion”.

Conclusion

How much each individual person will enjoy working remotely will of course vary a lot from person to person. Some people will love the freedom and independence it brings, while others might find themselves missing the presence of coworkers, or struggling with maintaining a solid work/life balance over time.

Regardless, there are definitely ways to improve and refine most kinds of remote work situations, and while most of those improvements will likely require a fair amount of experimentation to get right — I hope that this article has given you some inspiration as to what sort of practices that could be useful to explore.

Becoming a truly successful remote worker is also rarely something that can be done alone — it requires everyone on the team to work together to get better at asynchronous communication, using tools like video calls to bridge the gap between each individual developer, and for everyone to give each other feedback and tips as to what’s working and what’s not. Because even though it might seem like remote work can be a somewhat lonely endeavor, it really doesn’t have to be.

Got questions, comments or feedback? Find me on Twitter or contact me via email.

Thanks for reading! 🚀