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…
A former Uber engineer's disaster story
321–330 of 344 posts
Re: A former Uber engineer's disaster story
#322Earlier 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…
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
#323I'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…
Re: A former Uber engineer's disaster story
#324Apple'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.
Re: A former Uber engineer's disaster story
#325Earlier 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?
Re: A former Uber engineer's disaster story
#326Earlier 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.
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
#327Earlier 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…
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
#328Earlier 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.
Re: A former Uber engineer's disaster story
#329Earlier 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…
Re: A former Uber engineer's disaster story
#330Anyways, 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.