James Dunne

Thoughts on software development

13 Sep 2020

COVID Made Me a Remote

I am now a remote worker. Out of necessity. And after years of scepticism…

I love it.

I didn’t think remote work would work for me. I was wrong. Remote working has big perks.

TLDR

Benefits

You have hidden costs when you work in an office. Before remote working, you can’t see these costs. They’re normal.

  • Commuting wastes time. I now have more personal time. Time to spend on my craft and my family. Or to chill out.
  • Commuting drains money. I have extra in the bank without fuel costs. I can afford to pay for better tools. I’m even reducing my debt.
  • And commuting saps energy. I have far more energy to spend on side-projects, family and solving problems.
  • I eat better. I can now cook from scratch on my lunch. The kitchen is only 10 feet away. It’s hard to resist greasy café food when you forget your lunch and you can pay by card.
  • And team unity increased. Showing up daily unifies the team. That’s what provides structure. A routine and a shared mission.

Do

Do these when you move to remote work.

  • Talk to family ahead of time. Avoid awkward first-day conversations. Set expectations before the move. But don’t be dogmatic.
  • Find your own routine. Avoid sticking to your old office routine. And don’t feel bad when it adjusts. Adapt it. Find a new normal.
  • Get a decent chair. A dining chair doesn’t cut it and causes pain. And damage.
  • Clean an Apple keyboard with an air duster. Don’t remove the keys. It’s a nightmare putting them back.
  • Make time for loved ones. Your family is important. And they deserve your time. Don’t neglect your family by overloading yourself. I did this with all the new time and energy I had.
  • Split your day into work and play. Avoid video games on lunch breaks. Dishonoured 2 is an awesome game. I lost too many hours to it.

What’s essential

These things helped make remote working work.

  • Keeping to a strict virtual morning huddle at 10:30 on weekdays.
  • Using screen sharing for troubleshooting.
  • Using GitHub for developer collaboration and project management.
  • Using CircleCI for continuous testing, linting and integration.
  • A shared growth-mindset towards code review and experimentation.
  • A culture of learning and continuous improvement. Some team members proved natural presenters, delivering educational screencasts.
  • One-step project set ups (or as close as possible). This is crucial. Team members can get going in as few steps as possible.

What can go wrong

  • My situation fits remote working. I no longer live with my children. Combined with lockdown, I have far more free time than others might. Especially with young children. School and childcare - help here.
  • I’ve tasted remote working. It’s brilliant. But I worry I won’t be happy returning to an office full time. I can’t forget what remote work is like. It is superior. For me, at least. But I’d get back into the swing of it, regardless.
  • Lack of good tools at home once my hardware gets recalled back to the office. I do have a plan for this though - I have two towers I can upgrade.

Context

On the 16th of March, Boris Johnson advised the British public to work from home. The next day, the boss sends me home with the company’s hardware. I’ve been remote working since.

I have ADHD. That makes working life difficult. And I believed the office environment provided:

  • Structure
  • Routine
  • A shared goal with the whole team present

Essential to effective working with ADHD.

But I was wrong

My productivity didn’t drop. It increased. The office environment did not provide structure, routine and unity. What really mattered:

  • Turning up every day
  • The whole team turning up too

Structure, routine and sense of shared mission. Physical proximity was irrelevant.

Unexpected Benefits

Commuting sucks. It saps energy. It wastes time. And it burns money. Cutting the commute from your day eliminates all of that drain.

Finances

I now have money at the end of the month.

I’m less stressed. I’m on far better terms with my family. I get along better with the dog.

Health

I eat far healthier. I can now cook food from scratch for lunch while working from home. Instead of just grabbing a burger from the café, I can cook something with higher nutritional value.

Less time sitting in a car in rush hour makes a difference too. In fact, I’m 12lb lighter.

Side-projects

Before, I didn’t have the energy or capacity to work on side projects. I now have ample. This text is a testament to that.

Team Unity

And at work, team unity boosted. We’re still here. The team being present drives me forward and it’s far more effective with so much less stress.

Screw-ups

Not discussing with family beforehand

I had an awkward conversation with my dad on the first day. It was alright afterwards. But it could have been avoided by talking about it ahead of time.

You should manage the expectations of other household members before moving to a remote work setting.

This could also be avoided by setting up a dedicated workspace, whether an empty room or a rented space.

Expecting it to work like the office

At first, I tried working the usual 9:30 p.m. to 5:30 p.m. minimum. But this isn’t practical in a separate setting. You might need to take a little longer here. And you’re free to work longer elsewhere.

I had to establish my own routine. I’ve settled around 10 a.m. to 6 p.m. - 6:30 p.m.

The importance of a good chair

I left my chair at work. Big mistake. A dining room chair does not cut it. In fact, it caused me significant pain. I lasted a few hours before I drove back and grabbed a chair. Having a good chair is essential to a productive day.

Cleaning an Apple keyboard

My spacebar jammed. So I thought I’d take it off to give it a good clean. I took hours to fit it back on. My fine motor control skills are well out of practice. Someone suggested an air duster. So I’m stocking up on those.

Neglecting loved ones

With my newfound energy, I got carried away. I’d get stuck into a side project and, before I knew it, it was 1 a.m. My partner wasn’t pleased.

I’ve felt guilty for using more of the time to work on my craft - sometimes at the expense of my loved ones. But really, I’m working harder than usual - I want to come out of this crisis stronger.

Video games

It’s juvenile. But I’m open and honest. Video games on a break = terrible idea. I’d lose track of time. I’d look at the clock and I’ve had an hour longer than intended. But after so much hard work, it helped unwind.

