
我们俩的联系方式![]()
Similar entries最新评论
友情链接导航 |
facebook 的工程师文化
由 qyb 于 星期二, 2011-01-18 23:24 发表
有人发表了How Facebook Ships Code,偶觉得其中关于Facebook的工程师驱动文化的部分特别有意思,于是翻译了一下(刚刚google之,网上也有其他翻译出来了,真是快手啊).. * as of June 2010, the company has nearly 2000 employees, up from roughly 1100 employees 10 months ago. Nearly doubling staff in under a year! * the two largest teams are Engineering and Ops, with roughly 400-500 team members each. Between the two they make up about 50% of the company. * product manager to engineer ratio is roughly 1-to-7 or 1-to-10 * all engineers go through 4 to 6 week “Boot Camp” training where they learn the Facebook system by fixing bugs and listening to lectures given by more senior/tenured engineers. estimate 10% of each boot camp’s trainee class don’t make it and are counseled out of the organization. * after boot camp, all engineers get access to live DB (comes with standard lecture about “with great power comes great responsibility” and a clear list of “fire-able offenses”, e.g., sharing private user data) * [EDIT thx fryfrog] “There are also very good safe guards in place to prevent anyone at the company from doing the horrible sorts of things you can imagine people have the power to do being on the inside. If you have to “become” someone who is asking for support, this is logged along with a reason and closely reviewed. Straying here is not tolerated, period.” * any engineer can modify any part of FB’s code base and check-in at-will * very engineering driven culture. ”product managers are essentially useless here.” is a quote from an engineer. engineers can modify specs mid-process, re-order work projects, and inject new feature ideas anytime. * during monthly cross-team meetings, the engineers are the ones who present progress reports. product marketing and product management attend these meetings, but if they are particularly outspoken, there is actually feedback to the leadership that “product spoke too much at the last meeting.” they really want engineers to publicly own products and be the main point of contact for the things they built. * resourcing for projects is purely voluntary.
* arguments about whether or not a feature idea is worth doing or not generally get resolved by just spending a week implementing it and then testing it on a sample of users, e.g., 1% of Nevada users. * engineers generally want to work on infrastructure, scalability and “hard problems” — that’s where all the prestige is. can be hard to get engineers excited about working on front-end projects and user interfaces. this is the opposite of what you find in some consumer businesses where everyone wants to work on stuff that customers touch so you can point to a particular user experience and say “I built that.” At facebook, the back-end stuff like news feed algorithms, ad-targeting algorithms, memcache optimizations, etc. are the juicy projects that engineers want. * commits that affect certain high-priority features (e.g., news feed) get code reviewed before merge. News Feed is important enough that Zuckerberg reviews any changes to it, but that’s an exceptional case. * no QA at all, zero. engineers responsible for testing, bug fixes, and post-launch maintenance of their own work. there are some unit-testing and integration-testing frameworks available, but only sporadically used. * re: surprise at lack of QA or automated unit tests — “most engineers are capable of writing bug-free code. it’s just that they don’t have an incentive to do so at most companies. when there’s a QA department, it’s easy to just throw it over to them to find the errors.” [EDIT: please note that this was subjective opinion, I chose to include it in this post because of the stark contrast that this draws with standard development practice at other companies] * re: surprise at lack of PM influence/control — product managers have a lot of independence and freedom. The key to being influential is to have really good relationships with engineering managers. Need to be technical enough not to suggest stupid ideas. Aside from that, there’s no need to ask for any permission or pass any reviews when establishing roadmaps/backlogs. ”My product director doesn’t even really know all the things I have on my roadmap.” There are relatively few PMs, but they all feel like they have responsibility for a really important and personally-interesting area of the company. * by default all code commits get packaged into weekly releases (tuesdays) * with extra effort, changes can go out same day * tuesday code releases require all engineers who committed code in that week’s release candidate to be on-site * engineers must be present in a specific IRC channel for “roll call” before the release begins or else suffer a public “shaming” * ops team runs code releases by gradually rolling code out
* ops team is really well-trained, well-respected, and very business-aware. their server metrics go beyond the usual error logs, load & memory utilization stats — also include user behavior. E.g., if a new release changes the percentage of users who engage with Facebook features, the ops team will see that in their metrics and may stop a release for that reason so they can investigate. * during the release process, ops team uses an IRC-based paging system that can ping individual engineers via Facebook, email, IRC, IM, and SMS if needed to get their attention. not responding to ops team results in public shaming. * once code has rolled out to level 9 and is stable, then done with weekly push. * if a feature doesn’t get coded in time for a particular weekly push, it’s not that big a deal (unless there are hard external dependencies) — features will just generally get shipped whenever they’re completed. * getting svn-blamed, publicly shamed, or slipping projects too often will result in an engineer getting fired. ”it’s a very high performance culture”. people that aren’t productive or aren’t super talented really stick out. Managers will literally take poor performers aside within 6 months of hiring and say “this just isn’t working out, you’re not a good culture fit”. this actually applies at every level of the company, even C-level and VP-level hires have been quickly dismissed if they aren’t super productive. * [CORRECTION, thx epriest] “People do not get called out for introducing bugs. They only get called out if they ask for changes to go out with the release but aren’t around to support them in case something goes wrong (and haven’t found someone to cover for you).” |
好文,收藏至20ju.com
好文,收藏至20ju.com
谁能告诉我什么是 juicy project-->
谁能告诉我什么是 juicy project--> juicy就是汁水多的,好吃的,大家都想干的好项目。可以翻成热门项目?
juicy project
juicy project, 直译是多汁的项目,通常美国人喜欢吃的肉都是juicy的,所以juicy通常和好吃的东西连在一起....“好吃的项目”? 确实很难翻译哈
jiucy就是好玩的,过瘾的,带劲的
jiucy就是好玩的,过瘾的,带劲的
juicy project ---肥差 or 美差 etc
juicy project
---肥差 or 美差 etc
值得仔细阅读
很好的文章,值得仔细阅读
有一个疑问 “even C-level and VP-level hires have been quickly dismissed if they aren’t super productive.”
这里的C-Level和VP-Level应该是指高级管理层比如CXO和XX-VP
我怀疑正如LZ所说的,mark之前只有4级。C应该就是总监
我怀疑正如LZ所说的,mark之前只有4级。C应该就是总监级的。以前听说过fb是扁平化管理的,小team干大活
很值得借鉴。
很值得借鉴。