Facebook’s code quality problem
darkcoding.net
darkcoding.net
The evidence here is three times "If brute force doesn't solve your problems, then you aren't using enough." which is the route chosen by uncultivated people in any domain. (myself included)
Among which I often hear: - "Just add more RAM, it doesn't cost much nowadays!" - "Just push it to <insert well-known hosting plaform, preferably A.z.n> using <insert overhyped virtualisation platform>" - "Just use to NoSQL, it's faster!" (sigh)
Every now and then production questions the business value for this. Recently my company released a new game feature and we had to throttle it back in a hacky way immediately as user did not like it. However the database calls and code are still being executed. Now the business does not want us to revert the code (or re-implement the throttle in proper way ) as they see no business value in that and fear of breaking other things as part of this "unnecessary" code changes.
I tried to explain that we just stopped the feature as it was an emergency as we did not have time to revert and re-push the server. This feature was well tested (not a brand new feature ) so we did not have a throttle . We found a hack and manage to stop the feature so that users are not outraged.
May be the right decision was not to tell about the hack to the business at all. They would have have to wait till we revert the code properly and re-push the server. But as an engineer you worry about the product as well, we I could not resist .
In their defense I wouldn't be surprised if many companies had similar graphs especially as there was no Y axis and there is no cost associated with incidence, but still worth a chuckle.
As for just tossing more engineers at a problem it is going to be painful when they decide to stop adding engineers to work on the iOS app. Suddenly you don't have new devs with nothing on their plate ready to make new software, but all you have is engineers that are spending most (if not all) of their time maintaining what they have so there will be not many devs free to build stuff and those that are will take a while to get it done given the little free time they have to devote to the effort.
This has played out many times before at many other companies. Soon a little group will be formed to reduce the technical debt and improve the architecture. They will do their best, but have a hard time unless there is a fundamental shift in culture (think Microsoft with security in 2003).
Facebook is also rather aggressive with their recruitment. I've specifically asked them on multiple occasions to NOT contact me with job offers. Facebook straight up ignores these requests. I've now been contacted by at least three separate Facebook recruiters. Mind you, I've NEVER applied to work for Facebook and I don't even have a Facebook profile.
Amazon, on the other hand...
It's the attitude that "hacking things to work is okay" is causing extremely bad reliability issues even when using a top of the range android phone or latest iOS device.
Have they ever thought that maybe 18,000 classes is a bit too much?
Absolutely nightmarish way of working.
[0] https://www.facebook.com/notes/facebook-engineering/under-th...
Look at the code on those projects and compare it to the code on project's like Google's Closure.
It's night and day.
facebook didn't become popular because it had technical abilities or qualities that no other companies had. i mt became popular because of good product features and good marketing ( in the most general sense). So, to them, using a bad technology wasn't such a big deal.
it doesn't mean php is good, it just means that some businesses can afford a bad technological stack. Even online ones.
now, as software developpers, we should try to use the best technology whenever we can ( with best being relative to the business constraints of course).
But commercial success and technological achievments are two different things. sometimes they're linked (think whatsapp), sometimes not.
It is extremely rare that an internet company fails because of their technology choices. At the end of the day - the user does not care about your technology. They only care about the user experience and the value your product delivers.