Skip to main content

我为什么对FB/Meta有信心?!

 

个人背景:工作6+年,微软,FB,在FB工作2+年

Agenda: Overview

1.FB的独特文化与业界公司的文化差异
2.文化差异带来的Career opportunity&growth WLB差异
3.公司的发展

FB是个好公司,这里工作可以塑造在不同维度的skills,特别是对于career开始阶段适应性比较强可以很快融入公司文化,FB,GG,MS毕竟是IT行业的top tier的公司,他们定义了这个行业的很多标准,比如说TC标准(RSU,ESPP,vesting schedule),medical insurance(HSA,FSA,sick leaves,parental leaves),project management(planning,scope,collaboration,design,以至于最后的总结connect,PSC,etc),甚至non-tech方面的办公室layout等等。以及跳槽业内对这些公司的认可。所以对于刚刚毕业,或者在career早期,也或者还不知道自己的兴趣,去top tier的大公司是最好的选择,例如资源更多,同事的能力,公司在不同领域的project,internal transfer等。如果你已经有非常明确的兴趣或者career path,比如说就是想做无人车,SpaceX,fintech,当然go for it。

1. FB的独特文化与业界公司的文化差异

FB的文化,一言以蔽之,就是bottom up。怎么理解这个bottom up呢,我想不出一个更好的定义,大概意思是,大到公司的决定,小到每个team/project的决定,是自下而上,是自己define自己的scope(tech and non-tech),把个体的contribution加起来是公司现在的状态。微软亚麻以及其他在我想象的业界主流公司,是正好相反的,是由上而下制定的规划,然后分配一级一级去执行。

top-down例子:在微软我的经历是,如果要做一个feature/project,往往是一级一级assign下来的,至少Azure的体验是这样,Jedi是一个例子。或者Azure service的其他management plane的feature,都要和Azure对于management/data plane的定义align起来,比如说对于security:需要encryption,RBAC,AAD,对于data plane,需要有replicaiton,redundancy等等,对于business,需要有billing model和Azure的business model align起来。这就使得Azure的结构高效简洁,一个ecosystem每年有序的增长,Azure下所有的员工都有同一个目标一起contribute。在我经历的大多数情况,每个service的project都是在M1,TL之间讨论,之后再决定执行与否。再说的high level一些,对于组里的产品的定义,未来规划,这些讨论我是没有听过的,可能在M1,M2,D1之间决定的,下面的IC就是计划的执行者。还有一些non-project 的例子,比如说team event,team lunch,IC也都是重在参与。一句话总结一下,在我经历的MS,project的决策是在TL,M1,对于产品的定义和长期规划可能是更高的level讨论。

Bottom-up例子:project相关的,从planning,priority,到project scope,是由每一个project的owner定义,我只是想做一个小feature,还是把这个feature expand到更大的scope,然后把roadmap plan一级一级bubble up,确定上下级align。当然对于E7, E8他们会propose一些更大scope的idea,然后top down的align这些给所有IC,但是执行环节,不是E7,E8,甚至有时不是E6,依赖于每一个IC去scope这些project等等。对于non-tech呢,team event等等是由IC去propose和drive的,什么活动,中午吃什么等等。FB的manager,和MS,GG不同是,FB的M1只是people manager,他们有些时候参与项目的讨论,但至于项目的计划,scope,design,M1可能都不在这个chat group里面。我了解到的其他公司,M1更多是people manager + project的决策者,或者参与决策。

以上是比较具体的例子,其实也不难发现,之后大家看到的种种褒贬,也是和这个核心文化有关。

之后我把top-down 和bottom-up的两种文化的优劣对比放在第二部分(个人利益相关),第三部分(公司利益)。

2. 文化差异带来的Career opportunity&growth WLB差异

先说一下Career opportunity&growth:

FB文化优劣:其实从上面的例子可以窥见一二。用黄渤的话说,“这个时代不会阻止你自己闪耀,但你也覆盖不了任何人的光辉”。从project说,你可以scope的很大,或者和其他IC(同组,不同组)一起collaborate,然后和潜在的用户开会,sale你的project。非project来说,可以参加bootcamper&intern manager,参加interview(现在WL很长)。

一言蔽之,只有你自己是自己的stakeholder,你define自己的project scope,sale别人你的plan,你自己决定自己对于组里,公司种种活动的参与程度。

