好多年没有在地里发帖了,上一篇正经帖还是2013年申请完的时候,是那篇帖子给了我这个头衔和足够多的大米,使得我这么多年可以在版上想看啥看啥。说来实在惭愧,拿了CMU PhD的offer读了一年就转成了Master跑路,跑路时候也没有刷什么题拿什么大包裹,最后随便就从了亚麻的标准new grad包结束了自己的学生生涯。 说到签亚麻也实在是机缘巧合。本来也是随便投的,结果电面OA啥也没有,recruiter 一封邮件让我去西雅图面试。我当时一边上着3门load很重的课一边面试,根本抽不出时间飞西雅图(当年匹兹堡到西雅图还没有直飞)去面试,所以找了个理由跟recruiter说不去面试了。然后刚好又有了两个西部的面试,中间多一天,就跑过去面试了。面试当时是群面,给了一台很破的ThinkPad写代码,然后跟面试官讲解自己的代码。4个小时时间我好像1个多小时就写完了,剩下的时间都在写注释和unit test。然后第二天就拿到了一个标准包。
选组也是很有意思。因为家庭原因我必须呆在匹兹堡附近地区,所以问 recruiter 东部有没有AWS的组。Recruiter告诉我在一个叫做 Herndon, VA 的地方有 EC2 组。我从来都没听说过这个地方,但是开车离匹兹堡只要4个小时,就从了。就这样,我就加入了一个很小的 remote office,然后亲历了它变成 AWS 除了西雅图外最大的 office 和 HQ2 的过程。
先报一下 Timeline: .
前排插播广告。Herndon, VA office 有大量 SDE 及 SDM 和 TPM opening。无论你对前端,后端,或者底层实现感兴趣,想参与 AWS 最强的 infra 工作还是新兴的 security(AWS CISO就在这个office),这边都有合适的岗位。DC地区气候宜人,风景优美,房价税率不高,学区极佳,路上没有 homeless 和 needle,男女比例平衡,是各位发展的好去处。如果有兴趣的话请私信简历。
新入职场,如何摆脱学生思维 . ----
..
加入 AWS是我的第一份工作。之前因为一直准备出国,并且在 PhD program 里,所以一直以来从来没有实习过。我很幸运地快速认识到了学生和工作的不同:
做到这几条可以让你快速地给你的组和你领导留下一个好的印象,你的初始 performance 不会太差。然而,如何在组里站稳脚跟并且逐渐成为组内更加重要的一员,则又需要其它的技能。
入职新组,如何站稳脚跟
接上节。这些技能不仅对刚开始工作的人适用,对在职跳槽或者加入其他组的也同样有帮助。
所以,通过前几个项目,你应该完成以下一些内容:
但是,光完成这些会让你的角色停留在一个很好用的打杂工上。你需要另外的几点来提高你的影响力:
这几点都能增加你获得更好的 project 的几率。当老板分配任务的时候,她考虑的内容有谁能在最短时间内完成这个任务,给某人的风险有多少,某人现在做的事和这个事相比哪个更重要,等等,并且很多时候会问组里核心人物们的意见。这个时候,如果有人愿意举荐你,并且你能再此之前展现出足够的 domain knowledge 和能力去完成这个任务,那将它分配给你的风险降低而几率上升。介绍一下我自己的经验。我2015年5月入组的时候,分配到的任务是搭一个测试环境。除了各种杂活(比如创建数据库,设置运行环境)以外,唯一的 coding 就是把所有系统中的 ID 从 int 改成 long。虽然这个项目烂到爆,但是能让我熟悉AWS内部的各种环境,工具,以及流程,并且可以打开熟悉各个组件。其次,在跟组员 1:1 时候所有人都说组内的系统没有 document,因为所有懂的人都忙着干活。于是我向每个部分的 domain expert 了解各个部分的细节和实现,并且把所有的内容汇总成一个 wiki。虽然写得很烂还有错误,但并不妨碍组内每个人都把这个破烂 wiki 向外推广,以至于时至今日,这个 wiki 还是组内软件架构的主要参考资料。在同年8月某次讨论如何提高某个重要组件性能的讨论上,组内最资深的 engineer 说到了关于 throttling 的内容,而且他的理解是错误的。我刚好前几天看到相关 wiki,于是提出不同的见解并展示了这个 wiki,使大家对我刮目相看,并且我提出的改进很小,但是直接获得了3倍的性能提升。自此以后,我没有继续打杂而是开始做好项目,继而在16年底就有足够的内容提交SDE2的升职报告。
提升软实力,助力升职 .
作为一个非科班出身,从未获得过CS学位,Leetcode 也只停留在340题的人,我来谈谈除了硬实力外的部分。
软件工程,首先作为一个工程项目,注定需要协调各方,多人合作。所以尽管代码、设计、实现和 debug 能力很重要,其它的软实力是让项目进展顺利的重要部分。而项目的进度则是你老板的指标。所以在硬实力达标的情况下,软实力很大程度上决定了你能否升职,以及多久可以升职。
做到这些可以让你成为一个称职的SDE2,而要升到 senior level 则需要一些其它的技能。 .
. Waral dи,
当然,这些能力是提升至高级别的必要不充分条件。特别是升至L6及以上的级别,其它的因素也必须要考虑在内。大部分公司的升职报告都需要经过某种 committee 讨论通过,如果 committee 是由 org 的 leadership 带头,那么上层的政治斗争也会起到很大的影响。如果你的老板 performance 不好,或者在 org 内被边缘化,那么你的升职报告很有可能会被其他组的比下去。所以,下一节我来聊聊政治生态的内容。
如何看待政治生态
. 1point 3acres
有句话说得好,有人的地方就有江湖,在公司里更是如此。在一个 org 里机会总是有限,各个组之间的关系也非常微妙,领导平衡各路诸侯的手段也各式各样,所以了解、分析、掌握上层政治生态十分重要。
首先,了解跟你相关的直系 org 的分界线,比如某个VP,Director,和 senior engineer。了解每年的计划和 head count 的分配是怎么运作的,以及你所在组的 visibility 的边界。其次,了解你的老板和你老板的老板在 org 内的表现和地位,以及这两者的趋势。如果你老板和你的组在 org 中处于边缘地位,没有什么 visibility,或者常年没有新的 head count 和较大的成就,那么你就要小心了。毕竟在整个 org 中,你的 performance 是基于你老板(甚至是你老板的老板)的。再次,了解和你的组合作紧密的组的情况。如果两个组分属不同 org,那么你作为 engineer 必须和对方 engineer或者 manager 维持一个良好的关系,哪怕做到脸上笑嘻嘻,心中mmp也是必须的。特别是你的老板被对方压制,而且你的组还有求于人,那么就算跪舔也得做。毕竟你把关系搞差了,影响工作的是你的老板。如果是同个 org,那通过比较两个组的话事权可以大概分辨出它们在 org 中的地位高低。最后,了解每个组的决策者和最有话语权的人并与之建立良好的关系可以在关键时刻为你的工作或者升职锦上添花。
所以,作为 IC 的 engineer 们,选择一个好的老板至关重要。一个有能力有远见有进取心的老板会完全改变你的职业生涯。就像 Sheryl Sandberg 所说,When companies grow quickly, there are more things to do than there are people to do them. When companies grow more slowly or stop growing, there is less to do and too many people to be doing them. Politics and stagnation set in, and everyone falters. He told me, "If you're offered a seat on a rocket ship, you don't ask what seat. You just get on."如果不选择 start up,那么大公司里迅速发展的组也可以实现一样的目标。一个好老板可以在较短时间内提升你的能力,提供足够大足够多的机会来满足你的发展,剩下的就靠你自己了。 . check
最后说说和老板的关系。一个有远见的老板需要有能力的人来实现她的梦想,而一个人的精力总是有限。那么你需要做的是帮助你的老板实现她的目标,减少让她操心的内容。比如:
最后再说几句