一亩三分地amazon

1Point3Acres.com does not represent or guarantee the truthfulness, accuracy, or reliability of any of communications posted by users.

Copyright ©2009-2022 1Point3Acres.com All rights reserved. See Terms of Service.

1Point3Acres.com does not represent or guarantee the truthfulness, accuracy, or reliability of any of communications posted by users.

Copyright ©2009-2022 1Point3Acres.com All rights reserved. See Terms of Service.

从2012年申请出国留学就开始潜水地里,8年的人生N次Z字形大转,每次都收获满满,却一直没有落到笔头,算起来实在欠了地里很多。这次借着从SDE功成身退的机会趁热打铁写写自己做程序员期间打怪升级的故事,一来回馈地里,二来若是能给后人一些启发和激励,也不枉费我作为前浪这一番折腾。

• 10--12年 国内1年半某小破私企弱电工程师工作经验。继续CS零相关!曾试图自学Java,结果连Environment都setup不起来的那种,自学不了了之。

• 在校第二个学期开始,出于兴趣自己强转CS,修了本科CS的四门课:Data Structure, Algorithm, Database, OO Software Development(真的只学了这四门课…)

• 16年 跳槽Amazon。FireTv组直接给的SDE II。在同一个组一干四年。从绝对吊车尾、被组内大牛各种鄙视嫌弃、医生一度诊断我为重度焦虑,到四年后在组内做到顶梁柱,独当一面

• 2020年现状:现任老板在积极为我办升职,原打算明年Q1给我升SDE III并已得到了Senior Manager们多多少少的点头。形势一片大好之时,我决定平级跳去另外一个org做SA(Solution Architect II)。面新组的过程对现任老板完全透明,于是我拿offer之前那一个月每次1:1他都在使尽浑身解术留我,动之以礼晓之以情,最后还祭出skip manager和skip skip manager(我们很熟,后文会提)直接当面聊,表示我要不想编码他们可以组内帮我划出个不编码的职位让我做嘛……感动的稀里哗啦,然而十动然拒。最近刚签了新岗的offer,预计10月份正式结束程序员的旅程,去新组开启SA新篇章——嗯,我的三观嘛,升职加薪都是浮云,人生啊,还是开心的做自己此刻想做的事,最重要了。

这篇的重点,就讲讲2016年到2020年我在Amazon的大牛组做小小SDE II,从挣扎生存,到成长,到挑大梁的经历。希望给如我一样非大牛的小伙伴们、尤其是因为转专业受尽折磨、怀疑自己怀疑人生的孩纸们,一些启示和希望。

后续文章如果大家有兴趣,我会写写这次转SA的传奇经历。以及入职SA后如果有感悟也会单开贴写吧。希望自己种下的树苗,可以让后来者乘乘凉。

Amazon SDE II 历险记 开局

我在Amazon的开局烂到不能再烂。给你们一些Data Point让你们看看刚进亚麻时挫到人神共愤的我:

• 上个公司的工作强度接近于0 (老牌美国企业嘛,每天11点开始工作,中午吃2小时饭,下午4点半去公司Gym,6点下班回家吃喝玩乐) 对比一下Amazon的工作强度,大家自行脑补天堂地狱的反差

• 在那么一个酱油公司,我也才干了不到两年,底子潮的一逼。至今不明白Amazon当年是看上了我哪儿,四轮面下来,居然手一抖就敢给我发SDE II (而且我TM还真敢接了……无语)

• 我一个非CS出身、接触Java总共不过3年、正式工作经历不足2年、接触Android总计不过1年的小白,直接被扔进了一帮在亚麻平均工作了5年、全都是SDE II和III的智商超人的大牛组里(俺们组当年压根没有SDE I……并且这个组的人真的都超牛逼),每天遭受各种碾压和暴击

• 技术方面,刚进组的我Unit test都写不熟,Agile开发流程只有听闻从来没有实践,OO Design仅限纸上谈兵,稍大点的Component都没怎么写过,多线程和操作系统更是不咋懂各种抓瞎……所以真的,我一点也不怪那些曾经看不起我的人

地狱难度的开局,坦诚写出来,一是已经时过境迁了,二是想给大家鼓鼓劲儿,我那么菜鸡都能咬牙撑到海阔天空,你们也可以的。. From 1point 3acres bbs

P.S. 当然,别用我当年的标准要求你现在的自己……现在IT竞争的惨烈程度不可同日而语,以我这四年在亚麻做面试官面近百人的经验,再没见过比我更挫的拿过SDE II offer的选手。

