Photo by Grovemade on Unsplash

How to work remotely in a fast and always changing environment

Ifood it’s a Brazilian food tech company delivering more than ~1 million orders per day and growing around 110% every year. In early 2019, the engineering team had around 150 people and at the end of the year there were over 500. What does that mean? It means that things here change very quickly. Really.

I work at the Account & Identity team from the customer point of view. We recently hired more people, so we’re in 9 now; five of us working on-site and four working remotely from very different regions of Brazil. Some months ago we were in 6, three working on-site and another three working remotely. We decided to hire remote people basically because we needed to hire good folks. Not just good folks around the cities that Ifood has offices.

Every year, the company stops to plan and write it down what the teams will commit to doing from the next months. In this planning step, we take into consideration the size of the teams, their maturity, what is most important and so on. The idea is to have an immutable todo list that each item is easy to check itas done or not done when the deadline reached.

However, that’s not exactly how it works. The reality is that after the planning phase, the teams have only a direction to go, but they don’t really know where the finish line is. Actually, the path is really the way in this company. Along the way we discover new things, understand that we may need to drop a project and increase our energy on another one. We may start new projects and lead them forward with other teams, sharing the responsibility and the tasks. I won’t lie, this scenario is kind of chaotic, but it works at the end. It’s not perfect, but it works. At least for Ifood and our context.

Often when we read about companies working remotely, we see how they work 100% asynchronous around 31 different timezones, with a very small team, planning things ahead and never having to change the plans. It seems that they never had production problems or things like that.

They seem like Buddhist monks of remote work. Nothing can affect their plans and they can control everything.

Well, we’re not there yet. And we may never will.

Our fast and always changing environment leads us to work remotely in a different way. In a way that fits our needs. We hope that sharing our tips, they may also help you, if you’re in a similar situation.


  1. Work synchronously
    Keep it simple. Working asynchronously is very very hard and demands a lot of effort to organize and keep things that way. However, this does not mean that people need to be online and answering instantly all the time. That would be ineffective. Find the balance that best fits your needs. In our team, we try to answer our slack channel within 10/15 minutes and when we need more time to focus and have a deep dive we left a message saying that it may take longer to answer.
  2. Set the expectations
    This is the golden rule. You should try to do it for (almost) everything. Let’s say that you’re a manager and expect that the people from your team should answer your DMs quickly. Tell them that. Set the expectations. Otherwise, you will be frustrated that it’s hard to talk to the team and they won’t be even aware of your frustration. When you work at the office we often have breaks to have a coffee with someone, get some water, take a rest and then go back to work. Working from home you will still have those needs, however, no one is seeing you, so it may be a good idea to set the slack status to ☕️ or "away". Then people will know that soon you’ll be back.
  3. Have an easy communication way that is not only text
    We use a free, open-source, low latency, high-quality voice chat application called Mumble. It’s awesome. Really. It’s like the grandfather of discord or something like that. You create rooms, you enter them, configure a key in your keyboard to open the mic and then everyone is already listening to you. It’s almost without any friction.
  4. Get people together
    Remote work should not substitute the onsite work. It’s a different way of work and that’s all. However, human contact and social aspects are very important. So we try to get the whole team together once every six months or less for at least one week. This helps us to know each other better and create meaningful relationships. This obviously helps in the day to day activities.
  5. Communicate all the time
    The communication channels that you created should improve the work and not to make it worse. If the team needs to change their direction and start to focus on other things, set a meeting (ask for everyone to open their cameras) and talk about the problem, what leads to it and asks for help in how we should organize the team to deal with the situation.
  6. Promote moments to people talk about themselves and their life beyond the work
    People are not what they do to earn money. Create spaces for people to interact and talk about things that are not work-related.
  7. Finally, create a culture that embraces changes and not evict itAt the end of the day, this is the most important thing. Set the expectation to your team that things will change and there isn’t much to avoid it, but actually they should embrace it and understand why they are changing and how to work well with that. At some level is to get attached to the result, but with the process itself.



Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
felipe volpone

felipe volpone

I’m into distributed systems and how we can make them easier to develop and maintain. Writing code to scale to millions of users @ Ifood, formerly Red Hat .