Platform Teams and Developer Productivity with Adam Rogal, Dir. Developer Platform at DoorDash
Creating a platform team, platforms at smaller companies, and developer productivity at DoorDash
π Hi, this is Gergely with a π subscriber-only issue π of the Pragmatic Engineer Newsletter. In every issue, I cover challenges at Big Tech and startups through the lens of engineering managers and senior engineers.
I sat down with Adam Rogal who heads up Developer Platform at DoorDash, to get his take on platform teams, developer productivity, and how the two are connected. We covered these topics:
From API support engineer to developer platforms
The importance of Platform teams, and creating one
Platform teams and scaling up organizations
Platform team characteristics and KPIs
Platform team approaches that work for smaller companies
Developer Platform at DoorDash
Developer Productivity
Related to this issue is the one with Ganesh Srinivasan, who created the mobile platform teams at Uber which Adam eventually took over.
I worked with Adam at Uber when the Mobile Platform team reported into his organization. Adam is one of the most hands-on leaders I know. I remember when he attended Uberβs Amsterdam HQ, and hosted a meeting to introduce the Mobile Platform team and share their updated roadmap with members of my team.
As the meeting was about to begin, Adam asked for five minutes more time before starting. Uberβs mobile CI system had gone down across the company, and this counted as one of the highest severity incidents for his team. He was standing in for oncall for a few days, and he got paged with this incident. He started the meeting only after he confirmed that an incident commander had taken over coordinating the mitigation effort, and that he could not help any further in resolving the issue.
I found two things remarkable about this. First, Adam stood in for oncall over delegating it to someone on his team, building the empathy with what oncall was like by βfeeling the painβ himself. Second, he immediately prioritized the hundreds of mobile engineers impacted by the CI issues, ahead of the dozen people in the room; a call not every manager would make.
1. From API support engineer to developer platforms
Adam started off at Google as an API support engineer, after graduation. The second day after joining this team, it got renamed to Developer Relations. As we talked, Adam recalled that this was exactly the type of work he sought at the time; designing interfaces for developers, supporting them, and having empathy with their work.Β
He worked on many of Googleβs APIs, including Checkout, AdWords, DoubleClick for Publishers, and other APIs. By the time he left Google, he had had a hand in almost every ads-related API at the company.
He joined Uber in 2015 to create the API platform team. For better or worse, Uber shut down its external API ambitions, and with it, the team. So Adam moved to head up the mobile platform team which was previously started by Ganesh Srinivasan. Read the platform teams discussion with Ganesh in this newsletter issue.
Today, he is heading up the Developer Platform organization at DoorDash.
For the rest of the article, my questions are in italic, and the answers from Adam are in normal font.
2. The importance of Platform teams, and creating one
How would you define a platform team? Why is it important?
βA platform team is a set of folks who support and enable product engineering. Enablement is a key characteristic of good platform teams. Platform teams can enable product engineering in various ways, such as:
Standardization
Building and maintaining frameworks
Onboarding
Culture-bearing
General support like Q&A, open office and similar activities
βItβs important to observe what happens without platform teams. I found that at best, product engineers have competing priorities within the company. At worst, feature development stalls due to platform-level concerns. Platform teams help a company evolve past its adolescence, into a mature and well-oiled machine.
βAnother good way to look at what platform teams are, is to contrast the problem space they own with that of product engineering. The problem space for product engineering is the needs of the business. The problem space for platform engineering is the needs of engineering.β
Creating a Platform team
How did you approach creating a platform team?
βI leveraged my knowledge of working with external platforms and applied it to internal ones. To start, you need to use a lot of evangelism. Your goals should be to create a system that leads by influence, rather than mandate. You need to think about documentation and education as part of the product.
βSet your direction as βoutside in.β Outside means your customers, while inside refers to your team. Think about all the developers and their needs, first. Only then should you move βinsideβ. If you do this, youβre more likely to build something those developers need, than just a cool, new technology.
βCompare this approach with moving from βinside outβ, when you are building a more traditional product from the βinside.β Once youβve built it, you put it in the hands of your customers. However, you often find that youβve built something they might not need.
βCreating a great platform team is not something that one manager can do by themselves. You need to lean on all your engineers, just like I did every time we created a successful team. Starting with the most senior engineers leading by example, all the way to each platform engineer on the team, everyone needs to champion this βoutside inβ mindset, as well.
At what point does it make sense to introduce the first platform team in a companyβs growth curve?
βThis is an area Iβve been thinking about a lot. If you start too soon, you may put the cart before the horse. You might worry about standardization, instead of getting your companyβs product into the hands of as many customers as possible. If you start creating a platform team too late, the bones of the company might have already set in a way that is difficult to change.
βA good rule of thumb is to detect the point at which engineers discuss standards more than they do features. This is when you can start to incubate platform engineers who can guide the technology choices. These engineers are typically your most senior engineers at the time. You can then form teams around each platform, before any major inflection points hit your growth.
βAt DoorDash, we formed the Developer Platform organization 18 months ago, in early 2020. At this point, some platform teams already existed throughout the company. However, it wasnβt until we established this organization that we set the charter of these other platform teams and pulled them all together under one banner.
βI feel that we got platform teams in place at DoorDash just in time. We were well into the maturing life cycle stage of the company. Introducing these teams any later could have had a negative impact on engineering productivity. I do think forming these teams earlier would have been even more helpful, but Iβm glad we were at least not late with them!β
3. Platform teams and scaling up organizations
How do platform teams help organizations scale up?
βAs companies grow, so does the complexity of the systems and the number of new engineers. Both of these become problems of their own, and tribal knowledge becomes a major pain point. Standards and established frameworks are what help overcome these issues and they are what you need to start to invest more into.
βPlatform teams help both with onboarding, and with systemsβ stability. For onboarding, you need to shepherd new engineers through the process. Try to not bog down product engineers by mentoring them about unwritten quality standards. Create platform teams that provide clean and well understood APIs and frameworks, and also own helping new engineers with the onboarding process. If you do this, your new hires will deliver high-quality work after onboarding without depending only on product engineers mentoring them.
βReliability is the other aspect of scaling. As a company grows, its increasingly complex systems need to stay reliable. To do this, you need to make sure services meet certain requirements, like circuit breaking or load shedding. You need to put some level of standards in place, and if you do this, youβll increase the overall stability of the company. This is another key role that platform teams play.β
4. Platform team characteristics and KPIs
What are characteristics of well-run platform teams?