Uber's crazy YOLO app rewrite, from the front seat
blog.pragmaticengineer.com
blog.pragmaticengineer.com
This feels too familiar. “You have unlimited vacation, just take a week off, but we are not moving that deadline.”
"Make sure you do the mandatory training called Safety First. On an unrelated note, we're pulling back on remote working and you're expected to be at your desk 3 days a week. Don't forget to wear your mask at all times."
Took a looooong time for them to disappear and I'm still not convinced more than a handful of people cared.
People didn't really like her internally. She was good friends with Travis apparently and that's about as far as the relationship to the company seemed to go.
There was once a time where employees could request a ride with her directly from the app but to be honest the prospect sounded horrifying.
You'd share an Uber with her? Or would she be driving the Uber? Sounds fascinating either way.
There was another time I think in Denver (might not be remembering correctly) where an event allowed users to hail a helicopter for a ride. Rumor had it that the event was so busy that the helicopter was cheaper than Uber Select at certain points.
But for a company like Google, nowhere near an existential threat, it makes sense to prioritize long term players capable of delivering for years.
Should probably restrict this to companies that had revenue and paid its employees.
There is no way around it for borderline employees too. Assuming these studies are correct, what the heroic effort for borderline employee do is signaling desperation and emotional investment.
Even then you'll still get "just this once" people who understrand the problem but can't help themselves.
He simultaneously refused to pushback features and kept adding new features well in to beta phase.
That product shipped buggy and no fucks were given on our side.
But as I always say: Don't let a management problem become an engineering problem. The deadline was artificial and put stress on everyone. Uber is not an agency which has to deliver a product to some client. They have the freedom to release apps "when they're done" but choose not to do so.
Sometimes there are external deadlines (events whose schedule you don't control, things for partners, etc.), but this just clearly isn't one of them. They could've released the update after Christmas - that was 100% under their control.
Regardless, to be safe, I’ll definitely never work at Uber, or any other company TK has touched. This sounds like an absolute nightmare, and is so different from my experiences in ~a decade at other tech companies that it’s crazy.
Sure a bunch of people burn out and leave but does that actually move the needle on any metrics besides turnover that these people look at? Assuming that departures get filled I don't know that turnover has that much of an impact on other metrics.
I wonder what the health toll was on the all the hundred of people who worked on this? The reduction in life expectancy, health issues that arise due to 16 hour days...
It's not necessary.
Personally, about a year ago, a recruiter reached out to me about an interesting sounding role at “CloudKitchens”, that I was legitimately considering, but once I learned it was a Kalanick startup, I turned it down. The product/idea sounded interesting, but I’ve heard too many horror stories to work for the guy. I’m sure I’m far, FAR from the only one.
I know they struggled as a result of Travis in general, but do they have trouble hiring? Has their development pace really slowed down (Kotlin aside)? Is their product suffering as a result?
What worked ?
What important thing have been achieved ? An application that worked fine and did the business well have been rewritten entirely. Nothing wrong would have happened if it was released 1 week or 1 month later.
Even letting appart the human cost, I can’t even imagine all the shitty « dirty but it somehow works » code this kind of management create. The kind of technical debt maintenance teams will have to live with for years.
The previous thread here has a different perspective on the situation: https://news.ycombinator.com/item?id=25373462
It sounds like they're both saying there were lots of near-disasters, but these were overcome, and the app successfully shipped - however at the cost of burnout in the team. I wouldn't say either is putting a more positive or negative spin on it than the other.
I think there's a saying that goes: "you get what you're willing to tolerate".
This is often the reason why employees get screwed over, they're willing to tolerate far too much, for far too little reasons.
Covering up bad management and planning is not something engineers should tolerate. You should say, no sorry, you missed the deadline to fund us and have engineering start early enough, that's that, you screwed up your planning, you failed at being a good manager. We're not going to cover for your screw up.
Edit: Specifically, I don't personally hate them, but I hate that it played out this way, and I know it's a difficult position to be in and it's difficult to get out of, it just makes me mad, and I don't know what solutions there are.. maybe to fight to change the norm back to hourly employment, or have contracts with a per-week maximum hour cap that if breached warrants bonus pay on top of salaried employment.
Especially when it's just a taxi app.
If you're then expected to work 200% of the time then you should be paid 200%, with the ability to say no if you don't want to. The actual amount is irrelevant.
Is it how things should be? Probably. But this is nothing close to reality.
If you want to be paid by the hour, be an hourly worker when you clock in and clock out. Then you are paid by the hour.
The whole point of being a "salary" worker is that you are not an hourly worker and you are not paid by the hour. In fact, you have no right to overtime as there is no such thing as "overtime" for a salary worker. There are state by state regulations that can limit how many hours you can legally work in certain professions, for example airline pilots are prevented from working too many consecutive hours, but there are never any regulations requiring you to get more pay if you work longer hours if you are on salary. Work expectations, time off, work-life balance -- these are things you need to negotiate and figure out when you sign that salary contract because it is absolutely not a per-hour contract. So please don't tell people it is -- instead make sure what you are getting into before you sign that contract.
1. moved from email-based auth to phone-based auth
2. removed all the auth and onboarding logic from the clients and moved it over to server
3. changed the networking from a hacky OpenAPI/Swagger code to Thrift over HTTP
i am not saying it was the most conservative call to do all this at once but it was necessary. the auth logic was basically untenable and no one really knew how it worked. some team in amsterdam could (and did) lock down uber for android users in russia because they changed some code.we also had to move to phone as a primary identifier, because honestly there are many countries people dont even use email. but how do you deal with phone numbers that were validated more than 7+ months ago, if you want to avoid things like this? [1] or how do you deal with promotions that required validating phone numbers not being VoIP that you could do out-of-band before but now have to do in-band?
anyway, i am being scatter minded here but it was probably one of the riskiest things uber did, from my point of view, changing the top of the funnel + also moving users from one auth to another with a download, esp given with apple's rollout mechanism we had no way back.
but it all worked! i should probably write this up one day.
1: https://arstechnica.com/information-technology/2016/02/when-...
We ended up scrambling as it became apparent how many things changed (from polling to push notifications, thrift changes etc etc) and making the backend ready became a heroic effort itself... especially that we had very few backend engineers in Amsterdam at the time.
You should write up your experience!!
but it all worked out seems like. and honestly, if you consider how fast uber moves compared to its competitors, im willing to bet it was the right call now.
And I'm over here without a SIM card in my devices, and not using a telephone number at all.
deal with phone numbers that were validated more than 7+ months ago, if you want to avoid things like this? [1]
Can you expand on how apps handle this usecase?This is a problem if you are relying only on phone-numbers as a factor, which Lyft was (so was Uber, in some markets). In reality, a lot of the time you verify the phone number and present a password challenge (aka ask for password) so it's not a huge problem.
But then, you'd need to handle the case when Alice signs up in with the phone number 123, then changes their number to 456, and 6 months later Bob signs up with 123 because they are the new owners. Now, Alice has to provide a new number (with some Grace period) and Bob has to be eligible for all the promos / signup goodies that were previously tied to that 123 number again.
Software is hard.
However, if this update failed nothing significant would have happened to Uber. So, they might not have actually cared.
So I recommend all engineers to strongly consider a FAANG while they're young and can tolerate a bit of burnout. Learn how the big companies do it, pay attention to what's good and what's bad, and keep that perspective with you in your career.
But be honest with yourself ahead of time about what would make you leave and follow through with that. "Golden handcuffs" of high pay is a real thing.
In general, I try to do this discretely by not pinging people outside working hours or trying to give impression I'm working late. Working late for me is usually working through code or a design at a time when I'm caught in it and don't want to let it sit until I solve it. If this happens I'll start late next day or reduce hours following week and I make sure I call this out during standup so my team knows why I'm signing off early.
It can become a snowball when one teammate sees another working and feels compelled to do same. Kudos to your manager for calling this out.
You get lucky rarely with an awesome team and usually fall in middle with some gripes. If you get into a shit show head for the door as fast as you can or stick around to learn a thing or two about what NOT to do.
A successful strategy is quite frequently to treat your first team at a company as just the second phase of an interview to get into one of the better teams in the company. Depends on the company, to be sure, but I've definitely seen many instances of "we're a good team, we know it, we'll happily poach good engineers from any team we like". It helps that the good engineers are going to be unhappy with their current team and looking to make the switch, anyways.
If you don't switch teams within your first year or so, it usually means you a) got very lucky at random, b) got into a good team because you knew someone internally with good info and were able to short-circuit the process, or c) you failed to network/interview well enough internally to move up, and you should probably either be okay with a dumpster fire or move to another company.
From recent memory, I can't recall Netflix really reinventing the wheel a-la-OP/Uber.
[1] https://netflixtechblog.com/embracing-the-differences-inside...
Netflix has many private and public projects that have alternatives that could have been adopted. I'm glad they didn't, because Netflix releases quality product and I'm super appreciative of their contributions.
I expect it's a variation of "hot stuff" which I've heard in songs from the 1930's.
Very high standards = Slow shipping = Boring
You can bet that working on the Google Ads teams is far more 'boring' than Stadia or Glasses. Similarly, at my FANGAM company, the most boring teams are also the most stable.
I don't think this is quite right.
Slow shipping is tied to coordination more than standards (although if the standards are enforced by testing from another team, there's your coordination). If the standards are self enforced, you can still ship frequently, but maybe not a lot of big releases. Small teams and decoupled work where possible helps.
I can only quibble about boring though. The code changes may not be exciting, but the environment can be. Some external event that spikes traffic can test your high standards, and may need remediations (in which case, I hope you can ship fast). Of course, boring is actually nice.
Many people don't have many options and companies abuse the shit out of that because people don't want to be homeless, get kicked out of the country or dead when they can't pay medical bills. Etc. Thus the need for legislation. And the lack of such legislation partially explains fabulous areas like skid row.
Now on the other hand, consider people who are stuck in part time jobs that treat them terribly for minimum wage. They don't have the freedom to quit because they can't afford to miss a paycheck.
In general, I don't think people who freely opt into anything should get sympathy for it.
It happens all over the place... medical students and residents are run ragged and brutally overworked. Young investment bankers are in the office constantly and always on call. Same thing with young lawyers in biglaw.
These are not people being abused or taken advantage of - they're making their own choices. You're suggesting that we should not allow people free choice in this context, and I think that's a much worse thing to do to them than to allow them to pick a job that's unpleasant.
We can think that they are free to go elsewhere like we can think that those in abusive situations can simply go elsewhere, but there are financial considerations, gas-lighting, just-another-month syndrome that leads to burn-out. Life is just in theory pack-your-bags-and-go easy.
If you thought going to work at Uber was going to be normal-ish, then you just didn't do your homework. That's on you. No reason we should make policy to protect people who won't do basic research.
You cite financial considerations, but again, these people are getting paid huge amounts of money. Unless you consider golden handcuffs to be a financial consideration that would prevent someone from leaving, that just doesn't apply here. That's the point - the tradeoff they're making enables them to leave whenever they want.
I did not work for Uber, despite receiving a decent offer (a 4-yr package that given the current Uber valuation would have been worth between 1.5 and 2 million USD) 3 years ago.
Just recently I had to pull a couple 12 hour days resolving a critical issue for an enterprise customer; I'd never been so ready to hang up my keyboard and move into a cabin in the woods afterwards. I can't imagine extending that crunch for _months_.
What was the benefit customers got out of any of this?
So basically, work 80 hours a week and have Ariana Huffington shill her useless book to you? Uber sounds like a shithole if you ask me. Those people that quit made the right choice
As a relatively naive to massive apps iPhone developer (I’ve made apps with millions of downloads, but nothing on Ubers scale) I find it confusing how a relatively straight forward iPhone app like Uber can be so complex. It’s basically a map and 3 buttons? And an ‘in the car’ state. They weren’t doing pool or bill splitting at this point I don’t think. I’d have thought everything else is back-end complexity?
Can someone do an explain like I’m 5 on this?
Edit: looks like it was also brought up in a previous thread.
TL;DW (IIRC): Uber is in a ton of markets and each one has significant differences, for example in payment providers - the app needs to support all of them and each comes with its own SDK.
- A/B testing capabilities
- Different features per country/region
- Different payment methods per country
- ...
I mean it's like e-commerce, when you stay in a single country, things are easy. When you go international, wild sh*t happens to cover all the spectrum of scenarios and respect the laws in place, while keeping it simple enough to maintain for devs.
It's way more complex than it seems
> Ariana Huffington joins Uber's board around the same time and releases her book on the importance of sleep right around this time, and piles of free copies are available in the office. Yes, sleep is important. So why am I at the office past midnight?
Also, were the people working longer hours getting paid overtime?
I’ve never seen why the app needed rewriting.
In general though I’m pretty biased towards boring things that work correctly as long as possible.
I finally said enough of this madness and retired this year. No matter how many times you manage to pull off miracles the people demanding them don't give a shit about you or your team.
A rewrite of a mobile app doesn't seem to fit the bill. I'm also reminded of the time that during an Uber ride the app took me into this secret screen where it attempted to get me to do some kind of coding assessment for recruiting. The engineering on this feature was absolutely nuts. But also completely over the top and laughably irrelevant for me and my geographic location.
I guess it will take such a caricatural death march to kill a unicorn before people get a clue. (And even that would be surprising. Not the killing - the getting a clue. )
Still, that's almost as great an advertisement for _not_ working at Uber as, say... everything else coming out of Uber.
I wish stores implemented more such hard limits, or other strong incentives to reduce space usage.
I bet Uber could make its app significantly smaller than 234 MB (Google Maps: 137 MB, Chrome: 36 MB), but that would require effort, and it's cheaper to consume an extra 100 MB on 100 million other people's phones than to put in that effort.
For the vast majority of Uber’s users, space is basically free.
I'd rather have the music.
The base model of an Apple iPhone comes with 64GB, which is probably more than enough for the vast majority of Apple users — all the bloaty apps one might use on a day to day basis, all their pictures, and all their music. For an extra $50 you get 128GB. This is more than enough for the vast vast majority of Apple users (yes I'm aware that there probably exists dozens of idiosyncratic power users who might need even more). In fact, if you're the kind of user that's going to blow past that, it's probably because you're storing more-than-average 4K or 8K video and RAW images, where shaving down app size is probably not going to help anyway.
I would have taken this shit for a week, maybe 2, but past that, I'm out of here. If you're gonna stick around during the whole thing to see it through, why leave once it's over?
From my experience (in games) it’s also quite intoxicating at the time and you get quite emotionally invested in supporting the team and fixing issues. In particular crunch is partly enabled because you get close through the adversity. You usually don’t get much opportunity to take stock until afterwards being so caught up in the moment. It’s pretty common to get a rash of departures right after it all calms down.
Rules are there to be broken, and even those mandated by law will get broken (see for example the non-compete cartel drama from a couple years back).
This first time I did a game jam many years ago, I stayed up for nearly 72 hours to get it finished. I slept maybe less than 8 hours that entire time, I felt like absolute shit towards the end. Nausea, headache, exhaustion.
The game was completed, but to this day, if I even look at a screenshot of that game or hear one of the sound effects, I start to feel nauseous almost immediately.
I'd imagine some people on this project had a similar (although maybe not as extreme) reaction.
It's sort of amazing how we as an industry have all just adapted to the App Store industrywide censorship and gatekeeping.
It's astounding that Apple has been able to pull this off, and even more astounding that so many companies are willing to work as sharecroppers for them.
Find it on the Apple App Store under AOL keyword Uber!
If not, this rewrite basically cost huge amounts of burnout across the mobile and server teams for no business value. At best it seems like an intense learning experience that didn't actually unlock $$.
I've solo made and published over 15 Android apps but I went full Dunning-Kruger and now I think I know nothing about Android development. It is too complex. If manager asks me, I don't know Android. I can't imagine Android development can be known.
If you ask someone if they know Android development and they say yes, be skeptical.
That is insane! To me it seams like something that could be done with 2-3 guys over 6 months with room to spare.
But yeah I get it they have the money and everyone wants to work with their friends.
I agree that this crunch time seems unnecessary, but it's mathematically impossible for Uber engineers to work enough to reduce their wages to anything near fast food wages.
Even someone working 80-hour weeks, 52 weeks per year at $15/hour would earn $62K. That's less than half the starting salary for entry level engineers at Uber.
Entry-level compensation at Uber is around $160K, with senior software engineers earning $400K or more: https://www.levels.fyi/company/Uber/salaries/Software-Engine...
Someone not salaried would be eligible for overtime and double time if working 7day weeks. That would significantly change the amount earned at $15/hour
When I joined Uber, my compensation effectively doubled from my last - already pretty well-paying gig - so even if calculating the per-hour wages for those 3 months, I made good money, and nothing comparable to the hospitality industry.
Its sad how many orgs still abuse salaried employees time.
I wonder why no large company has ever discovered the absurd waste this budget policy causes.
Add to that the problems associated with tenders (= sometimes absurd amounts of money wasted for pitching) and the overhead of way too many stakeholders and feedback loops on client side... in many a project the single thing that makes the most savings is a competent (!) PO on client side that gets "dictatorship powers" from their C-level that can override petty politics and internal squabbles if they threaten progress too much.
What a fucked up world where this is deemed reasonable. You're even able to justify it as "hey it was tough and ridiculous and half the people didn't make it but look, I wrote some books and was able to become a manager."
I mean... the world where uber engineers are getting paid 300k a year, is probably that world where people might think that this is reasonable, given the compensation at companies like uber.
I have another question though that's somewhat unrelated: I use Uber quite often in latin america when I'm travelling, and my main issue is driver cancellations after 10-30 minutes of waiting for the Uber to start coming to my place (outside the city). It's quite frustrating to me to read about all the UI improvements over the year at Uber, and it seems that software engineers at Uber don't care about the real user experience (waiting a lot for nothing). I would happily pay more to the drivers if this behaviour would stop (they cancel because I'm outside the city usually), but nothing has changed in the last 5 years about it. I don't care about the nice icons or dark mode or other UI changes BTW, because that's not what I remember after a ride.