I'm a huge fan of remote work. It'd be hard to convince me to take a role where I need to go to an office every day.
I wanted to get that out of the way quickly so I can focus on the bad parts, because even as a remote work believer, there are still days where I wish we could get everyone in the same room for an hour without it being a big deal and involving air travel.
Where you live still matters.
Since many companies opt to hire "Remote US"(or wherever they are from) your options will often be limited by location.
This is especially true if you don't live in the USA. The competition for remote jobs is huge, so the stakes can be higher at the interview stage. In that case, chances are that you will work in "remote worldwide" companies (which are not the majority) and it's likely you will be setup as a contractor or hired through a 3rd party "employer of record" service.
That first day in a remote team is weird.
Joining a remote team is great, but don't expect the first day in a new company to be the same as joining a new team in an office.
I remember my first week as a fully remote worker, it was super weird and it took a little time to feel like I could even take a step away from the computer. I was notifying my coworkers of important events like "I'll be out for the next 10 minutes" for no reason other than being worried they might think I was slacking off :)
If you can't travel at all, you'll miss out on really important opportunities to get to meet your team.
I found that going to team retreats and other get togethers helps improve personal relationships. There's very little ways to replace the unstructured interactions that happen in a team retreat setting. Making coffee together in the morning, cooking for a group, walking around the block to go grab a drink or buy supplies, going on a fun day trip, solving unexpected issues that happen during the week.... these are all things that help you connect in different ways.
A team retreat feels like 6 months worth of interactions compressed in a single week or two. Instead of talking near the coffee machine for 30 seconds, you essentially live with these people for days, either in a big house or in an hotel. You don't get that very often in offices, but I suspect some teams would benefit from this even if they have offices to go to every day.
The counterpart to "bonding in team retreats" is important, too: it can be done outside of "in person" interactions, it works great, but in my opinion you need to also have some real world interactions, especially when someone first joins so that they can feel fully integrated.
Being the only team member who never met the team in person can be super weird, but after that first meetup, things get easier.
Sometimes I miss looking around the officee and being able to see my coworkers excited about the same things as me.
The last time we got some great news that affected the team, I felt a little sad that I couldn't be in the same room to congratulate the parties involved and hang out with the team after we got the announcement.
There'll be one on ones, and gifs in slack. There'll be adhoc chats and spur of the moment calls with folks.
But even then, it won't be the same as being in the same room. It was just one of those weeks where I wished I could grab a cup of coffee or a beer after work, without needing a video call.
Any communication problem will seem to be related to being remote.
That one bugs me, but I'm guilty of this too. Some problems are clearly related to the remote aspect. John says "ok" in a DM and leaves, and now someone is left spinning for a day because they tought something was wrong. John is always so cheerful, why didn't he add any emoji? WHY? Anyway, I'm not saying this happened to me... but yes, yes it did happen.
Some problems are more likely to be related to remote work.
Some problems would be even worse in an office.
Some would be more or less the same, but maybe they would present differently and have the same result, like John making a decision while chatting with Juan in the office and forgetting to document it and let the team know. Six months later, there's confusion about how this happened, who made the decision and when. This is the type of thing that can happen in an office, but when something similar happens remotely, we tend to attribute it to remote work instead of just thinking "someone forgot to document a decision".
What I'm saying is that remote workers are extremely aware of the fact that their work style may be problematic at times. This tends to be good, because we obsess over having every decision written down and sharing notes from meetings (and when we don't, great people call us out, loudly).
Remote workers seem to be in a state of constant introspection about wether or not the remote thing is working out, and so we tend to think everything is a remote work issue.
Kanban board out of date? Must be the lack of whiteboards.
John forgot to mention a deadline before his vacation? Must be the remote thing, if we had seen John leave through the front door for the week maybe someone would have asked about it (in case you are wondering: people in offices also forget things sometimes).
You need to be explicit about keeping in touch.
Since you won't run into people while you make your morning cup of tea/coffee/whatever, you need to be intentional about "running into" folks online.
If you don't make an active effort to talk with your team, you may never actually have contact with them except for short messages in github issues and other focused tools/activities.
This is fixable by setting up 1-1 calls, instant messaging, hanging out in the remote "watercooler" type channels and talking with people there, etc.
It's just different, and you need to be more intentional about it, especially at first.
Timezones in a remote team are one of the main friction points. If you wake up and half your team already finished their day, you'll need to adjust how you work.
In my current job we try to adjust things to be as async as possible, and it mostly works. This includes most of the on-boarding activities, day to day communication, development, discussions about strategy, etc.
Just because we need to work in a more async way it doesn't mean that everything is done asynchronously, just that we optimize for our situation instead of optimizing for synchronous work. Sometimes we have to make sacrifices and join a late or early meeting, but generally the team tries to avoid having the main discussion be synchronously and opt for google documents instead to give people a chance to write down their toughts and give their input ahead of time.
I really miss whiteboards sometimes
This one is weird, but I liked having the ability to walk up to a whiteboard with a team when I needed to collaborate on a hard problem.
Digital whiteboards are ok, but they don't necessarily replicate the experience of the analog ones.
Solving this "lack of whiteboards" issue to me comes down to unlearning some behaviors, sending drafts of how I think something should work, getting on a call and discussing it, and then iterate on shared documents with others. Sometimes even creating the diagrams right there in the call and adjusting them together as a pair or group.