Live data from Hacker News

A former Uber engineer's disaster story

twitter.com

321–330 of 344 posts

Re: A former Uber engineer's disaster story

#321
post #271

Earlier quoted context omitted.

I wouldn’t mind if the app started up and said, “download the $country_or_region extension,” but that is just me (assuming it doesn’t require re-creating an account, or re-entering billing details).

Get off the plane in a developing country. Some of those airports are not nice. Some of them are nice shells that are almost deserted, with no wifi and a couple vendors that won't take your American credit card. Your "World Plan" often works, sorta, but you can't always get data due to different radio bands or because the network is simply not good enough for a 100+mb download. You'll either have to hop into a hopefu…

Why does it take 100MB to download the business rules for that particular country? It will take some data, but you will need some to book the taxi anyway.

Re: A former Uber engineer's disaster story

#322
post #188

Earlier quoted context omitted.

To be clear, I do think you have a valid point about e.g. unused assets and loading big libs to do trivial things, but IMHO, that's really a commentary on software development at large, rather than anything specific to Uber. And there are cases, even in the Uber app, where thought has been put into optimizing both for upfront download size and internal complexity (the legal pages, for example) Something that is worth…

What I don't really understand is why so much of the dynamic content ends up being native code on the client. For example, let's say you need to have some of legal compliance page. But there is always changes you have to make in a bunch of regions, and the flow is constantly changing, or whatever. But why can't this be a DSL you download and deserialize into views? Why does there have to be a hundred different native…

I think a lot of it is driven by dysfunction and legacy at Apple. Their whole mindset is they want to review every version of the app manually and every bit of code that executes must be signed. They don't allow a lot of obvious software engineering approaches as a consequence, like partially downloading the app and streaming the rest on demand even though it's an obvious thing to do for mobile apps.

