https://blog.pragmaticengineer.com/uber-app-rewrite-yolo/

I've worked on many projects throughout my career as a software engineer. However, Helix - Uber's Rider app rewrite in 2016 introducing Swift and RIBs - stands as the craziest project by a margin.

This is my story and some of my journal entries from the time.

Prologue

It's the middle of 2016. Uber has been dominating headlines: the company on a rocket-ship growth trajectory and is changing the way people get from A to B. Valued at $62.5B, the company does not seem to be slowing down.

And I got an offer to join Uber as a senior software engineer!

I'm be moving to Amsterdam, joining a team building Uber's payments systems. I'm beyond excited.

My interview process was messy, and although I thought I was interviewing for a mobile role, I ended up on a backend interview loop and getting a backend engineering offer. I took it.

Two weeks before my starting date, my manager emails me to ask if there's any way I can do Android. He can tell more details when I've joined. I've done Windows Phone and iOS before - Android would be the first. I say yes, though I'm a bit puzzled at the request. (Little did I know that I would not have written my book Building Mobile Apps at Scale if this last-minute request did not come in).

Helix

On week one, I get the scoop on the unusual and last-minute request. We're rewriting the Uber app: the whole thing. The codename for the project is Helix. Over 1M lines of code per platform, with more than 100 iOS and 100 Android engineers working on the project. But we need more hands on deck. Hence me joining the Android team over the backend one.

The mobile platform team has been working on the project for a few months, coming up with RIBs, a new architecture we're using for the project. For the program teams - the ones building features -, the work started a few weeks ago. We have less than 3 months: the rewrite needs to be done by 16 September. Every last screen of the old app will not only be ported, but re-imagined, UX and workflows changed.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/aa9f13fa-6257-4619-a6d9-4f6ef3a73638/Screenshot-2021-05-18-at-01.21.35.png

Uber's Rider app rewrite in 2016 (Helix): it completely re-imagined the app. New UX, new workflows, different screens - and a new architecture and language, behind the scenes.

I am still getting my head around all of this. Why so fast?

I hear stories of a party at Las Vegas at the end of 2015, where TK announced that a new Uber app will be on the store by the end of next year. Apparently, most people forgot about this announcement, but not TK. So rewrite it is.

Why 16 September? It's because of counting backward.

Apple freezes the store at Christmas. So we need a stable version of the app by 24 December. This means 100% rollout a month before. So public launch on 2 November. Company-wide beta on 16 Oct. Employee testing starting 16 Sep. This is why.

To make this deadline of 3 months away happen, we need Android and iOS engineers. Lots of them.