DoorDash Engineering Blog

Learn about high impact projects that power our velocity, reliability, and innovation.

Subscribe for weekly updates


DoorDash Expands International Presence with Toronto Tech Hub

DoorDash announces the opening of its newest and first international engineering office in Toronto.

Qaiser Habib

Migrating From Python to Kotlin for Our Backend Services

To support our migration to microservices we needed to find a new tech stack. Learn how we compared all the options and chose Kotlin

Matt Anger
Machine Learning

Improving ETA Prediction Accuracy for Long-tail Events

Learn how we managed to better predict long tail delivery estimations using historical and realtime features as well as custom loss functions

Dawn Lu Pratik Parekh

Managing React State on DoorDash’s Item Modal Using the Class Pattern

Learn how DoorDash created the Class Pattern when building the Item Modal in its web application to increase reliability.

Backend General

Gradual Code Releases Using an In-House Kubernetes Canary Controller

New service releases deployed into DoorDash’s microservice architecture immediately begin processing and serving their entire volume of production traffic. If one of those services is buggy, however, customers may have a degraded experience or the site may go down completely.  Although we currently have a traffic management solution under development for gradual service rollouts as ...

Culture General

What to Expect from DoorDash’s Technical Interview

Follow these helpful tips when preparing for DoorDash's technical interview.

Kirtan Patel
Backend General

Optimizing OpenTelemetry’s Span Processor for High Throughput and Low CPU Costs

When companies move to microservices, they need to address a new challenge of setting up distributed tracing to identify availability or performance issues throughout the platform. While various tools offered on the market or through open-source perform this task, there is often a lack of standardization, making leveraging these tools costly or complicated.  As DoorDash ...

Santosh Banda
Backend General

Examining Problematic Memory in C/C++ Applications with BPF, perf, and Memcheck

As applications grow in complexity, memory stability is often neglected, causing problems to appear over time. When applications experience consequences of problematic memory implementations, developers may find it difficult to pinpoint the root cause. While there are tools available that automate detecting memory issues, those tools often require re-running the application in special environments, resulting ...

Filip Busic
General Machine Learning

Best Practices for Regression-free Machine Learning Model Migrations

Migrating functionalities from a legacy system to a new service is a fairly common endeavor, but moving machine learning (ML) models is much more challenging. Successful migrations ensure that the new service works as well or better than its legacy version. But the complexity of ML models makes regressions more likely to happen and harder ...

Ying Chi

Rebuilding our Pricing Framework for Better Auditability, Observability, and Price Integrity

Learn how we migrated our pricing logic to microservices

Irene Lee Menghan Li Yijie Xiao Yujue Wang Zhengli Sun

Launching Dark Mode While Building a Scalable Design System

A large number of our DoorDash deliveries happen during the evening and in late night hours. Dashers, our delivery partners, were finding it really hard to use the Dasher app because the app’s bright screens did not adapt to the lower lighting conditions. The abundance of white in the design meant that critical information, such ...

Pradeep Devarabetta Mallikarjun Laura Rodriguez Gerardo Diaz

Using java.time to Increase Code Readability and Reduce Errors

Given the importance of time in our services and the need to scale, java.time works much better than primitives.

Kevin Huang

Sign up for updates

Thank you for subscribing!

Sign up for updates