cover_image

谈谈我为什么选择离开亚马逊

编码彼岸 编码彼岸
2020年04月13日 04:04

在离开亚马逊一年半后,在一切的不满、抱怨、甚至是愤怒的情绪都平静很久之后,我来跟大家分享一下,我为什么选择离开亚马逊。


在开始分享之前,先声明一下,以下仅为我个人经历,不一定具有普遍性。


背景介绍

2017年的第一个工作日 (2017/01/02),我正式加入了亚马逊Fresh部门,负责Amazon Fresh商家的iOS手机应用开发(以后简称Fresh App),工作地点,加州尔湾 (Irvine, CA)。


Fresh App有别于我们日常使用的Amazon App,是为Fresh商家定制的独立应用,iOS端使用Swift开发。由于经费问题,Android部分在做完原型后就被搁置了。在我加入之前,Fresh App由两位同事负责,一位全职的iOS开发人员,一位因为项目被搁置被迫兼职的Android开发人员。在我加入不久之后,又来一位从苹果跳槽过来的 (9个月后离职回苹果),所以,Fresh App总共由4个人进行开发及维护。


停滞受阻的个人成长


没事可做

听起来是不是有点神奇,就4个人开发维护一个Amazon Fresh商家应用,这规模跟其他的Startup公司比起来没什么差别啊,是不是亚马逊的工程师都是各个神通广大呢?答案是,并不是,只是Fresh App根本就没多少人用,平均日活用户可能都不超过1k,每次使用不超过1小时,在亚马逊的体系里根本就是一个小众到不能在小众的应用了。究其根本,就是Amazon Fresh的用户量非常少,业务不能给商家带来明显的业务增长,因此,Fresh App的功能需求非常少,根本用不到那么多的开发资源。


Fresh App开发是非常基础的手机客户端模式,业务流程界面+API Request,几乎没有缓存及本地存储。因为业务发展不顺,用户数据缺乏,功能需求的更新推进也是非常缓慢,优先级也非常之低。我估计,PM们都不知道要如何去分析数据来提升用户使用,基本上就是没啥好改的。就算零零星星有些想法需求,也是不停地讨论讨论,然后工期预计永远都是天文数字。


我还记得,我有个功能需要和其他人合作,当我给出我的预计工时的时候,对方居然非常惊讶,说一句我到现在都记忆犹新的话,如果Fresh App的其他人都想你这样高效,你们就不会只有怎么一点点的功能可以做了。哎,原来Fresh App组对外就是这么一个形象啊 — “低效”。


曾经一度,为了尝试提升用户的使用率,PM们试图复活Android项目,做了一段时间。可是,讨论讨论再讨论的毛病还是在延续,最后,直到整个Fresh App被砍掉了,Android都没有正式上线过。


赋闲外借

没事可做这件事情,很快就被整个Fresh部门都知道了。在上层的几番讨论后,我被外借出去,做Amazon App里面Fresh相关的功能。大概外借了三个月的时间,我一个人把iOS,Android及相关后台代码包圆交付了。由于,第一次的外借工作做得不错,很快又被借出去了三个月做另外一个类似的功能。入职不到1年的时间里,我有大半年的时间都在别的组做事情,毫无团队归属感可言。


外借工作有挑战吗?有。有意思吗?没有。对职业成长有帮助吗?完全没有。做的基本还是手机开发的老三样,界面+API Request,还有API的后台实现。工作的难度完全在于搭建环境及读懂代码。


Amazon App这个历史悠久的项目,其代码水平就是在不敢恭维了,还有各式各样的奇葩做法及流程。就说个不可思议的事情,Amazon Android每次开发修改后编译运行需要5-10分钟。手机开发那么多年,我从来没有见过增量编译修改需要怎么多时间的,如果第一次搭建环境,估计要等上30分钟到1个小时。可以想象一下,这是个多么折磨人的过程,如此低效的事情,居然在Amazon App里存在了好久好久(核心组的改进项目中编译速度一项一直被搁置延期,不知道现在解决了没有),典型的手机开发劝退神器。


