02/04/20

A Backend engineer’s perspective on Delivery Hero’s Pandora

By Alexandros Kechagias

Pandora is the internal name of the Tribes “Foundation” and “Shop”, both serve a different purpose for the consumer platform FoodPANDa and FoodORA. Unlike Zeus Pandora, which happened to be a jar container, Delivery Hero’s Pandora is a fast-paced, multicultural melting pot of generally happy and friendly people. I am here to talk about it with you from a backend engineer’s perspective.

Delivery Hero is the first company I have worked for that organizes itself in the Spotify organizational structure. I don’t know if we “get” the Spotify model.. I’ve looked it up and there seem to be some major controversies about the way it’s supposed to be applied. To be honest, it reminds me of the discussions around the agile processes Scrum, Kanban, and Scrumban. According to the prophets and oracles, everybody does it wrong. I can only tell you how we do things here. You be the judge. I am just sharing my experience.

It’s all about Connecting

Everything here is heavily community-based. We depend upon each other for help, advice, inspiration, and discussions on how to solve problems across all teams. We are organized in tribes, chapters, guilds, and squads.

Squad – Connected to a goal

The people who are the closest to you are in your squad. A squad takes care of some product-functionality inside of our platform, improves it, and so on. The squads here are cross-functional. My squad, for example, consists of a Product Designer, Product Owner, Frontend Engineer, Android Engineer, QA, Analyst, and a backend engineer. The work you do here has the highest priority. You are assigned to a squad as soon as you join. I am a backend engineer, by the way, Alexandros. Nice to meet you!

Here I am with my team, taking a break from our quarterly planning preparations!

Tribe – Connected to an idea

Your squad is part of a tribe. A tribe consists of multiple squads. I am part of the Shop tribe. My tribe is all about the consumer’s experience on our platform. We usually meet every Friday (All-hands) to hang out with beers and some presentations about all things tribe related.

We celebrate our successes, learnings, and introduce our new tribe members. 

We regularly have tribe events, where we get to know each other better. This one is from last year’s dragon boat race. Our team won. Team 4! You know who you are!

Guild – Connected to a passion

I see guilds as groups of common interests. I am interested in Go, I am part of the Golang-guild. Some of my colleagues even organize internal Go-Meetups where we get together to present and discuss interesting topics related to Go.

Internal Go-Meetups

During our last internal Go-Meetup, the topic and presentations revolved around Behaviour Driven Development and error handling in Golang.

Chapter – Connected to a craft

I am part of the backend-chapter, simply because I am a backend engineer, just like everybody else in the chapter. The specialists here at DH organize themselves into chapters, where knowledge sharing and discussions are encouraged across all teams. The backend chapter usually communicates via Slack, Backend-Chapter-Standups, or Face to Face, of course.

Backend-Chapter-Standups

Delivery Hero is a so-called “hypergrowth” company. We can feel the growth in all of our departments, as well as within the backend chapter. It’s a team effort to make it work the way it does in our chapter. Together we successfully tackle the challenge of keeping up with the information flow and processes.

We have mandatory weekly standups. During these standups, at least one backend engineer from each squad presents what they have been working on since the previous standup. This is not for reporting purposes, but more about knowledge sharing. Sometimes your colleagues have questions or comments, such as whether or not your changes will affect them, or they let you know if they need any assistance.

This meeting has actually changed and improved a lot during the last few months.

Now we collaboratively create a Google-slides-presentation shortly before each meeting, where we share all the important topics that have been covered or discussed. Each squad creates one slide. This makes the notes much more useful.

For example, this is my slide from last week’s chapter standup:

The purpose of your slide is to briefly document and communicate everything interesting that you have been working on since the last meeting.

We also improved on the room situation, now we are in a much bigger meeting room. I am starting to like this meeting again

As well as that, if anyone has some interesting backend-knowledge to share, it’s possible to use 30 minutes of this meeting to present this knowledge to your colleagues. I could, for example, talk about my experiences using the Go-Docker-Container-Framework I heard about during a talk at the Go-Days-2020 in Berlin.

Communication – Connected to each other

Slack

We are Slackers! Slack is very important to us, we are not an Email-Company. Slack is an industry-standard. It has a crazy amount of functionality! We even deploy our microservices through our internal tool, connected to Slack.

Backend related Slack-Channels

I took a few screenshots of our channel, so you can get a feel for the vibe. Everyone is friendly, professional and supportive.

pd-chapter-backend

  1. Code-Reviews – all the code that you merge into master has to be reviewed by at least two of your colleagues from the backend chapter.
  2. General backend-chapter related discussions or announcements.
  3. RFCs – Request For Comments 
  4. Introduction of new colleagues

guild-golang

  1. Golang related topics
  2. Recommendations for modules or frameworks
  3. Internal Go-Meetup organization
  4. Interesting articles or videos

Jira

Atlassian’s Jira is our tool of choice when it comes to assigning or managing tasks. I also like to call it the product owner’s IDE.

This is how a typical board would look like near the end of a sprint. 

Most tasks are hopefully done. In our Squad, we prefix all our tickets with Web/Android/iOS/Backend/Design. All tickets need to go through all the steps, from “TO DO” to “DONE” during a sprint.

Google Calendar

I am sure you know Google calendar. For those of you who don’t, it’s a calendar tool where you can input your appointments. You can either create appointments by yourself and invite others, or they are created for you or everybody in your email-group. Typical email groups would be from your squad, guild or tribe. 

Almost all meetings are optional. You should only participate in meetings that are relevant to you and your team.

The rest

We also use Atlassian’s Confluence or Google products like Sheets, Docs, Slides. These are self-explanatory. On top of that, you can choose your IDE freely, I personally use Goland, but I’ve seen others use Vim, Visual Studio Code or PHPStorm (for PHP).

Conclusion

I hope I could give you a good impression of our day to day lives here at Delivery Hero. As you can see, it can be quite challenging but also very rewarding. The people make it work and the constant improvement of ourselves and our processes also make it worthwhile. 

If you liked this blog post and you want to find out more about our way of working, then you can also check out my ongoing Blogpost Series “A Sprint in the life of a Hero” Part I and Part II.

As always, if you’re interested in joining the team, check out some of our open positions: