Constructing a Seamless Flow: Meet Uber Engineering’s Developer Experience Team
Behind the scenes, Uber’s Developer Experience (Dev Exp) team empowers our engineers to seamlessly conceptualize, create, and deploy technologies at scale. Located in our San Francisco, Seattle, and Vilnius offices, Dev Exp falls under the larger umbrella of Uber’s Infrastructure group and includes members of Uber’s Information Platform, Engineering Training & Development, and Service & Language Framework teams. This hardworking group of technical writers, educators, and developers supports our engineers through documentation, training courses, build systems, and development frameworks, among other tools.
We sat down with Nikolay Sokratov, head of Dev Exp at Uber, to learn more about his team.
What are the core responsibilities of Developer Experience at Uber?
Our team’s responsibilities range from educating our engineers and managers on development best practices to providing technical documentation and standardizing development flows with programming language support.
Take, for example, our Dev Exp engineers. These developers create various tools to increase engineering productivity at Uber such as build systems, integration tests, test systems, scaffolding, and language frameworks. They also work on large-scale infrastructure projects that deal with managing services using serverless platforms and distributed workflow systems.
There’s never a dull moment on Dev Exp.
What are some of the biggest challenges your team faces when building these tools?
There are many, from simple organizational pain points all the way to larger hurdles that deal with distributed system design. At a high level, we have to convince people that we need these tools to simplify the developer experience.
Fortunately, most engineers we work with understand because they use our systems on a daily basis to create very sophisticated services. In a lot of ways, the work we do breaks new ground by pioneering approaches to simplify how builders at Uber set up, code, and test these services.
Can you provide specific examples of Dev Exp tools that were built in response to developer feedback?
One of our most recent projects is our new developer lifecycle automation system. It orchestrates 40+ infrastructure tools by combining all of them into a single, configurable flow that fully automates code checkins, all the way from setting up a service to going live in production. The only thing the developer has to do throughout this entire process is write and commit the code.
Another project that we’re really excited about is a serverless platform (which has similarities to AWS Lambda) that we just launched that frees developers from worrying about servers, scalability, and system capacity on high traffic days like Halloween and New Year’s Eve.
What would you say is the most rewarding part about being on the Dev Exp team?
When engineers spend just a fraction of their time on service infrastructure to the extent that the layer becomes completely invisible, that’s rewarding; when a new engineer launches a service in hours, that’s rewarding; when engineers realize their ideas as full-scale production systems without having to know the ins and outs of distributed systems or tinker with hardening of these services—that’s super satisfying and goes hand-in-hand with Uber’s cultural value of making magic for our customers (in this case, engineers).
What is a day in the life for a member of Dev Exp?
Technical writers on our Information Platform team spend most of their time interacting with engineers to better understand how systems work so that they can write documentation on how to use them. Embedded in the engineering teams, our technical writers build subject matter expertise to precisely and thoroughly communicate the value of these services to other engineers, keeping them up-to-date, even as the systems themselves continue to evolve.
On our Engineering Training & Development team, educators identify and fulfill gaps in technical knowledge for engineers at all levels through continuous training. They simplify engineering education by developing new courses for managers and crafting courses to help engineers grow their skillset regardless of tenure. In addition to our engineer orientation program, Core Engucation, we teach courses daily on everything from specific languages to how write Eng Blog articles.
Finally, developers on our Service & Language Framework teams simplify and standardize the toolchain that enables our engineers to set up, build, and compile code; test in CI; perform integration tests against services in production; and scale service development through orchestration and serverless frameworks. Depending on the stage of a project, our Dev Exp developers ideate, discuss pros and cons of implementations, prototype and write code, and, eventually, release and maintain these systems in production. Throughout the process, these developers are keenly aware of how well these services meet our engineers’ needs by providing SLAs for high availability and monitoring service uptimes.
Does Dev Exp work with every division of Uber Engineering?
In one way or another, we try to reach everybody. In some cases, we work directly with engineering teams; in others, we engage with engineers through research and surveys that gauge pain points or address specific use cases. Since Uber employs thousands of engineers worldwide, it’s our job to create solutions that address their main engineering concerns as opposed to building what we think they need.
In what ways does Dev Exp set Uber engineers up for success?
Dev Exp focuses on removing the seams. If you look at the engineering operations at other companies, there are usually separate tools for build systems, integration, project creation, and so on and so forth, but they seldom link together. In contrast, the mission of the Uber’s Dev Exp team is to create a seamless flow.
This seamless flow has to be super simple. Dev Exp removes a lot of the bottlenecks around creating new services. For instance, dev processes that would normally take an engineer at least a couple of months to learn, now only takes a few hours with the help of our tools.
What do you think is the secret to your team’s ability to “remove the seams”?
Our team’s mission is not just to create tools but also provide end-to-end solutions that solve our engineers’ challenges, which makes our work impactful. Our priority is to make the developer experience so transparent that nobody needs to think about it.
In a lot of companies, Developer Experience doesn’t even exist as an organization. In these environments, teams build development tools with practically no oversight nor means of connecting them through an integrated flow. In contrast, Dev Exp at Uber is committed to building a toolchain that brings engineers’ ideas into production using the most straightforward and frictionless processes possible. Far from being a barrier, our team enables you—the developer—to realize your ideas in production as fast as you can code them.
If making magic for developers interests you, consider applying for a role on Uber’s Dev Exp team.
Molly Vorwerck is the technical editor of the Uber Engineering Blog.