Ask HN: Resources on how Google/Facebook etc. approach software design?
1–10 of 42 posts
Re: Ask HN: Resources on how Google/Facebook etc. approach software design?
#2Their approach is almost certainly not the right approach for you, because you are not Google ( https://blog.bradfieldcs.com/you-are-not-google-84912cf44afb ). That said, if you are looking for a position at these places, then the blogs might help you, in a number of ways. If you want to work there though, focus on the sound engineering techniques applicable anywhere (maps, hashing, trees, graphs, algorithms) and build a reputation through Open Source contributions to the projects the companies are involved with.
* Tim Bray / Amazon / https://www.tbray.org/ongoing/
* Steve Yegge / Ex-Googler / https://steve-yegge.blogspot.com/ and https://medium.com/@steve.yegge
* Facebook Engineering Blog / https://code.fb.com/
* Google Developers Blog / https://developers.googleblog.com/
Re: Ask HN: Resources on how Google/Facebook etc. approach software design?
#3Re: Ask HN: Resources on how Google/Facebook etc. approach software design?
#4Re: Ask HN: Resources on how Google/Facebook etc. approach software design?
#5Re: Ask HN: Resources on how Google/Facebook etc. approach software design?
#6The design process at Facebook is, to put it charitably, a bit minimal. "Move fast" is taken to mean start writing code immediately, then iterate on that to approach the desired outcome. Developers are rewarded for landing code in production each review period, even if that code provides little benefit, will need to be rewritten, and might even be buggy. In the rush, careful design and testing (which might delay land…
People plan and think before they code.
People are rewarded for impact, not for landing useless code.
Code is carefully designed and tested, or it doesn't land.
Impact rules all, not velocity.
Re: Ask HN: Resources on how Google/Facebook etc. approach software design?
#7The design process at Facebook is, to put it charitably, a bit minimal. "Move fast" is taken to mean start writing code immediately, then iterate on that to approach the desired outcome. Developers are rewarded for landing code in production each review period, even if that code provides little benefit, will need to be rewritten, and might even be buggy. In the rush, careful design and testing (which might delay land…
In my experience working at Facebook, not a single thing you said was true. People plan and think before they code. People are rewarded for impact, not for landing useless code. Code is carefully designed and tested, or it doesn't land. Impact rules all, not velocity.
Well good for you. Either one of us has had an anomalous experience, or...
> People plan and think before they code.
"Planning and thinking" != design process. Of course people plan and think. I plan and think before I go to the grocery or hardware store. Of course it's only for a moment, and the typical process I've seen at FB is a lot closer to that than to the design processes I've seen elsewhere in nearly thirty years producing software.
> People are rewarded for impact, not for landing useless code.
Again, you're playing extremes against the middle to paint a picture more favorable than accurate. Very little code is totally useless. However, I've seen plenty of "impact" awarded for code that made a very tiny increment in functionality, far outweighed by the missing/misleading metrics or spurious alarms or outright bugs in something even the author knows will be replaced next half. Every day I encounter stuff that's broken as a result. This morning it was a distcc script that nuked a build, because someone's desperate to get their impact in before the end of the half. I can't count the number of times I've followed the trail back from an incident to a diff with "test in prod LOL" or some such for its test plan. So "carefully designed and tested" just isn't true in general. The common case is very far from that.
Re: Ask HN: Resources on how Google/Facebook etc. approach software design?
#8Earlier quoted context omitted.
In my experience working at Facebook, not a single thing you said was true. People plan and think before they code. People are rewarded for impact, not for landing useless code. Code is carefully designed and tested, or it doesn't land. Impact rules all, not velocity.
> In my experience working at Facebook, not a single thing you said was true. Well good for you. Either one of us has had an anomalous experience, or... > People plan and think before they code. "Planning and thinking" != design process. Of course people plan and think. I plan and think before I go to the grocery or hardware store. Of course it's only for a moment, and the typical process I've seen at FB is a lot clo…
When it comes to software design though, the design of your infra is what matters most, since everything else is built on top of it.
Re: Ask HN: Resources on how Google/Facebook etc. approach software design?
#9Earlier quoted context omitted.
> In my experience working at Facebook, not a single thing you said was true. Well good for you. Either one of us has had an anomalous experience, or... > People plan and think before they code. "Planning and thinking" != design process. Of course people plan and think. I plan and think before I go to the grocery or hardware store. Of course it's only for a moment, and the typical process I've seen at FB is a lot clo…
Yeah. I worked in infra, so it could also be the difference between working on infra (where stability is valued) and working on product (where shipping fast is valued). When it comes to software design though, the design of your infra is what matters most, since everything else is built on top of it.