Resend's First Ops Offsite

A week to discuss how to support hundreds of thousands of developers.

Jonni LundyJonni Lundy
Resend's First Ops Offsite

Why are offsites important?

We are a 100% distributed team. A few of us live within driving distance of each other, but we have no regular office space.

As much as we love the benefits of remote work, we also see the downsides. Many of these are even more pronounced when onboarding new team members.

We usually plan an offsite every six months with a few goals in mind:

  • Build empathy as a team
  • Stir up fresh ideas
  • Align on the future
  • Help new members hit the ground running

Though these goals can be challenging to measure precisely, I see them functioning similarly to launch weeks:

Regardless of the measurable outcomes, the practice of coming together and focusing on the same thing is a forcing function to go beyond the status quo of our day-to-day work and invest in something greater.

Why now?

You may have heard that Brian Kerr recently joined the Success Engineering team. Whenever a new team member joins, we try to plan an in-person meetup within the first 60 days of their start date.

We notice a meaningful difference before and after that first meetup. The new team member has a firm grasp of company culture, product expertise, and domain knowledge. The existing team builds trust and rapport with the new member, which translates to better collaboration when we return home.

Because our next full-team offsite was scheduled in November, we decided to plan a smaller offsite with just the ops team, which includes Krithika, Brian, and myself.

Where did we go?

Last year, we took the team to Rio de Janeiro, Brazil. Beyond it being a fantastic city, multiple people on the team either lived there or had lived there. We noticed that planning was significantly more accessible when a local was on the team.

Since I was planning this offsite, I got to use my bias to choose the location. I decided on my home city, Portland, Oregon. Like Rio, it was seamless to create the agenda full of my favorite restaurants, visit as many third-wave coffee shops as we could, decide on the best neighborhoods for the hotel and co-working space, and even take the team to my local sauna 🥵 and cold plunge 🥶 for team bonding.

Portland, Oregon
Portland, Oregon

How do we create an agenda?

Brainstorm ideas

The whole ops team met a week before the offsite to share ideas about topics that would be beneficial to discuss. This is the process we used to brainstorm our ideas together:

  1. Bring prompt or context: In this case, we wanted to focus the entire offsite around improving how we help customers succeed. I drew up goals and a high-level roadmap to give a north star for this.
  2. Write down ideas: We took 10 minutes to write down our ideas on sticky notes silently.
  3. Group ideas together and vote: Great minds think alike, so many ideas were duplicated. We grouped similar ideas, and then each person got ten votes to place across the grouped ideas. This took about three minutes.
  4. Organize by votes: The voting helped us determine which topics are essential to cover in-depth and which could be covered briefly or deleted.

Figjam brainstorm board
Figjam brainstorm board

Organize the agenda

The next step was to organize all these ideas into a cohesive agenda.

Building an agenda is more of an art than a science. I try to imagine myself on the day, how I'll feel going from one session to the other, how much energy I'll have after lunch vs. before dinner, and how much time we'll need to discuss each topic properly.

At our last team offsite, we tried mapping each day to a theme (Growth, Product, etc.). This worked well to reuse the mental momentum we created from the last session to keep moving into the next one (yay for less context switching).

I organized a Notion table with one table for each day. Each row is a session with a column for the assigned owner and one for notes.

Here is a notion template of our offsite agenda doc. Feel free to reuse it.

Notion agenda
Notion agenda

How do we conduct the sessions?

It's Monday morning, everyone landed in Portland, the agenda was ready, and it was time to start the first session. Here are some ways we made the most of the time together:

No idea is a bad idea: There is a time to challenge validity, but sessions must always first have a time when any idea can be thrown onto the whiteboard without fear or reservation. Some of the best ideas are disguised as ugly babies.

Focus on impact, not implementation: It's easy to get bogged down in what's possible or not. This can lead to a bias of only discussing the things that could be achievable with the status quo. Try to prevent rabbit trails to discuss deep implementation details and instead use your energy to focus on the ideas that will move the needle.

Let the sessions blur together: Another temptation is to bring strict separations between topics and sessions. Our brains are not that organized (at least mine is not). I've seen many of the most impactful ideas come from a spark of inspiration about a session we had hours ago. Storms are messy, and brainstorms are no different.

Take breaks: We are not robots. We need to eat, drink, and use the restroom. We also need to take a break from intense focus to let our brains rest. I like to take a 10-minute break every hour or so. This is a great time to check in on the team, see how they are feeling, and make sure we are all on the same page.

Enjoying meals together
Enjoying meals together

Get natural light: We are more impacted by our environment than we probably realize; for example, a high versus low ceiling can prime the concepts of freedom versus confinement. It's pretty hard to find co-working spaces with vaulted ceilings, so windows facing outside are a great way to add light and space to the room and our imaginations.

Write it all down: You think you'll remember the idea or some note after you get home, but you won't. Use a whiteboard (take pictures!) or Figjam to jot down every thought. This way, you can reference it to see if it's still worth pursuing.

How do we organize the next steps?

So.many.good.ideas. Now what?

It was Thursday afternoon, and as our final session was closing up, we felt a bit unsettled that, after a whole week of inspiring sessions and ideas, we didn't have a clear plan for moving forward.

For every session, we had Notion docs, Figjam boards, or pictures of a scribbled whiteboard of what we discussed. In some sessions, we even had time to mark or vote on the ideas that we thought were most impactful and should be pursued.

Our hope was that even though we couldn't properly prioritize every ticket, we wanted to have everything in Linear so that we wouldn't have to reference the raw notes again. This meant just adding generic titles to the tickets would not suffice.

Adding context and notes to tickets
Adding context and notes to tickets

We decided to open up one computer, sit side by side, and review each session individually. We determined if a Linear ticket should be created for any of the notes for every session. If that ticket came from a longer note or bundle of ideas, we would copy and paste the full content in the ticket or even add a screenshot.

Tagging every ticket with a label allows us to go back and review them in the future.

All next steps are in Linear and tagged
All next steps are in Linear and tagged

What are we taking home?

By the end of the offsite, we found ourselves circling a few topics. Some we had already been discussing for a while, but others were novel ideas that emerged from our time together.

I asked the team about their top takeaways, this is what they shared:

Brian

  • Organizing on Linear: Before the offsite, we each managed our tasks in our own way, but we now have a sprint planning process every week using Linear to keep us on the same page.
  • Documenting discussions and decisions: We are quick to forget, so if something is not written down, we can assume the information is gone. Many of the sessions resulted in an action item to document a runbook or article in our handbook to codify and ingrain it into our team culture.

Krithika

  • Improve feedback tracking: We're now adding a more granular level of distinction on tickets: reliability, usability, and functional (missing functionality). This way, we can easily distinguish which tickets need the most attention, as well as escalate tickets to the best team possible
  • Reuse existing tooling: Thinking about new projects, it's easy to think we need new tooling. However, after creating a needs list as a team, we realized small changes to our existing tooling would suffice. This saves time and costs, as well as giving us the ability to get started on new projects even quicker.