全组外包打工

由于Fresh业务实在是不赚钱且不见好转,公司层面上开始了业务调整及部门重组。Fresh和Prime Now两个亏钱的烂兄烂弟被整合在一起,外加Amazon Restaruant(估计有好多人都不知道这个业务的存在)组成了新的部门 — F3。我所在组的业务功能直接被砍,Fresh App入土为安,在新业务范围明确划分之前,全组集体外包打工(没被裁员都要偷笑了)做着爹不疼娘不爱的打杂工作。而我作为一个主攻手机开发的人员,完全找不到合适我的项目,跟着其他同事看着其他组Manager的脸色,做着非常入门的服务器端开发。


回顾的来看,在亚马逊的两年时间,在技术上我是完全停滞的,甚至可以认为是倒退的,因为开发这个行当如逆水行舟,不进则退。而且,工作完全没有归属感及完整性,东一榔头西一棒的。


绝望的Away Team工作模式


什么是Away Team工作模式

首先简单解释一下,Away Team工作,就是业务实现团队在其他团队的代码上进行业务功能开发。


在大项目里面,每个团队都会自己的一亩三分地,有自己维护管理的业务功能及代码。但是有时候,由于业务规划与团队所属领地的不完全对称,不可避免就会出现为了实现某个业务功能,开发团队需要在别人的地盘上进行开发工作。在亚马逊大部分的团队都是满负荷运转,如果等待其他团队帮忙完成功能,即使只是非常小的修改,都不知道要等到猴年马月。因此,绝大多数情况下,都是业务实现团队到其他团队的领地上进行开发。


为什么感到绝望

可以理解,作为代码的所有者,当有其他团队想要在我们日常维护的代码上进行开发,我们都会格外地小心谨慎。毕竟,在给他人提供便捷的同时,也要保证原有业务的正常运作及保护自己团队避免没有必要的维护负担。所以,通常,领主团队(Owner Team)都会有一套自己的流程来审视Away Team的业务流程,开发设计及代码提交,以保证将要开发的业务不会与已有业务发生冲突,代码设计符合已有设计,以及其他因为代码熟悉度引起的其他问题。这样流程往往都非常的冗长,甚至发生扯皮推诿或者不配合情况,如果碰上团队之间还有时差问题,例如团队分属在美国的东西岸,问题就更加复杂。我还记得,我有一个简单的UI修改需求,做了不下5次的Design Review,还有好几轮的原型开发。最后花了快2个月的时间才完成了共识,开发才能进行到下一步。


这样的流程,如果只是偶尔一两次,忍忍也就算了。可是,我所在团队因为部门重组,业务被裁,在新业务范围选择上毫无话语权,最终落到了“拥有业务但是不拥有代码”的地步。也就是说,可以偶尔忍忍的流程变成了例行公事。其实,在亚马逊里面,长期在Away Team模式下工作的团队也不算少数,可是大部分的团队只需要对付一个Owner Team。久而久之,双方也就熟悉习惯了。可是,我所在组的业务,可以预见,跟多个Owner Team打交道将会成为家常便饭了。在知道这个业务划分之后,我已经非常的绝望了。


令人厌恶的办公室政治


不论说是因为业务问题,导致我的专业技能得不到发展机会,还是因为Away Team模式,工作效率低下会议连连,导致精神上的疲劳,都不是让我下定决心需要离开的原因。毕竟,我一直认为*技术是为了解决问题*而存在,既然面对的问题从手机转移到其他领域,那么,我就借此多学点其他技术,也挺好的;不停地开会虽然烦人,我可以当作强迫我提高英文及沟通表达能力了。


真正让我下了决心的是令人厌恶的办公室政治。


一切以升职考核为核心