僵局

于是进来就悲剧了。

第一年一直在疲于奔命的疯狂学各种东西,只是为了跟上节奏,生存下去。

从头开始补Android、学多线程、学Code Design、学写unit test,轮做scrum master,出于任务需要也硬着头皮去和其他组谈需求谈预期……

每天都自己默默干到晚上8点半9点的才从公司离开,skip过不知道多少顿晚饭,回了家也会继续读组内代码到11点12点;周末会至少有一天加班,还曾经在公车上当场掏出电脑实践自己的想法。两年时间,我连做梦都是这个code还有哪些地方可以提高……

是不是在盼着神转折?可惜生活没有日漫的中二啊,我也没有主角光环的命,一夜之间学会什么盖世神功。

就这么干着,我依然很挫。技术上的东西差太多,别人本科4年+之后N年的基础知识+实践经验岂是我一两年不吃不喝就补的上的?于是第一个独立完成的中型feature,我一个cr写了5页之多,完全没有design可言。组里那个最好心的senior帮我整整review了两天,70多条评论,我改了13版,最后submit出去结果出现了多线程的bug根本不work,我又花了一周的时间自己默默debug,然后再两周推倒全部重写,各种绝望到想自尽……第二个feature稍微简单一些,但多次当初想好的design最后发现有根本的问题需要推倒重来,又是磕磕绊绊做了小一个月。当scrum master,也都是各种摸不着头脑疲于应付,根本谈不上在流程层面为这个组做些什么优化… 而且当年的我作为自卑小人脸皮还超薄,很多东西不懂也不敢问,间接导致到第三年我还偶尔会发现一些本来应该刚进组问问就知道的Tools我居然不知道(SDE反面典型就是头两年的我了!)

极为庆幸的是,这真的是个绝世好组啊(唯一的缺陷是节奏有点快工作压力有点大,因为都是牛人嘛……但我们Sev2几乎没有!为我们组打call!):组本身发展迅猛,高visibility,一直极度缺人所以从来不pip;当年的manager能力超强却超耐心,看出来我不qualify但够努力所以愿意等我慢慢成长为SDE II(现在他是我的skip skip manager,正在往Director的level上高歌猛进,超级牛逼);组里的其中一个senior人特别好一直带我(现在这哥们是我的skip manager了,也超级牛逼)。另一个senior虽然对我很刻薄(当着我的面说过Amazon怎么招SDE II有时候这么没底线),但涉及到技术问题时依然有问必答,倾囊而授,不厌其烦的给我讲细节补漏洞… 于是赶鸭子上架的我也一直在尽我最大努力跟着做。轮不到自己挑任务,轮不到组内话语权,这期间我的主题都只是:活着。

至此,给对自己专业能力不自信、或刚入职场的朋友们的一些Tips:

1: 别被网上那些鸡血文骗了。如果你底子不够厚,靠短期内努力期望弯道超车是不可能的。和牛逼的人一起共事,你的努力只能保持不被落得更远,要想慢慢缩短差距,你要有把命押在桌子上拼的觉悟,并且有做持久战的心理准备:技术上的差距不是一朝一夕能够补上的。而且在某些方面可能相当长时间都补不上。比如,即使是到现在,我也没有自信说我是个全方位合格的SDE——system design仍然挫到一逼啊,Cloud那边继续屁点不懂……但要时刻给自己打气:努力不会白费,眼光要放长远。

2: 刚开始进组的打杂期是难免的,但当你了解组里任务大致的组成之后,最好能够有针对性的选focus于一两个方向的task,慢慢积累成domain expert。当有一天别人碰到这类问题都跑来问你,你就知道自己修成正果了。我的打杂期因为个人原因所以相当的长(前2年都是survival mode)但机缘巧合、也是经过时间的打磨,成了对组内Data和UI layer业务逻辑最懂的人,也有一两个自己的domain。所以虽然CS基础涉猎不广,但这个组所涉及的各种detail我了熟于心。所谓术业有专攻,每个组对每个人都会有其定位,就算专业知识上有短板,但长于组内特有的业务需求,也是可以有生存空间的

