Live data from Hacker News

Ask HN: Resources on how Google/Facebook etc. approach software design?

news.ycombinator.com

1–10 of 42 posts

Re: Ask HN: Resources on how Google/Facebook etc. approach software design?

#2
There are a number of blog posts by people such as Tim Bray, Steve Yegge, and others - as well as internal engineering blogs (at least there is one at Facebook and several at Google). I read these on a regular basis (Yegge's hasn't been updated in a while), but only to take away ideas and learn about new technologies.

Their 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?

#4
The 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 landing in production and result in a bad review) get pretty short shrift. Some might say that there's risk or waste either way, and that velocity rules all. I'm not going to say they're wrong, but it makes "software design at Facebook" a bit of an oxymoron.

Re: Ask HN: Resources on how Google/Facebook etc. approach software design?

#6

The 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.

Re: Ask HN: Resources on how Google/Facebook etc. approach software design?

#7
post #6

The 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.

> 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 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?

#8
post #6

Earlier 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…

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.

Re: Ask HN: Resources on how Google/Facebook etc. approach software design?

#9
post #8

Earlier 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.

I work in infra too (storage) so that's the majority of what I see. If all that PHP/JS stuff on the front end is worse I kind of don't even want to know about it. ;)

Re: Ask HN: Resources on how Google/Facebook etc. approach software design?

#10
A group of early ex-Facebook engineers/directors have recently collaborated with Software Engineering Daily to produce a podcast series about the engineering philosophy behind the core product. I think these talks are a little more raw and direct than you would find from official corporate talking points. https://softwareengineeringdaily.com/category/all-episodes/
Post reply on HN