Note how in this story the Android and iOS teams started a big rewrite at the same time, but the story consists exclusively of fuckups on the Apple size. Apple impose an arbitrary cellular download limit. Apple designed a language that can't handle more than 9 dynamic libraries before it hits scaling issues. Apple prevent you from using interpreters or other techniques to change the app after it's installed, unless you use a WebView in which case it's OK for mysterious reasons. Apple don't help even when major brands are weeks away from wrecking their business by hitting these limits. Apple Apple Apple. Meanwhile the Android guys are sitting pretty with Java and now a migration to Kotlin, which is (a) a much better language than Swift and (b) is dogfooded at large scale on the IntelliJ project so you know it scales (had no scaling problems with Kotlin and I've been using it for the last five years).

Re: A former Uber engineer's disaster story

#323
post #88

I've lost track of the number of "biggest engineering disaster" stories I've read that begin "so we decided to rewrite it..." The story arc is almost always the same: starts out very promising and moves quickly, then at some point the wheels come off but everyone keeps going. Anyway, Joel Spolsky nailed it 20 years ago: https://www.joelonsoftware.com/2000/04/06/things-you-should-...

Couple things always to mind whenever this article is referenced. Joel's example is Mozilla, but Mozilla ultimately became more successful than Netscape (in terms of userbase with Firefox). Was the problem really the rewrite, or that a browser company was doomed anyway and the rewrite exacerbated it? Also the article was published just a year before Microsoft pulled off what's maybe the most successful large rewrite…

Mozilla eventually beat IE only because Microsoft disbanded the IE team. The years of product stagnation due to the Mozilla/Firefox rewrite didn't matter in the end because AOL acted as a sugar daddy for a while and then IE was also not moving forward. The Spolski advice is for the more typical situation where your competitors are advancing.

Re: A former Uber engineer's disaster story

#324
post #4

Apple's botched introduction of Swift is easily responsible for billions of dollars in lost productivity across the industry since 2014.

"Botched introduction, really? Perhaps Apple could have been a bit more upfront about the state of the tooling (which, of course, they never will be) but I think they did a rather good job considering that they moved development out from "total secrecy" to "community-involved" within two years, all the while shipping new features and improvements to the experience at a fairly decent pace.

Yes totally botched. We know because have can compare to Kotlin, a project which started around the same time. Google's migration to Kotlin has been progressing very well with no disaster stories like this one. Kotlin was engineered very carefully, developers love it, it scales well and importantly it can be incrementally added to existing codebases because interop is nearly perfect. So the risk to adopt it is far lower. Sounds like Uber got burned with Swift and now aren't really adopting Kotlin which is understandable but IMO a mistake.

Re: A former Uber engineer's disaster story

#325

Earlier quoted context omitted.

Android was a much easier story, Still had some binary size and method count issues but we were able to overcome them thanks to another brilliant engineer we had in the team in SF who worked on Android.

The Android apk is 56.9 MB for my device, while the iOS app is 331.3 MB. What accounts for the 6x difference?

Bytecode is very compact compared to native machine code. Android converts on the fly on the device. That's at least a part of it.

Re: A former Uber engineer's disaster story

#326
post #213

Earlier quoted context omitted.

But like, why? Do all of these things make them tons of money? It's a dumb taxi app, ultimately. You're not answering the question except as a tautology: - Q: Why is Uber's engineering team so ridiculous and bloated? - A: Because they need a ridiculous bloated team to make this ridiculous bloated app.

Just like Alphabet is just a search engine, and Microsoft is just an operating system, and Amazon is just an online store. Companies grow into new products, services, markets, etc.

Google really is just an advertising company. Everything else "Alphabet" does is a rounding error next to ad revenue.

Microsoft and Amazon have multiple profitable lines of business.

Is Uber more like Google or more like Amazon? Is "Uber Eats" (underpaid contractors drive around takeaway dinners) distinct from "Uber" (underpaid contractors drive around people), or "Uber Black" (underpaid contractors with unwise car leases drive people around)?

Re: A former Uber engineer's disaster story

#327
post #231

Earlier quoted context omitted.

I'm now wondering why Apple doesn't let you ship different binaries for different regions?

As someone who lives in the US, but (pre-covid at least) regularly travels to the UK (where I am from), I wish regional listing was not allowed _at all_. It's incredibly frustrating to have to carry two phones with different App Store accounts to be able to switch between the UK and US versions of things - Uber is one of the (vanishingly) few that gets this right and why they have consistently been my default choice…

You don't need to carry two phones, you can sign out from App Store and then sign in with the other country account to install new apps. Updating works for both accounts even if the second country account is not currently logged in.

Pretty bad UX, it's clear it wasn't designed for this use case, you have to go into Settings, but it works if needed.

Re: A former Uber engineer's disaster story

#328

Earlier quoted context omitted.

It genuinely blows my mind anyone who has written software couldn't have guessed at all of this from the beginning. Uber PMs and engineers should be super proud. The fact that each user thinks that their one use-case is "all the app does" is fucking brilliant product design. I've had over a thousand Uber rides (used it to commute) in 10+ countries and it's obvious there the way it seamlessly adjusts to each region bu…

> The fact that each user thinks that their one use-case is "all the app does" is fucking brilliant product design. Alternatively: The fact that they try to bundle all the world's use cases in some 100+ MB monstrosity of a client app is a tragicomic commentary on the misaligned incentives in the tech world's VC-driven wannabe-monopolies.

If anyone has a good reason to bundle every location’s use case into one app it’s Uber. A common Uber user scenario is someone who takes an Uber to the airport in one country, arrives in another and has poor internet capability for one of several reasons (roaming, poor mobile service, must connect to airport wifi, etc).

Re: A former Uber engineer's disaster story

#329
post #143

Earlier quoted context omitted.

For my own curiosity, what large, complicated apps are not monstrosities in your eyes?

The Apple Maps app on iPhone, for example? If you make it fair and count the code that goes into the frameworks specifically for it, it's still tens of megabytes at the most. There is a huge part of it running server-side to support it, of course, but it is difficult to say that it is not a complicated app. Or consider the Mail app? It needs to deal with IMAP, and has custom flows for a number of named mail services…

10s of megabytes? Where did you pull that number from? Since it is a system app, its true install size is hidden away from users. The comparable google maps app is 190 MB.

Re: A former Uber engineer's disaster story

#330
Waiving down a taxi costs a billion dollars. Now I know where my bailout money went.

Anyways, I can solve all your problems:

Market crashes. Not just Apple and Uber go down, but their investors, and where they have their deposits.

All the bad stuff that ruins your life, the hoops you need to jump through, the idea of have to pay money first to work a job in the gig economy, goes with them.

Everything costs nothing, or they pay you to take it. We get all the good stuff.

.taxi is just there. The local name servers are just there. No one thinks about messing around with it, or using it to hurt people. If they do no bullying attorneys are there to protect them.

If you need a ride, and can't make a data request to .taxi in 2020, you are effectively banished from society and deserve what you get. Walk home. People have been doing it for millennia.

Post reply on HN