3: 刚进组一定要厚着脸皮问问题!各种二逼问题问个够!因为再没有什么比刚进组那半年一年更适合问二逼问题了。我当年很多事都是因为一开始脸皮薄不想问(也搭上我当年实力实在差太远,无从问起),于是只能自己在表面上照猫画虎。对深层的技术逻辑没吃透的后果,是等真正要用上来还得狗急跳墙现学。而且最关键的是,有些技术只有在你了解了深层逻辑之后,才能对新问题提出创新的解法。所以发现不懂的一定不要怕,要敢问;碰到问题一定不要懒,要深究!有能力举一反三的前提是Dive Deep。

4:问问题一定要记下来,及早建立好个人的知识管理系统。Amazon的各种Tool和技术栈超级无敌多,像我们这样快节奏的组又会同时进行N个不一样的Project,所以不要过分相信自己的脑袋,勤动笔记下来!用Cloud也好、用Note也好、网页收藏分类也好,记在自己习惯的地方,这样自己就只需要记得去哪里找这些信息,不需要记得太多具体细节了。

死局

笨小孩的故事还在变得更坏……这么拼完了第一年之后,我身子垮了:整夜整夜睡不着觉,每天脑子昏昏沉沉根本记不住事情,没法集中注意力。听人说话偶尔都觉得远在天边,前一分钟自己说过的做过的事情转瞬就忘;而且一闲下来,就头疼欲裂,一闭眼都是工作里搞不定的问题和对自己这个人的各种否定;生活行尸走肉一般,完全回忆不起来任何快乐的事情;很多个早上都要强迫自己下床去工作;开始越来越频繁的请病假……去医院看病,医生下的诊断,重度焦虑。

但是我硬是没遵医嘱、没吃药……(不推荐效仿!!)

这段时间我实在分享不出什么。我能最后走出来,也完全是运气大于实力:因为自己残存的最后一点骄傲和虚荣心?因为机缘巧合的去参加了10天的冥想课?因为老板后来好心的批了我2个半月无薪假准我去中印旅行浪了两个半月?(我老板自始至终不知道我焦虑症的事儿)因为家人朋友们的默默支持?总之,九死一生,是过来了。

唯一以过来人的身份能建议的是,如果你正在经历我那段时间的焦虑抑郁状态,请去看心理医生!看心理医生!!看心理医生!!!然后为自己争取长期病假(地里有攻略吧?)。身体是革命的本钱。什么工作也不值得毁了自己的健康。

生局

但怎么说呢,从在Master硬转CS那时起,我就知道我喜欢编程。被亚麻恶心两年到重度焦虑,我否定掉的也只是自己的能力,而不是自己对IT这个行业的热情。就像我当年面试Amazon时坦言的,编程最吸引我的地方,在于它是种纯逻辑的游戏,不牵扯任何其他。有bug,那一定是自己哪里逻辑有漏洞了。没有模凌两可,没有颠倒黑白。顺着逻辑的严谨找bug,并且凭借逻辑的纯粹来解决实际工程上的问题,真的很美。

于是虽然半死不活,我终于撑到了将死而生的这一刻。

迎来生局是两年后。旅行回来,焦虑症的症状慢慢有所缓解,虽然头疼依旧,但记性和思考能力是在慢慢恢复了。加之组里陆续招进来新人(SDE I / SDE II都有)终于可以让自己积累的经验派上用场:带带新人,为自己找找价值感。新招进来的人里有个从业界经验到技术能力到为人处事都超牛的小姐姐(其实她是SDE III的实力,结果按照SDE II招进来的。前阵子终于名正言顺的升了),于是我在一旁慢慢的偷师,从她身上真的学了很多。这是我SDE生涯真正的转折点,也让我从一个程序员负面典型慢慢转变为正面典型。在此分享一下我看到并在慢慢实践的职场成长的tips:

SDE II的职场发展Tips:

• 埋头完成本职工作之外,要抽空抬起头来看看其他组都在干什么,想想和自己的组有什么交叉的可能性,如果有可能,直接邮件reach out聊一下。记得当时Prime Video那边有个什么demo展,我们一帮人本着蹭吃蹭喝的心态过去,小姐姐就敏锐的洞察到了他们某一个demo和我们组的东西的合作可能性。拽着人聊了半天,顺带推销了我们组在做的东西,回来和我们manager聊牵线搭桥的事情。嗯,我也曾经被Ads组的某人reach out过问问技术栈有没有可能实现他的某些想法。我觉得老美这一块脑子真是很活,行动力也超强。

