- communication issues escalate. The lack of small daily positive interactions make any friction-ful interactions more intense. Direct communication is my only strategy for fixing this. For example, "Hey, I don't like it when you post a ton of comments before I ask for review. I like to put up PRs before I'm 100% done so that people can see what I'm working on, but they're very much works-in-progress." rather than just stewing and being resentful of someone pointing out something I already knew and just hadn't gotten to yet.
- timezones suuuuuck. A couple hours is manageable, but working with an east coast / west coast / india team was a real problem. We have team quiet hours until noon ET / 9PT a couple days a week, so even though I'm 3 hours behind I don't feel behind when I show up for work.
- Everyone needs to be a strong and profuse written communicator. If folks aren't in the habit of proactively providing lots of context, people will get left behind and lose context for why decisions were made, and the product suffers. We're used to reading facial expressions and body language to actively gauge understanding in conversation, and it's harder to get that remotely.
Of course, there are many pros to remote teams; so it's all about tradeoffs.
It feels liberating at first, but absolutely suffocating if you're not deliberate to get out of the house. And at least personally, an occasional social Slack chat or video conference ends up feeling forced and contrived. It's just not enough - you have to be deliberate in seeing the people you love.
There may also be more of a tendency to sort of... drift off, or lose interest, allowing personal life to creep into work hours.
This seems to be exacerbated if management doesn't really know how to handle fully remote teams. The past chatter on HN seems to suggest that managing remote teams is a distinct skill from more traditional management.
So far my preference is a nice office environment with a part-time remote option > full-time remote > crappy (unproductive or uncomfortable) office environment.
Processes: things work great when all the process are remote-first. When you have processes that are local-first but have exceptions for remotes, things get worse. For example: one of our meetings used to be phone-only: everybody would dial in, even if they were in the office, since there was no room reserved for it. It worked great for remotes, since everybody was remote in that situation. As soon as things changed and the team was mostly concentrated in a single office, they started reserving the room for the majority of the people and then dialing through the Cisco thing so remotes could participate. It turns our a lot of the communication started using non-verbal channels such as gestures, faces, sometimes people would talk too quiet for the microphone to pickup, so the whole experience for the remotes was very downgraded, to the point they started being second class citizens in the meeting. And from that, things escalate very quickly to 'remotes are second-class employees'.
In an agile environment with many changes in-flight each sprint, or doing daily hand-offs (for a follow-the-sun support model), the communication overhead becomes significant. It's tough to keep up with what N other coworkers are doing every day, plus do your own work.
In my group I've seen some pretty bad resentments build because of the perception that people were left out of the loop. Or, because someone didn't overcommunicate his changes and broke something downstream.
Coupled with the fact that there's a 12+ hour turnaround time on even simple communications between the sites, people can feel pretty frustrated.
We use a Slack channel for daily standup updates and changelog; that helps if people are disciplined about it.
The worst thing though is "othering" -- it's human nature to point fingers at the group across the hall, in the next building, and definitely across the ocean. If you have immature or problematic personalities on the team (don't we all), rifts will occur and deepen without regular face-to-face contact.
First off, I am historically very bad at reading and checking emails. For companies that are mostly local, this wasn't a huge deal, since people could just come and bother me whenever they needed me, but it's a problem when I'm basically remote. Honestly, the way I've gotten around this is setting a recurring reminder on my calendar to check my email, so that I don't forget.
Also, due to the three-hour time difference, I end up having to dial into a lot of meetings from home during dinner-time. This isn't the worst thing in the world, but it can be annoying.
It's worth it overall, I personally like NY better than California, and that same three hour time difference allows me to show up to work late without anyone really caring, which is really useful if I have to go to the post office or the bank.
However, downsides include:
messenger clients/email are just inherently inefficient. Absolutely necessary, but inefficient. Being there in person will always be better for work that requires in depth discussion. The psychological conditioning of always staying alert for the next message (whether that be chat room, message, phone) is not conducive to sustain concentration and intellectual work. I try to keep to a pattern of two checks through the day, but this is not universally accepted through the workforce. Always on is not healthy.
Time differences ug.
Public holiday and cultural differences.
I am no fan of micromanagement, but it can be hard to on-board new staff and team members. Sometimes junior staff do need supervision and handling, and that can be tough remotely.
And while it's nice to live in fantasy world where everyone gets along, conflict is also harder remotely. When people "go rogue" that's tough.
Also, if people are going off on the wrong track or there is a miscommunication, it's easier for it to stay hidden for longer.
Lastly, its easier for changes and decisions to happen without your input when you're remote. Unless you're just working on a small team which naturally gets along and everyone agrees (and then you risk groupthink), authority structures do exist, and decisions get made where authority lies. Those with proximity to authority have an inherent advantage in getting their way.
How does my org handle it? Well, we have budget/process for travel and a yearly off-site and offices in all key cities in the country. I hate travel for work, so that expenditure is safe on my end, but not all orgs/jobs are going to have all that as an option.
Otherwise you just have to be aware of these issues and figure out a culture, tech, and protocols to deal with them.
But a big pro is no messages before 3pm,lots of time to focus!
My biggest business gripe is the lower fidelity and higher friction with collaboration (planned and not) with my team and other departments / businesses. There's a loss of energy, creativity, focus, ease, alignment, etc. that just isn't there for me with email, video/phone, chat, etc. My biggest personal gripe is related. I'm more extraverted and the loss of regular social interactions is tough. I miss going out for lunches, breaks, drinks, walks, etc. with people that I think are interesting without having to do much to set it up.
I come in to the corporate office once a month for about a week. It feels like we get more done, have a good amount of fun, and clear things up faster. Even remote, we're still doing much better than the team before us which was full onsite. I guess that's why they keep me around. But I miss the tighter vibe and will probably soon start looking for something near me.
I've always felt that some hybrid approach would work well. Some days, everybody's in (group stuff); some days, everybody's working from home (crank).
If it's not a "remote first" company, then you need to be prepared to be left out of a lot of conversations. Your opportunity to grow beyond engineering is extremely limited. You'll likely never be promoted past engineer. IMO this is the biggest issue you have to face as a remote engineer, the rest is in the noise.
If it IS a "remote first" company, then all the other issues presented are worth focussing on.
A butts-in-seats manager or VPE or whatever can really ruin it. The lack of trust is really toxic.
The one thing that I have found to be a predictor of success in each of my remote roles was whether the company was all-in on remote work. If you're one of the handful of guys for whom they tolerate remote work, you're likely to experience all the problems mentioned here. It's different if everyone's on board with remote work. And practically speaking, it's pretty unusual for a company to be all-in on remote work if the company is not 100% remote (or at least very nearly so).
For me, at least, there are essentially no cons and significant pros to remote work.
The difficulty of getting impromptu questions answered (you always have to schedule meeting time, so you may waste 30mins for an 8 minute question) will eventually lead to office hours if you want to be productive. And it's always fun when people decide to take meetings while working from a coffee shop.
On the plus side, no need to put on pants. (Except in the coffee shop...)
They would fly in to NYC and meet up about 2-3 times per year for a few days to the main office for big milestone stuff. The rest of the time they paired off in groups and worked on tasks. Communication was via slack and skype for voice I believe. Though they mainly just used slack. He rather enjoyed it.
Previously, he worked remotely for a small webdev shop and they micromanaged him until he quit. He said they would call, email and message him at least 8 times a day for progress on even the most mundane of projects. YMMV.
you cannot take shortcuts. like I am building for an operation, so I can walk over to the head of ops, or one of the managers and just figure out my problem. For my remote engineers, we gotta spec everything out otherwise they simply can't build it. And timezone issues make that even harder.
My personal preference is to make a team 100% distributed (could be multiple teams in a company) or 100% local. 100% local can solve local problems. Distributed teams can solve problems that don't require interactions with other teams.
The watercooler brainstorming loss that ent101 mentioned is a big loss and I miss it very much.
Communication and collaboration is key. It is harder when there is time zone differences, but you have to find a way to bring everyone together online at least a few times per week.
From our experience, regular team standups and brainstorming sessions are a great way to get the whole team in sync, on the same page, and move in one direction as a single unit, and that is why we built Taskade for nimble and distributed teams.
It also does a number on your soft skills if you don't get out much. I noticed a sharp decrease in job offer rate for job interviews before and after my first job in a remote team for 2 years. But other factors might have also been at play at the change in offer rate.
Almost half of our respondents say they don’t feel boundaries between their work and personal life. Moreover, the opportunity to not go to the office creates temptation or the ability to spend more time working;
A fifth of the respondents feel detached from the team or have difficulties in communication. These aspects emphasize the importance of proper communication with your employees;
Also, 20% of experienced respondents have difficulties with self-organization and loneliness.
It’s important to control the overworking compulsion and build strong communication within your team. Don’t let your employees feel isolated and try to spot burnout, because it may lead to disastrous effects. The short-term result of increased productivity isn’t worth losing a good specialist.
I started out as a freelancer put in charge of the organization's data operations (getting data from point A to point B with processing in-between). I took the legacy system and transformed it into the next generation of data processing tooling. Slowly the situation morphed from me doing all the work (platform and handling business requests with the platform) to bringing on team members to start carrying the vision forward by taking parts of my previous responsibilities.
The high level is that one teammate now takes on platform improvements, and two others handle business requests.
The person I report to is responsible for the broad cultural structure of our tech team. He put me in charge and gave me full autonomy of half of the technical enterprise (the other half is an internal web application produced by two other teams).
Independence and autonomy are important qualities to allow your teammates in a remote environment (for data operations, anyway), this does require finding teammates with an adequate level of competence and agency when hiring.
I find that 1:1 chat based communication creates a casual environment which leads to an easier formation of relationships with my teammates.
I help form relationships overtime between teammates by asking them directly to rely on others for information, code review, and discussion of platform improvements, and training.
I've never worked within an organization remotely on its payroll.
I think a defining quality of what makes my organization work well remotely is that we're all independent freelancers, so I don't have to worry about what motivates my teammates as much, because it's fairly obvious, they are working for themselves and are motivated to make money by billing hours.
It seems counter-intuitive, but for over 3 years now I've watched roughly the same group of people, with the addition of new people, continue to work together without drama or politics.
Scott Hanselman is one of the highest-profile remote workers, check out his blog entries:
https://www.hanselman.com/blog/CategoryView.aspx?category=Re...
- They don't have the right equipment (e.g use built in mic in an open office)
- They won't want to use the tools the remote team uses (e.g. rarely on slack, prefer email for async communication)
We don't address them so much as we power thru them.
We have usually gotten around this by saying - "hey , let us take this discussion over slack and may be XXX would have some good ideas to discuss".
Here are a few things that I miss in our remote team:
Face to face one-on-ones: I have weekly 1-1s with each team-mate. In previous on-site teams I found that fortnightly or even monthly was more than enough, but with the remote team I find that a weekly 30-60 minute catch-up is needed, because one loses a lot of nuance via even good remote tools. Is Bob feeling cranky today? On-site it was trivial to discern but remote is much harder. Then the 1-1s are less effective because one loses a bunch of the subtle organic cues that guide you in a normal 1-1 conversation.
Whiteboards: Sometimes we have long, complex conversations to resolve issues that a simple whiteboard diagram would resolve in 2 minutes. I know there are a bunch of tech tools that could alleviate this, but we don't have the budget for the really slick solutions and the less slick solutions are seriously lacking. We're considering buying a few ipad pros as an experiment - would be great to hear if anyone has had good results with these. I've not found a replacement for the humble whiteboard when it comes to hashing out a workflow or a layout.
Over-the-shoulder pair programming: I've not found a good solution to this. Screen sharing is abou half of the problem. Being able to point, grab the keyboard, etc. is the harder part to solve. VSCode live sharing is about the best option I've found, everything else has been close to useless.
Planning and retrospective meetings seem to take way longer and seem to be less effective than they are IRL. I think engagement is part of it (I'm a stickler for closing laptops/phones during meetings and that is obviously impossible during videoconference meetings). Another part of it is probably just the small size of faces on video calls. When you have 6 other people in a meeting, they each have less than a postcard of screen estate, so expressions are super hard to read, humour becomes harder, etc. Consequently it's super hard to keep meetings energised and on track.
Small acts of kindness: In our previous team, we would often make each other coffee or bring each other lunch. I found these little gestures go a long way towards easing the friction inherent in a team working hard together.
I'm not sure how many of these are caused/exacerbated by living in a country with crappy, unreliable internet. Maybe huge bandwidth would help?
Here are a few things that we found useful to help alleviate the above:
1. Regular in-person get-togethers: At least once per quarter, we have a 1-2 day session together, with lots of food, some beers. We spend a lot of time on high-level planning and introspection during these sessions, but also get together for detailed work sessions and pairing on hard problems.
2. Document the shit out of everything. Readmes, meeting notes, TIL slack channels, howtos and guides and playbooks for every possible activity. We have a rule that if someone teaches you something you have to document the lesson somewhere for the next person. Its baked into our team culture now and it helps us a lot, because you can't just grab someone to help you when you need it.
3. Zero tolerance for bad behaviour: Its a million times harder to fix conflicts remotely, so we have to be extra kind and respectful to each other
4. Shorter iterations: We run week sprints with documented goals and documented review/kaizen every week. It's a high overhead, but it helps keep everyone in sync, as well as highlighting problems quickly