After reflection, I stopped this. It’s better to reserve an entire portion of the day to work. And then, only after that period, can I relax with video games.

Things that proved essential

Sending us home with good tools

Good tools have an incredible impact on my productivity. Not having those tools at home made it more painful.

After the boss sent us home with our tools, I realised how my crappy hardware was killing my drive to work at home.

Getting permission to work on open source, side-projects in my spare time was one of the first things I did. I recommend any remote do the same before using their employer’s hardware.

Virtual morning huddles

Going into lockdown, we made morning huddles a strict rule. Announced over slack at ten thirty on the dot, everyone goes over where they’re up to, where they’re headed and whether they’re stuck.

Make a point of unblocking team members. If you can rescue them from a day of headache and they learn something, you’re being productive. This works really well combined with a culture of learning.

Freedom to banter and catch up is important too. Have a jolly with your team. It eliminates the lonely remote feeling. It adds the social touch that I was worried I would miss going from working in the office.

We used Zoom for this for a while. In the end, we upgraded our Slack subscription and used that for group calls.

Unexpected Bonus

It turns out these go better than the in person counterpart. By having the computer in front of you, you have access to all information you might need at your fingertips.

Screen Share troubleshooting

Troubleshooting through screen sharing replaces the need to sit side by side with somebody. This makes it easy to pair with someone if they get stuck, which follows from the huddle (if not resolved before then).

We do this over Zoom too.

Unexpected Bonus

Screen shares happen without leaving your seat. And, more powerful still, the troubleshooter has access to both their machine and the troubled.

GitHub

We moved over to GitHub about a year ago. We found the UX far better than BitBucket. And it did exactly what we needed.

It shined when going remote. Having all information about a project in one place makes for solid remote working. The transition was seamless.

We use Git for version control and GitHub for repo hosting. But this applies to any VCS and hosting provider that has:

  • Project/issue management
  • CI support
  • Code review support

GitLab comes to mind. Perhaps BitBucket + Atlassian suite works too.

Unexpected Bonus

Using the extra free time, we have contributed to open source through GitHub. And if a project proves essential for work, company-time contributions are necessary for major blocking issues.

CircleCI

After the move to GitHub, we started relying heavy on CI during code review. It was essential when working with a remote developer living abroad.

And it became crucial when the whole team transitioned to remote work. On projects without a good CI setup, you really feel it.

Note

We picked CircleCI. But really we haven’t explored other solutions as a team. GitLab, GitHub Actions or Travis could work just as well.

Shared growth-mindset

A growth mindset has become a bit of a buzzword. But I read the book not long after it came out and it had a massive impact on my thinking about personal growth. Implementing a team-wide growth mindset has had a radical impact on our work. Especially in code review.

Accept reasonable constructive criticism as a valuable learning resource. Readily accept them as a way to get better, rather than failing at being good.

Avoid viewing criticism as hurtful to the ego. In fact, if you want to do your best work, learning from constructive feedback is essential.

Do be respectful though. Calling names, e.g “you’re an idiot”, is harmful. Any question of ability should be left to private performance review and out of the code review process.

Culture of Learning

Building a culture of learning on our team was instrumental in getting through the COVID pandemic.

Take a radical, pragmatic approach to work. Can something be improved? If you can improve it, work out a plan of attack. Answer these questions and bring them to the team:

  • How will this change work in practice?
  • How will this change integrate with the team?
  • How can this be integrated incrementally?
  • And why? What is the benefit? Felt or measured?

If you have resources that back you up, include those too.

Regular retrospectives and post-mortems are an awesome space for these ideas.

One-step project setup

Being able to get a project running and ready for development in one command was a massive help moving into remote work.

It’s sometimes difficult to achieve that ideal. But the closer we get to it, the happier we are.

Docker has been instrumental. Scrapping the project and starting it up again from scratch in seconds to minutes is a powerful tool. This has boosted our ability to collaborate and review each other’s work. I totally recommend adding export DOCKER_BUILDKIT=1 to your terminal config.

In general, building a habit of automation means that we continuously improve our output, by quality and timeframes.

Even if it’s just a bash script, or a Makefile. It can make a world of difference.

Future Challenges

My situation isn’t general

I live with my parents. But I used to live with my children so I get it. Young children make it hard to get things done on a remote basis.

Outside of lockdown, I would suggest childcare and school. Savings from remote working may help fund childcare. My colleague, Neil, sees it working out that way.

Update: I now look after my daughter full time. This has come with challenges: I now handle school runs, bed-times and distractions during the day. My boss is supportive.

Wanting to stay remote

For ten years, me and the boss agreed that office work was superior to remote work for us. For me, that has been flipped on its head.

Luckily The Fresh now sees remote work as a viable option due to our lockdown experience. But we are all open to new information - it’s part of our culture.

I foresee a compromise between office and remote work. Others might not be so lucky. But I’m noticing that there’s more openness than a lack of.

Lack of good tools

I don’t own the tools I’m using now. I can’t expect to keep these to do remote work. Besides, it’d be impractical if on a part office/remote schedule.

I will be left with inferior tools.

All is not lost. I could buy my own tools with the savings from remote working. And my partner’s dad sent me an extra screen. Plus I have my own hardware. I could upgrade it.

Summing up

Remote working is possible, even with ADHD and all the distractions a household brings.

For people with kids, childcare and school may provide space to remote work. Although I understand this may be difficult or impossible.

I love remote working. I pray that I can continue doing so post-lockdown. Now that I’ve tried it, I don’t think I could ever go back.