• 要对和自己组相关的各种时间线有概念。也许作为程序员你觉得把代码漂亮的交付了就好,项目周期啊release schedule啊那是TPM的活儿。但如果想升Senior,眼光看到组外是必备技能。也许AWS那边会不太一样,但Device这边的代码是随着按月甚至按季schedule的App OTA / System OTA 而publish。一个OTA的schedule,可能除了你的模块,还会被其他组的东西影响。那么能够在组会上言简意赅的帮本组人update别组的进度,时刻了解各组之间不断变化的block/dependent关系等等,其实能很好的培养自己的跨组思维,也是在变相减轻manager的工作量获得好感。

• 要对组里下一步要聚焦的事情有概念。这是1:1很好的话题,有时我会直接问,有时是我Manager会说现在有ABCDE这几个事儿你觉得哪个你感兴趣想做做看呢?这时一定要抓住机会!!这是你发挥主观能动性为自己的职业做规划的最佳时刻!!

• 开会一定要发言。这点上国人可能都偏保守……要么担心自己的语言,要么觉得自己不太了解啊先虚心听听多学习一下吧。但实际上,开会多说话一定没错,无论你懂不懂。举两个不同的例子:我们组的小姐姐本身人非常聪明、思路清晰,每每开会提出的问题、作出的总结句句在理,次数多了,她因为正确提问所得到的信息自然多于其他人、而她犀利严谨的思路也给参会的各种senior、manager留下印象,邀请她去开的design meeting就越来越多,scope就越来越大;组里另个大叔呢,开会时的逻辑思路比较异于常人,有时候脑子会不太绕的过来,经常一说就跑题了……但!是!经常表达自己,他也成功给所有人留下了“有这么一个人”的印象,并且大家都知道他脑洞大思路剑走偏锋,虽然未必能有直接的contribution,但也有很多歪打正着的时候。而且是Hackathon idea的一把好手哈哈,大家也都很喜欢他~

• 勤写wiki!大到Design Doc,小到你自己开发、测试时候的笔记,统统花点时间整理到单独的wiki页面里,事半功倍。勤写文档的好处:一是你不会自己做着做着忘了之前的某些重点, 二是你会有一个source of truth for everyone,别人问你问题,与其长篇大论的解释,不如直接甩过去你的wiki,专业潇洒又高效。三是在别人涉及相关领域时,你可以方便的邀请别人帮你一起维护提升你的文档,何乐不为?四是升职时候的artifect好refer啊。勤写wiki这点我简直不能强调更多了。

• 要有能力放松和闲扯。这个也许和Personality有关,如果性格本身不外向、做起来不自然,也没必要强求。只是以我的观察和亲身实践,职场里爱笑(要爽朗!~)绝对是加分项,能不时的开个玩笑蹦个段子更好。大家都是人,如果你能让人心情舒畅,大家自然而然会喜欢。即使语言不如人、讲不出精彩的故事,能够接个下茬做个捧哏也很好——谁不喜欢对自己观点感兴趣的人呢?

• 工作之外,待人接物要温暖一点。这个和Personality关系就弱一些了,内向外向都能做。就是,平时吃饭啊聊天啊,可以关心一下别人工作生活中的事情,如果自己有类似的经验/资源/兴趣/讯息,可以提供帮助~或者哪怕是过两天有机会的话follow一下对方生活中某件事情的进展,别人也会很开心——你记得,就是一种关心。

破局

真正事业上的突破是第三年。旧的组因为发展迅速,需要剥离出来一个新的sub组专注于特定业务(和第三方对接的业务,此处为我将来转SA提供了伏笔)。我懵懵懂懂的答应了进新组,主要因为新组没人想去,而且自己那时到了一个瓶颈:我那时已经充分意识到自己对于编程没热情了(兴趣爱好变了吧。纯逻辑依然很美,但我对一天到晚只缠斗于逻辑有点厌了。而且组里的东西太熟了啊完全没激情嘛。)。但我也不想当Manager,TPM感觉也不对,所以工作上虽然仍然认真,心态上却很随波逐流。没想到换到新组有意外之喜,新组的老板是我们原来的TPM(人也巨牛逼,在我的第二年他进的Amazon,进来不到一年L5升L6的那种牛逼)很积极很努力也很彪悍,恰好我手里刚开始investigate一个对第三方很有影响力的新feature,于是他马力全开的帮我争取到了这个项目在上边的关注度,扫清一切障碍,助我做下这个大项目。(一路都在碰到好领导有没有…都是又好又牛逼的那种)