所以我在开始讲的,如果你在career刚开始,适应能力特别强,其实FB是一个非常好的选择,在这一套体系里,能力锻炼和提升是多维度的,和同组外组人沟通,怎么输出你的观点,和designer,PM合作,怎么制定组里的roadmap,怎么推进自己的项目等等。

当然这种文化是有利有弊的,在我看来,这些能力在一些公司尤其是一定级别之后是必不可少的,但是在很多公司,这些也可能并不是核心能力,尤其是大家对career的追求不同,可能我希望在MS躺63,或者GG躺L4,我不希望被公司文化裹挟着参与到一些不擅长的领域里,或者我是个内向的人,希望做一个coding machine之类。写到这,我想到一个例子,在MS时候,听说一个67+的IC,career的大部分时间都在研究thread pool稳步升到了partner。这样的核心文化下,追求的并不是对每一个project的精度;相反的是在其他业界公司GG,MS,所接受的训练是大到一个project,小到每一行code,甚至config里的parameter(retry,TTL,etc)都有背后的思考。

这种solid tech driven的工作方式,是能代表大多科技公司。FB的以projec他driven的工作方式,则是能代表很多中小公司的,因为对于这些公司,可能生存->抢占市场才是top priority,要把project做到精益求精(99.99 -> 99.999),因为这种improvement的付出和收益往往已经不是正相关了。

Top-down driven company带来的优劣:首先我想到的肯定是对于tech skill的磨练。技术上短期内是可以有更多积累的,这些积累很多时候也是有普适性的(从Code review,design有小到大的学习),在短期可以迅速获得技术积累,会从容应对之后工作相同或者类似的问题,对WLB无疑有提高。而且GG,MS的project management相对轻松(Amazon一些组的sprint我认为是intense的)。另外一方面,正式因为top-down的文化,也正因为这些公司对于project,service,code精益求精的态度,相当长时间内,是没有scope变大的机会的,带来的问题可能有:升职很多时候和tenure有关,转EM很难,因为大多数情况project只是执行了计划的部分,并没有横向的扩展。

总体上来说,top-down的工作可能更像是research,对每个细节的追求是很重要的。bottom-up的更像是做工程,追求的是项目的计划,推进和完成。

说了这些每个人skill上面的得失,也可以谈一下文化不同带来的promotion的差别。总体说,FB的promotion philosophy和其他公司还是有些不同的,在我看来从E3->E5这个过程并不是选拔性质的。就类似于从61升到62,组里是有名额限制的,必须只能升一个或者几个比其他人做的都好的IC。FB的E3->E5是自然而然升上去的,当然论坛里有一些E4->E5 33个月失败的例子,可能是碰到不好的项目和manager。我了解到E3->E4,E4->E5是12月,18月。毕竟公司宣扬的是个人做出的contribution的理念,升职上是快的,tenure这个因素考量的非常小。而且因为project可以横向的拓展,有时候团队往往因此会增加更多的head count,所以我也在FB见到非常年轻的EM。

再说一下FB的卷。FB的卷常被大家诟病。其中之一就是在之前提到,在这bottom-up的文化下,每个人的努力都很好的被surface出来,也才可以在rating时候更客观的评价。论坛里看到另外一个帖子说,要避免卷就是要把饼画大,我非常同意。其次,为什么业界其他的公司。在我看来MS的问题是,这个自上而下的结构,并不是不卷,而是每个人的努力的结果和被assign的project本身的impact相关,比如说就是做CICD的pipeline或者monitoring,与做service revenue相关的一些feature,impact是不一样的。

最后想谈一下FB的PSC,总体是非常透明和客观的,manager的角色就是把每个人的psc总结,重新写好然后在org里面present,org里会有一个排名来确定每个人的rating。另一方面,MS的rating是不需要IC做什么的,可能写一写connect(有两次我没有写),review的过程在更像是黑盒子,每年一次的review,是不是需要排名,review的过程是什么样子我不知道。但是在我想,manager所接触到的信息是connect,scrum,1on1。

3. 公司的发展

再说一下公司的长期发展和个人的利益相关,以及论坛里大家对公司荣誉感的问题。