亚马逊里面推行员工需要为自己的升职考核负责。员工需要根据升职需要,挑选工作项目,甚至连员工的升职文档也是由自己撰写。经理们根据名额人数,政治方向,拖拖时间,卡卡进度,最后签个字就差不多。


我只能说,初衷是好,自己的事情自己把握。可是现实中,形成了一个“一切以升职考核为核心”的风气,所有不能为升职考核加分的事情,很多人都想着法子不做;可以从简从轻的设计,非要搞大搞复杂,甚至无中生有,因为只是解决问题对升职没有帮助;为了上述两个主要原因,不停地开会扯皮。


人都是自私的,可以理解。毕竟升职意味着薪资、地位及身份认可。可是如果负责管人的经理们不但不试图缓解各种无意义的争吵,还在流程上推波助澜,沟通交流中鼓励这种“与天斗与地斗与人斗其乐无穷”的行为,对此,我就真的无法理解了。


真的不难理解,为什么亚马逊很多团队内部不甚和谐,每天工作在一起的同事们都看彼此不顺眼,各个都是跟自己抢食的豺狼虎豹。


政治正确胜过解决问题

我个人感觉,在亚马逊里面,做手机开发工作的地位估计仅比开发PHP的高一点点。整个公司手机开发的导向也是去手机原生开发,能用网页做绝不用native开发,能用其他技术做,也坚决不用手机原生开发,根本就不管使用原生开发是不是解决问题的最优解。打开你的Amazon App,猜看看有多少地方还是原生开发。


在我身上就发生过这样的一个事情。我当时在开发某个Amazon App上功能,跟所有相关的小组讨论之后,都觉得使用Native开发是最优解决方案。可是,我当时的Manager,非要我使用“政治正确”的内部技术框架。理论上,Manager是不应该来规定开发的技术选定的,可是偏偏我的Manager就为了所谓的政治正确跟我开了不下10次的谈心会。讽刺的是,在“政治正确”的技术框架团队的TechLead都不建议我使用他们的框架的前提下,硬生生逼着我做了三种技术方案及原型来证明“政治正确”的技术方案是最优解。


结果,自然是打脸。“政治正确”解决不了问题。现在看来,都不知道是打谁的脸。作为一个手机开发多年的人,还要拿出三个方案来说明一个错的方案,都不知道要别人怎么来相信我的专业性。


如此的办公室政治,让我觉得整个公司文化 — 有毒


通勤负担

在各种不愉悦的经验不停累积之下,每天2个小时,80+英里(120+公里)的上下班时间,成了最后一根稻草。


当工作让人开心的时候,你会觉得我每天开2个小时去上班是一件令人开心的体验。当踏进办公室上班让人觉得不舒服的时候,每天还要开2个小时的车,你就会觉得自己就像个傻子一样,明知道不开心,还要开大老远去“享受”不自在,图什么呢?




马云说过:员工的离职原因很多,只有两点最真实:1. 钱,没给到位;2. 心,委屈了。这些归根到底就一条:干得不爽。


回顾在亚马逊2年的工作经历,总体上,是非常不爽的,是我在美国待过的公司中体验最差的。可能是我对亚马逊的期望过高,觉得知名大厂应该要有其过人之处,结果发现并没有什么差别,甚至比我待过初创公司差了不少,更不用说跟我现在的公司Salesforce做对比了。我所在的团队及部门让我从管理文化中感觉到“码农”这个词不再仅仅是程序员的“自嘲”。


当然,在亚马逊的2年里,我还是认识了不少有意思的人,尤其我最后转到那个组,让我感到了一些的不同。可是,最后我还是选择走了。毕竟,工作的目的是为了让生活变得更好更开心,而不是因为工作上的种种不悦把生活给毁了。Work and Life 要 Balance.



好了,今天就吐槽到这里。我们下次再聊。



图片










继续滑动看下一个
编码彼岸
向上滑动看下一个