于是开启了我使尽浑身解术、为期一年的大项目之旅:把一个新feature从一个技术概念变成一个项目proposal;和各个dependent组去协商扯皮拿commitment;做tech lead手把手教各组的engineer做实现;自己撸起袖子写完了我们组那部分好几页的代码实现;也兼职了一段时间TPM去协调三四个dependent组之间不同的release schedule;还得不时的接住PM抛来的各种奇思妙想帮他排好task priority……忙到吐血了大半年,上个月终于feature complete。我们目前在onboarding第一个partner,于是又开始了新一轮的SA/BD教育工作……一路状况不断磕磕绊绊,但首个partner还有一个月就要上线了,到时虽然我即将换岗,也一定要自己好好喝上一杯庆祝。这一年TMD累死老娘了……

但真的自觉非常幸运,有新老板和新组员的鼎力支持,有恰逢其时的高光项目,更有机会一路随着项目阶段的不同经历的自身成长。种种所学,受益终身。

破局之后,分享一些有关升SDE III的大项目时候的Tips:

1. 做牵扯好几个组的大项目,心态一定要放平。正确的心理预期是:别的组一定会找各种理由推脱不合作(我和其中一个dependent组扯皮了三个月,技术文档我都快帮他们写一半了,把我manager,PM和skip manager一块拽进来才搞定),项目一定会出状况(匪夷所思的bug啊,QA测试环境搭不好啊,dependent组delay啊,原先谈好的客户跑路啊),design和代码一定会有坑(有个小哥哥在我代码都要交了时跳出来质疑我的整个design…以及我做一半发现卧槽Google在Android的源代码里有个Bug直接影响到我这个feature所以还得帮着Google修bug我找谁去哭),自己计划好的时间内一定完不成预期的任务(有一个月每天我都是白天帮着各个dependent组和QA救火答疑,晚上才有空写我自己的东西)……所以心态一定要放平,不要崩。兵来将挡水来土掩,做将领的人,要压得住场子,也压得住自己对不确定性的恐惧。

2. 项目要其他组帮着合作的时候,可以先找engineer简单的聊技术可行性(如果你已经明确的知道对方要做什么可以skip不聊),最后一定要找对方组Manager要commitment。切记一定要让对方的Manager知道他们engineer为你做的事情!一定!!哪怕不是写代码而是cr或者investigation或者design review,也要让对方manager知道。因为每个人都很忙,人家engineer在你这个项目花的时间,如果在Manager层面没有印象他就没有任何credit,那任何人都会有怨气是不是?所以Management level你一定要为对方engineer争取visibility,事前可以通过开会、邮件cc,事后要记得感谢信。推己及人的合作嘛,大家以后关系都好处;而且这样你自己也会在Management level留下印象,写升职feedback的时候非常有帮助。

终章的一些感想

临要走了,还真是舍不得。最后一次和三个老板一一辞行时眼圈都红了。四年,从我刚进组时整个组筚路蓝缕、首个产品都没有release,到现在组里的东西跑在每一个FireTv device上边,并且给第三方都开了接口,这是我除了大学之外连续呆过最长、收获成长最多的地方。与一群极聪明极勤奋极牛逼也极友善的人共事,天堂地狱的折腾,脱胎换骨的疼,但也深知,一切值得。

Amazon四年,自觉没有辜负当年貌似给错了的那个offer,没有辜负这个组的好平台,也没有辜负自己所有的眼泪和拼搏。

属于程序员的一段将近尾声了。作为结语,想送给正在路上的朋友们几句话:

如果认定了,就坚持走下去。坚持,就总会有好事发生。

如果明显觉得不对劲,比如即使理性上说得通、但感性上别扭至极什么的,就换个路走走吧。放弃一些别人眼中不可多得的机会,选择一天别人不能理解的路,可能正是你开始认识自我的起点。

如果模凌两可、犹豫不决,那么也可以耐心一点,静观其变。一切都在变化,所以一切皆有转机。

以上。祝每个人都找到属于自己的路。

后记:再次为我即将离开的组打call!绝世好组+绝世好老板+绝世好skip manager和skip skip manager!三个老板知道我要走的心意已决,每个人都真诚的祝我前程似锦,表示如果以后要办升职一定要回来找他们,他们攒着我的feedback,到时即使岗位相关的东西帮不上,leadership这边他们也会全力支持!

貌似我skip manager下有一个L5的SDE Opening和一个L6 SDM的Opening!我这一走我manager底下也应该有了L5的Opening。有想转做Android、Device相关Service(也就是AWS)、或者Partner相关业务的小朋友,欢迎私聊!~返回搜狐,查看更多