Airbnb suffers from a problem I call "Too many engineers". All that's really left is scaling issues.
The product is effectively done. It was done years ago. Now you just have engineers inventing problems for the sake of creating work. Same deal with Uber, Netflix, and Facebook. Core competency was dev complete forever ago.
- Writing a 5 part blog post on why they're moving away from that technology
Look I love Lottie, but it's hilarious to me how far outside of "Facilitating short term rentals" it is. Facebook has the same thread to pull with React. I get that they're "trying to contribute to the ecosystem" but it's like an extension of the PhD for these coders.
All of this is valid and I don't really disagree, but would add that a lot of these longer lived companies do seem to spend a lot of resources on projects that are nothing like the items you listed and do seem rather pointless.
I have not but my co-founder worked at Uber for 5+ years. He said they had engineers basically building whatever anyone wanted. He said they built their own Slack more or less just because they could.
It's sad, because if they would just travel the world (or look at the data) instead of building unnecesary infrastructure, they would realize how broken the Uber experience is in less developed countries.
Data quality issues, like missing tolls, intersection being different on Uber's map than in real life means that Uber is underpricing drivers, which leads to driver cancellations. It was very frustrating for me to start the whole process again mutiple times after waiting 5-10 minutes and try to haggle with the drivers all the time.
I think it's likely that they don't put much value in delivering a quality product in these markets, where the revenue is relative peanuts compared to first world countries. It's enough just to exist there and claim the territory for the brand. And they can always just blame the sub-par experience in these areas on bad infrastructure. Retaining talent by keeping their engineers happy with pet projects is probably much more important to the company.
They did need them at one point. And the product was successful enough that nobody in management ever had to get around to cost cutting, in the cases of Netflix, Facebook, etc. But that doesn't mean engineers are doing anything important.
I asked a similar question to a sibling comment in this tree but have you considered that there's a lot more than meets the eye at these companies? If the product seems "simple", "done" or "just works" that's a good thing and intentional.
A manager went to the Master Programmer and showed him the requirements document for a new application. The manager asked the Master: "How long will it take to design this system if I assign five programmers to it?"
"It will take one year," said the Master promptly.
"But we need this system immediately or even sooner! How long will it take if I assign ten programmers to it?"
The Master Programmer frowned. "In that case, it will take two years."
"And what if I assign a hundred programmers to it?"
The Master Programmer shrugged. "Then the design will never be completed," he said.
I'm interested in why you feel that way about Netflix. I've been digging into their source code and it's a complicated beast, with flags such as `isGreekAndSafari`. Beyond that, they have to deal with all the random business rules that each country has around content. It's given me a big appreciation for what they do, which others might boil down to something that's simpler than it actually is ("it's just streaming video, come on").
Reminds me of how people treat web developers in comparison to "real developers". I think perhaps it's just human nature to downplay the work or job of others.
I don't disagree that some places might have too many engineers, but I also think you underestimate the complexities of running a product that operates in every corner of the globe. And wants to provide a damn good experience in every corner of the globe.
So it's insane to me that you think their problems are "done" or "solved". That's how you end up falling behind and becoming an outdated business. These companies are trying to be proactive, not reactive!
Those problems you describe are about implementing business rules - that’s not particularly interesting work provided the system has been well-designed. I imagine the glamorous work at Netflix for building out their scalable infrastructure for delivering terabytes of content every second largely ended years ago - of course that work is ongoing as new delivery systems and transports emerge and content consumption habits evolve (remember when people used to think you could only watch Netflix Streaming on a computer?) - but that needs far fewer people to accomplish, and it would be evolutionary work, not revolutionary.
> I think perhaps it's just human nature to downplay the work or job of others.
Of course it is! But as far as Netflix, and all other employers are concerned, they need to offer jobs that are either “interesting” or glamarous - otherwise there’s nothing to attract the best talent when they’re already paying top-tier Bay Area comps just to compete with Google and Facebook. (Why they don’t try to compete with PTO is beyond me - I told one recruiter I’d work for 20% less comp if they doubled their miserly 15 days PTO and they never got back to me - but that’s another story).
Now in my case, the work I do for my day-job isn’t glamorous at all: it’s just a straightforward line-of-business SaaS application. I’m not looking to change my employer at all (for reasons I won’t go into - but I do get 45 days PTO), but if I was looking I wouldn’t accept a job at a big name if it’s just to do /routine/ work. I want to be able to blog about my work and have people at least say “oh hey, that’s cool”.
I agree that companies tend to over hire. My company certainly does, which leads to things taking much more time they would with less folks (and often more buggy). It's the age old problem of throwing engineers at things thinking it'll speed things up I guess.
I disagree that there isn't exciting work to be done at these places. I think you're just as likely to be bored at any other job, you just get paid boatloads more. Most end up running off to do their own thing since they have the financial freedom to do so after a few years.
For what it's worth, I think you'd be able to blog about your work at Netflix, Google, Facebook, etc. Plenty of their employees do so.
EDIT (you added in some PTO details): Heck I wouldn't leave if I got 45 days PTO either! Yeah, I hope companies start competing more on hrs of work. I'd gladly take a hefty pay cut to work 20 hrs a week.
> I think you'd be able to blog about your work at Netflix, Google, Facebook, etc. Plenty of their employees do so.
There’s two types of work-blog: the kind you have on your personal website - and the kind on the company’s own blog.
Most companies prohibit what you can talk about on your own blog (rightfully so - competitive secrets, etc) but some companies like a Apple outright prohibit you talking about your work to others at all beyond generalities.
Company-run blogs, for all their casual demeanour, are still ruled by management - and one’s blog articles become their copyright unless otherwise stipulated (as it’s a work stemming from your employment). When/if the company ceases to exist - so do your articles.
I had my own blog on blogs.msdn.com when I was at Microsoft - I sometimes posted somewhat subversive articles (such as guides on how to tweak the appearance of components of Windows if you didn’t like the defaults using publicly available articles and documentation) - I was hoping it would still be online today but it seems most MSDN blogs that didn’t reach Raymond Chen-levels of popularity got axed when the “MSDN” brand was retired. Oh well...
I think having flags like isGreekAndSafari could also possibly be a sign of too many engineers. I never really understand why large scope and/or scale business rules require more engineers. Why do companies program all this stuff directly into the app with crazy flags like that instead of building configuration systems so that lower cost employees can fill in and expand the business rules?
What kind of language and configuration system do you suppose would be viable for doing this? What kind of system would let "lower cost employees" fill in and expand the business rules?
Reminds me Stripe, the payment processor, who wrote a custom internal social media network: https://stripe.com/blog/stripe-home It seems many tech companies have trouble de-engineering themselves and get stuck in a loop of endlessly rewriting/migrating/redesigning because they have a massive technical staff all trying to prove their value. Google definitely suffers from this. No glory in fixing the existing chat app, so just write a new one with new problems, justifying the creation of a newer one etc. Microsoft has it even worse because they can't delete any of the old interfaces for compatability reasons, so they just pile on layers of parallel systems.
Looks like that was the product of an internal hackathon. That said, your point is still valid; companies often experience these little internal pivots. In large companies, it becomes make-work empowering a Not Invented Here culture. In smaller companies, too much obsession over tangential projects lead to misprioritized boondoggles that might potentially threaten their futures.
I'd agree on AirBnB and Netflix but not Facebook and Uber. Facebook has continuous challenges with content/abuse/moderation and Uber has continuous challenges with routing/optimization/pricing of their pooled rides.
Have you considered the possibility that the first two companies you've mentioned have just fooled you into thinking their product is complete by offering you a complete feeling experience? There's a difference between "this feels whole" and "there's nothing more to be done here". I would say those two companies have iceberg effects with their products -- the customer interacts with a very focused piece of it.
Totally agree. I have wondered what exactly engineers at... Netflix, for example, do on a day to day basis. The product plays videos, right? Its played videos for...years. Their newer features are pretty clear overengineering efforts like "Smart downloads". Because they've run out of shit to do so badly that the app will literally just start downloading things on your behalf without you. Why is this at all necessary? What users asked for this? Its exactly the kind of thing someone who had nothing else to do would come up with.
Maintaining infinite platform/device compatibility, optimising video delivery, reducing bandwidth costs and new features to push the medium forward (like the choose-your-own-adventure thing they made).
Video delivery is hard. If you spend a month working on a basic Netflix clone showing a single clip it won't be 1/100th the performance of Netflix even if you use a CDN.
Netflix has optimizations for individual ISPs by placing content servers directly in their DCs.
Also, large organizations accumulate constant tech debt that need to be paid down. Features aren't infinitely scalable.
The fact that they have people optimizing that obsessively is an indication of how little real work there is to be done. The thing plays videos, its played videos for years upon years, and all that's left in engineering terms seems to be to make it faster to a small degree that no user is likely to even detect.
It's not just playing video. Actually playing the video is easy. Delivering it to the end user is enormously challenging.
Even with a top-shelf CDN, you will have a non-negligible amount of customers having playback issues because of routing issues, peering disputes, congestion etc.
If delivery was easy, Akamai would not be a multi-billion dollar company. Microsoft wouldn't pay them millions, they'd just spin up some content servers themselves.
Saving X kb per 30 minutes of video streamed is "obsessively" optimizing something if you're serving a single video. If you're over 10% of all of Internet traffic, that can be millions of dollars saved a year, which pays for more than a few engineers even at SV salaries.
As a user I certainly appreciate it, but I think the actual content being delivered plays a much larger role than how many milliseconds its delivered in.
Compare it to Disney+ or HBO Go and you’ll learn why the comparison isn’t that simple. Netflix starts faster and doesn’t pause under a much broader set of network conditions because there’s a team of people improving it. Those other products support fewer devices and it still shows how much room there is to mature beyond the basic level of service you get with redundant servers and a CDN.
The product is effectively done. It was done years ago. Now you just have engineers inventing problems for the sake of creating work. Same deal with Uber, Netflix, and Facebook. Core competency was dev complete forever ago.