This Year in Uber’s AI-Driven Developer Productivity Revolution



AI Summary

Title: Experimenting with AI in Software Development at Uber

Presenters: Adam (Senior Engineering Manager) and Ty


1. Introduction

  • Overview of Uber’s scale and complexity and the author’s experience.
  • Focus on positioning the organization to be AI-driven.

2. Developer Experience

  • Emphasis on developer experience over just delivering tools (IDEs, documentation).
  • Measurement of developer experience through net promoter scores.

3. Current Challenges

  • Managing technical debt in six monorepos, containing over 100 million lines of code.
  • Need for better test coverage and simplified migration processes.

4. Adopting AI

  • Formation of the AI Developer Experience team with ML experts to harness AI tools.
  • Shift from exploratory projects to tools with real impact, influenced by hackathons.

5. Agentic Design with AI

  • AI tools leverage LangChain and LangGraph for integrating AI in workflows.
  • Detailed the process of applying AI in development, including testing automation.

6. Case Studies

a. Internal IDE Coding Assistant

  • Building an in-house product as an alternative to Copilot, aimed to fine-tune AI models to Uber’s context.
  • Initial development faced challenges regarding speed, acceptance, and maintenance, leading to its temporary halt.

b. Test Generation with AI

  • Development of a tool called Auto Cover to generate unit tests to increase test coverage intelligently.
  • Methods to validate and iterate tests, led to high acceptance among skeptical developers.

c. Migrating Java to Kotlin

  • Migration strategy involving existing manual processes and tools.
  • Working toward automation with the help of AI to expedite the migration.

7. Measuring AI Impact

  • Discussed metrics for measuring developer productivity and tool efficacy.
  • Qualitative feedback more favorable but a need for standardized quantitative measures.

Conclusion: Focus on learning from attempts, iterating AI integration into workflows, and prioritizing developer experience while maintaining high-quality output.