首先FB的各方面,在我理解是和GG,MS,Apple,亚麻这种公司不能比的。FB更像是一个B2C,C2C的公司成功创业,但是并没其他的技术积累,我想到的一个例子:我大学退学了回家挖煤,赚了三年赚了一个亿,然后我把钱存在银行准备吃利息然后继续挖煤。突然我发现大家都不用煤了,都开始用天然气,甚至太阳能了,我家里的工厂还是只有烧煤的锅炉厂。然在我趁着几年攒下来的家底去转型,天然气和太阳能我再入场可能晚了,我打算去研究永动机了。

FB现在面临的问题和以后对Meta的投入,我认为是任何一个现在的中小型公司以后都会面对的(如果他们增长到FB的体量)。

FB现在的优势是Ads盈利稳定,缺点是业务的单一,以及本身social media的技术壁垒过低。比如说,亚麻是retail和cloud,微软的业务应该是大公司里最多的,垄断的office,windows以及Cloud是未来的增长点,和gaming。GG也是广告公司,但是GG在自己的领域里做到了垄断,Search,Android。

最后说一下论坛中对公司荣誉感的现象,简而言之,公司的reputation有关的因素有很多,公司的公关,revenue,某领域的垄断程度, 甚至和公司面试题库里有多少hard题,recruiter的说辞,公司的perks,公司有没有不友好的manager,TL或者让人头疼的project都有关系。非常能理解大家对公司充满荣誉感,毕竟是花费了大量的effort刷题面试,决定加入现在的公司,公司更好的reputation更能代表我付出的努力。首先对公司做出评价还是尽量客观,毕竟你的观点会影响很多后来人,他们也花费了相当的effort,但是因为某些略带偏见的post,或者因为阅读量写了一个吸引眼球但是倾向明显的题目,让其他人错失了一些很好的机会。反之,大家在看到一些评论自己公司的帖子时候,还是避免take it personal,绝大很多时候公司和个体不是命运共同体。

最后

我写这个帖子的初衷有三点,1.长周末闲的 2. 记录一下自己工作时的感受,我想尽可能的客观评价,毕竟感受也是主观的东西随着时间而改变 3.国人转码农和参加工作在近几年越来越多,对于刚刚工作的同学,可能被一些倾向性的帖子影响,希望大家在接收到论坛的信息和讨论时候可以更加critical thinking,再做出对自己最有利的选择。

希望正在找工作的同学们不要对FB丧失信心,公司的perks和tc(股市打折之前)都还是非常到位的。

这里没有从公司的角度讨论bottom-up带来的弊端(例如产品迭代快,产品臃肿,etc),因为论坛里已经有很多帖子讨论的很详细了。

我写这篇的初衷更想从个人的角度讨论公司文化带来的利弊。毕竟每一个个体和公司并不是命运共同体,从公司学到的skillsets,career opportunity,tc更应该被人看到。

Comments

Popular posts from this blog

CKA Simulator Kubernetes 1.22

  https://killer.sh Pre Setup Once you've gained access to your terminal it might be wise to spend ~1 minute to setup your environment. You could set these: alias k = kubectl                         # will already be pre-configured export do = "--dry-run=client -o yaml"     # k get pod x $do export now = "--force --grace-period 0"   # k delete pod x $now Vim To make vim use 2 spaces for a tab edit ~/.vimrc to contain: set tabstop=2 set expandtab set shiftwidth=2 More setup suggestions are in the tips section .     Question 1 | Contexts Task weight: 1%   You have access to multiple clusters from your main terminal through kubectl contexts. Write all those context names into /opt/course/1/contexts . Next write a command to display the current context into /opt/course/1/context_default_kubectl.sh , the command should use kubectl . Finally write a second command doing the same thing into ...

OWASP Top 10 Threats and Mitigations Exam - Single Select

Last updated 4 Aug 11 Course Title: OWASP Top 10 Threats and Mitigation Exam Questions - Single Select 1) Which of the following consequences is most likely to occur due to an injection attack? Spoofing Cross-site request forgery Denial of service   Correct Insecure direct object references 2) Your application is created using a language that does not support a clear distinction between code and data. Which vulnerability is most likely to occur in your application? Injection   Correct Insecure direct object references Failure to restrict URL access Insufficient transport layer protection 3) Which of the following scenarios is most likely to cause an injection attack? Unvalidated input is embedded in an instruction stream.   Correct Unvalidated input can be distinguished from valid instructions. A Web application does not validate a client’s access to a resource. A Web action performs an operation on behalf of the user without checkin...