我在阿里的成长历程

  转眼我已经在阿里超过6年了,人们总说七年之痒来形容爱人之间情感生变的现象,虽然我深知我自己和阿里之间的缘份远没有可能在7年之内结束,但从一个刚毕业的毛头小子,到年过三十的码农大叔,我仍然想要记录一些东西,给自己未来的路上留下一些回忆,也给其它可能进入或已经在阿里的技术小伙伴们一些信息供参考。

入职前

  我是2010年6月份以应届生的身份进入阿里巴巴b2b的,当时正处在b2b的最顶峰时期,像我一样进入阿里的应届生们不在少数,大都来自全国的重点大学,而且以研究生居多,大家因不同的原因而选择阿里,而除了梦想,我相信对于应届生而言,有吸引力的薪金一定是必不可少的一具因素。而具体到我自己,我选择阿里的原因也免不了俗气:

  1. 一是阿里给的薪资在同行业里是处于前列的,这一点在历年的招聘中都有所体现,至少不低于我当时在手的其它offer。
  2. 二是她在北京之外的属性让我更加倾向于她,由于在北京读书的几年,让我对北京的交通有所认知,我不想每天花费2-3个小时在上班的路上,时间就是生命,在过长的通勤时间里浪费生命是我不能接受的。所以毕业之初我的目标城市就不限在北京,而是包括成都,深圳,苏州,上海,杭州等地。而通过地图发现阿里滨江园区周边3KM范围内就有大量可租住的小区,单间的价格也不贵,正所谓符合我的喜好。
  3. 三是传说中的阿里味,抽象的东西在我感受里是很具体的,当时去清华听了一场淘宝的校招宣讲,具体是哪个HR我忘记了,但我印象深刻的是那HR说话声音很亮,讲的内容用现在的话说是有点“二”,透着一股“傻气”,并不像是我之前接触过一些公司的HR那么正统和严肃高冷。这让本身没啥审美,同样觉得自己配不上太高冷格调的人来说,似乎是找到了知音,琢磨着在这样的公司上班,应该不会和他们不搭的。从一开始,阿里在我眼里,就是一个比较“土”的公司,是不完美的。

  在拿到三方时,我手上已经有了至少2个offer,有薪水比阿里高的,也有解决北京户口的。但因为有了前面这几个理由,使得我在2009年的11月份刚一拿到三方的时候,就寄给了阿里,后面的一场又一场宣讲会与笔试面试,我通通没有再参加了,而是选择了充分享受最后的校园时光,人也足足胖了5-6斤。

  如果现在让我重新做选择,我离开北京的理由也许会多一条——空气。尽管杭州的空气也不算好,但相比北京动不动就爆表的恐怖来说还是要好很多,特别是在2013年之后在逐年好转,最新的2016年大约有300天左右的优良率(PM2.5小于100)。

试用期

  大多数公司都有试用期,阿里也不例外,但阿里的试用期工资不打折,足额发放。试用期的时间当年是6个月,现在技术岗位普遍在3个月。阿里有较为完善的培训体系,对于校招的同学(阿里内部同事之间叫同学)而言,新入职的前两个月,基本是以培训为主。一个所有员工都要参与的课程叫《百年阿里》,内部简称“百阿”,包括团队协作,企业文化,历史沿革等,也会介绍现在的公司组织架构和主要职能。而对应届生而言除了百阿,还有一个培训课程叫《百年技术大学》,内部简称“百技”,这个系列的培训除了一周的技术基础内容讲解,还有为期一个月的实训项目,由新入职的各个新人角色组成团队,使用所学的技术共同完成一些内部系统的开发。

  后来回想,培训除了学习到各种实践的技能之外,还有两个重要的作用:

  • 一是让新人能够认识更多的人,从同班同学到培训的老师、导师等,这些人都是后面工作中遇到任何问题可以尽情骚扰的对象。
  • 二是让新人知道阿里巴巴的做事方式,什么样的问题应该以什么样的方式处理。

  加上实操技能,这几个方面的学习可以让新人快速地从学生状态切换到工作状态。

  两个月的培训之后是回到部门,正式由部门的导师带着做具体的项目。阿里会为每一位新入职的员工指定一名导师,在试用期间的所有问题都可以由导师解决或安排,这份师徒情一般远远超过试用期间,即使在阿里六年过去了,当年一起进阿里的小伙伴和带我做项目的导师,都在我心里是最温暖纯真的一份记忆。所以如果有人问我同事之间是否可以做朋友?我的回答一定是肯定的。而做项目导师及部门同学给我的一些经验是我后面一直受用的:

  • 邮件。邮件是记录或沟通正式工作内容的媒介,因此一定要仔细。从邮件标题到排版,从收件人到字体颜色等都需要仔细检查核对。越是发送范围大的邮件,越是需要用心地写。而其中有一次因为在周报里对一个分歧的描述偏激引发了两个部门之间的误会之后,我更加对邮件带有一定的敬畏之心。
  • 分享。每周的部门小周会,10人左右的小团队全员参与,周会上特别注重分享,不论是部门同事有个新的业务项目启动、还是有个新的技术细节发现,都会在周会上给大家share出来。而日常的邮件分享则是更加普遍。分享是让别人了解你的一个途径,在快节奏的互联网行业,有时候即使是你的主管,也未必能对你的能力有充分的判断,因此在安排工作和协作时,未必能做出最恰当的安排,而分享则是让大家更多了解你的一个有效途径,也能为自己赢得更多的机会。分享对自己也有更高的要求,当你只是自己解决问题时,往往解决完问题即可,但如果要分享一个知识点,往往你要学习比这个知识点更多的内容,才能够解决别人看到你分享时可能提出的疑问。
  • 工作内容。我是中科院网络中心的计算机应用硕士,在实验室干的也常常是写代码的活,入职阿里的岗位却是测试开发工程师。虽然岗位上带着开发两个字,但其实就是测试工程师,因为阿里并不存在单纯的测试工程师分工。经过简单的工具和技术适应后,主要就是对业务和流程的实践了,而随着几期项目做下来,慢慢就变成了重复劳动,因为所参与的项目业务的发展并不会时时带来足够的新鲜感。所以开始感到迷茫,我当时是这样做调整的,虽然我们的岗位对开发技能没有做特别明确的要求,并没有说谁开发技术好就会如何如何,而是主要考察的是做项目时候被测试的项目上线后的质量情况;但是我通过了解所有我们部门在使用的测试技术之后发现了机会,测试技术有UI自动化、接口测试、性能测试、功能测试、单元测试等等。而我们的UI自动化每次运行时间都特别长,在各个脚本的初始化上做了许多重复的工作。通过对这部分工作的去除,显著的降低了脚本的启动时间。也就是这样,在本职工作做好之余,我似乎找到了另一片我能够发挥的小天地,津津有味地做了起来。

  因为顺利地度过了这个迷茫的时期,我和阿里都接纳了对方,我没有离开,而是提前进行了转正。 回想起来新人在入职的第一年是比较不稳定的,一年左右我发现身边的人逐渐地有人开始转岗,也有人开始离职,第一个半年过完约有10%左右的人选择了离职。而当年一起实训的4位小伙伴们,基本上在一年之内都离开了,我是仅剩的一位。在互联网行业跳槽动不动就有30%~50%薪酬涨幅的行业背景下,像傻逼一样坚持的人确实不多,我算是其中一位。而我坚持的原因很简单,我发现我的工作岗位总有一些新的挑战和刺激,而每当我觉得我某项东西做得很棒时,总会有下一个需要我全力以赴的点在等着我。

第一次晋升

  经过了提前转正。已经说明我可以像正式员工一样自己做项目了。这样过了几个月之后。有一天总监把我叫到办公室里,告诉我我晋升了,涨工资了。当时的晋升就是这样,没有什么提名、讨论、述职那么复杂的流程。其中上是被晋升的节奏。因为上届的导师都是经过一年半才晋升的,所以这次自己入职一年就晋升,确实来得有点意外。出来之后除了开发,随之而来的是压力。和自己的导师层级一样,我凭什么?我急切地想要知道这个答案。而对这个问题的思考,也让我慢慢地开始审视和分析自己的特点。 这是我人生的第一次晋升,是我最轻松的一次晋升(说不轻松也不可能,完全没定目标,几乎是天上掉下来一样),你当时要问我认为最大的不同在哪里,每个月多发工资这个答案一定是其中一项。但现在再回答这个问题,这次晋升对我最大的意义一定不是加了一些工资,而是促使我去思考我的竞争力在哪里,我的特点是什么,我未来的目标和定位应该是什么。一圈思考下来我觉得我有这么些特点,在测试团队是比较稀缺的:

  • 技术能力较强。测试团队对开发技术的要求相对开发团队要弱一些,但作为研究生阶段做过不少开发项目的我而言,在进入工作岗位后的特点还是通过各种途径被主管及团队同学所注意到,这里我也要再提一下解决问题并分享的好习惯。
  • 人比较踏实。和我同一年进同个部门有一位同学,试用期的表现甚至比我优秀,他的转正串讲是我们常说的3.75,但他不到一年即离职去了一家国企做测试leader。而我一直没动静。不知是主管认为给我晋升激励有利于我稳定,还是因为我的稳定而给我激励,但这也让我意识到踏实积累并不会耽误你获取回报。而这个积累即使在节奏很快的互联网行业,任何一个靠谱公司的靠谱岗位都至少有2-3年的时间足够你学习和消化吸收。
  • 本职工作优异。因为时间关系我做的项目不如老员工那么多,但我做的项目结果也都不错,至少从考核测试最基本功的故障方面,我并没有落下。这还让我明白了一个道理,阿里对老员工的要求,只会比新员工更高,在阿里并不太有论资排辈的规则。而且在晋升和绩效等方面,老员工并不会因为年资有太多优势,相反在同一个层级年资越长反而是劣势。

性能领域

  正是基于晋升之后的不断思考,我如何能在p6的层级上贡献相比其它同学更有价值的内容,让我选定了一个让我至少能潜心干两年的方向——性能测试。因为Web应用的性能评测与调优,我认为是在所有测试工种里更需要深入原理的一块工作,同时也在咨询了几位前辈的建议后做出了这个选择。在性能领域的两年里,我几乎从一个门外汉,慢慢地摸清了一个Web应用的性能评测与调优的主要工作,总结了一套测试方案的设计方法和丰富的案例、培养了一批具备性能测试设计与执行的同学、开发了一个性能压测与监控分析的平台。中间因为公司的变化我工作的部门也几经变化,但不管在哪个部门,我一直是整个B2B测试队伍中性能测试方面比较专精的同学之一。这两年自己在技术上的积累也是比较显著的:

  • 测试工具与流程。因为不少方法是自己摸索总结的,所以从舍弃LR到全部转向Jmeter的过程中,对涉及到的压测场景中Jmeter的各种特性比较熟悉,从每个请求的参数设定到所有脚本分支管理、从录制脚本到手动添加脚本、从Java自定义请求到自己写脚本压TCP服务,尝试过不少,收获自然也不少。当时还折腾了一个可以配置所有dubbo接口的通用脚本,让大家把脚本拷贝过去,替换一个接口名称和参数即可进行压测。后面也基于Jmeter开发了我们的性能压测平台。现在B2B近200人的测试团队,一直在使用这个平台做线下的性能压测,也被Aliexpress等技术团队将压测的最核心模块应用到了线上压测平台中。
  • JVM基础知识。做过几年Java开发,对Java语言并不陌生,但一些日常开发涉及不多的JVM的线程与内存管理,一直是性能分析绕不过的问题。因此在分析实际案例的时候,我也把所有主要的配置参数、JVM内存分代和垃圾回收策略、线程dump与分析、jdk tools等工具都系统地摸索了一遍。
  • 数据库基础知识。Web应用的瓶颈,很多时候都在数据库上,而数据库的读写瓶颈除了连接参数的设定,经常性是在SQL的执行效率上;因此我花了相当时间去搞清楚Oracle和Mysql数据库的执行计划怎么分析,甚至自己还基于Btrace写了一个小的sqltrace程序,可以attach到任何一个Web应用的Java进程中,打印出ibatis执行的所有sql和参数,对分析SQL大有用处。
  • 前端性能知识。除了关注服务端响应性能和数据库,真正在浏览器中渲染的时间有时候是一个页面性能的大头,所以当时对前端性能也摸了一遍,从雅虎的优化军规,到yslow,dynatrace等收集工具,再到自动化脚本结合的方式定期收集所有应用的前端性能并形成监控。这套方案因成为过高没有持续地推广,但这个过程中自身的收获是丰富的。

  除了现在能够主要回想的一些知识,还有许多能Linux系统的知识、对公司各种中间件的知识以及自己运作这个性能测试虚拟领域时候与同学沟通时学会的协作方式。因为我作为这个虚拟领域的负责人,实际一个兵也没有,就一光棍,而且不论技术层级还是组织层级与领域成员也是一样,因此要推进一项工作时,往往需要考虑多个方面才可能能拿到落地结果,其中也有不少失败的经验。比如前端性能测试这件事情就不成功,所以运作这个领域让我学会用互惠的方式去与大家协作。比如开发性能压测平台这件事情,虽然我一个人也能够完成整个工作,但毕竟工作量庞大,一个人可能要半年左右的投入,而且本着培养人的目标也需要更多人参与。因此从立项开始,我就从系统要解决的问题和价值、成员成长、领域人员层级结构等方面充分考虑,和领域成员对应的主管做充分的沟通让大家支持并乐于参与其中。这些经验在后面我带一个实体团队时,也仍然受用。甚至可以说正是有这两年的经历,使得我后面接手实体团队后整个过程没有出现太多波动。从团队成员自身的成长和需求出发去安排工作,效果往往比从组织需要去安排效果更好,这也是我安排工作的首选方式。希望大家所人事的工作内容,是自己愿意从事的,而不是被安排的。

  两年的性能领域工作,获得的成长是丰富的,因此在两年之后参加晋升述职时顺利通过,也是一个水到渠成的结果。

无线技术

  无线是一个非常火的方向,也是我一直以来都想要从事的岗位。一方面因为在测试领域干了三年多,对于这个领域中涉及的平台,除了性能外还有UI自动化、环境平台、Mock平台、持续集成平台等我也都有关注,甚至参与过不少平台的开发与建设,因此对其中的技术多少有些掌握,对于这其中能深挖的内容,相比我对无线技术的兴奋而言吸引力要小很多,所以我选择换一个方向。这是我非常喜欢阿里的另一个原因——可以转岗。因此在进入阿里的3年半以后的2014年初,我转到了无线开发团队,负责一个iOS开发的小团队。   这个团队在我加入时有三位同学,而其中2位都是和我差不多时间加入这个团队的。因此负责这样一个小团队,加上我之前虚拟领域运作的经验对我而言挑战并不大。在两年半之后,我们团队扩张到了11人,而且招聘了不少iOS开发人员输送往其它兄弟团队;而原有的性能压测平台,仍然是我当初设计它的样子平稳地运转着,这也让我坚信自己当初做了一个正确的选择,在一个正确的位置上发挥了自己的价值。回想这两年多,有不少经验值得总结:

  • 谦卑学习。我佩服马老师一方面是他NB地把吹的NB都实现了,还有另一个方面是他从来不标榜自己是一个NB的人,他经常说自己有很多缺点,犯很多错误。这一点我认为是非常必要的。作为一个团队的Leader,并不一定各方面技能都能超越自己的团队成员,尤其是在无线这个快速发展的领域。最初加入团队时,我并没有iOS App的开发经验,虽然团队几位同学在iOS开发上确实不是业界大牛,但他们都比我有经验,所以刚来团队的几个月,常常能看到我在项目过程中认领一个界面,然后开发过程中向他们不断地请教。这个过程我并不难受,而是感觉到自己的技能在快速的成长,我知道只有我了解了所有细节的工作,我才有可能帮到这个团队。而经过两年多的持续积累,在无线开发领域几个端的知识当中,除了iOS的日常开发和技术建设方向把握之外,我还拓展了自己Android开发知识的学习,因为我不想做一个纯管理者,我不允许自己是一个不会实操实践,不明技术难度或是选型,瞎指挥的人。否则我将在团队内被淘汰,在团队外也会被这个行业淘汰。
  • 绩效管理。了解阿里的人都会知道阿里有严格的绩效管理制度,内部叫361,也就是30%优秀的员工会获得更高的回报,60%符合期望表现的员工会获得常规的回报,而10%的员工会面临绩效改进。1是公司内部是一个非常敏感的话题,因为1意味着没有年终奖,没有加薪;这在年终奖已经成为标配的IT行业来说等于是重大的伤害,所以被打1的员工能留下来的并不多。而年年因为对自己被打1而和主管认识不一致到阿里内网发帖子声讨的事件也几乎每年的绩效季都会发生。由于之前运作的是一个虚拟组织,对团队成员是以启发鼓励为主,很少以批评去对等他们,因此在第一次绩效评比时,面临着我团队的几位同学和其它团队的同学做横向评比,并且所有人中一定要有一位同学绩效为1(因为几个团队的人员总数已经超过10人了)。从大的层面我当然能明白公司绩效管理的目标,甚至我觉得阿里能成功就是一个在不断逼自己变得更优秀的过程,但到了一线主管的操作层面,还是难倒我了。虽然横向对比下来我团队的同学当季表现比其它团队同学要更突出一些,绩效排名不是1,但这件事仍然让我非常严肃地认识到绩效管理必须做在平时,避免平常给同学们都是各种优点和认可,打绩效的时候却给同学一个巨大的打击。有了第一次的经验,再有后面两年多以来的经历,绩效管理这个话题在我的团队已经是一个可以公开讨论的了。现在除了制定绩效目标时所有团队同学会互相晒,互相知识彼此下一季度的要求外,在日常沟通和绩效Review时也会和团队成员充分做沟通,从不同侧面了解团队成员的现状。尽可能让绩效成为一个更为客观的事项,主管做的只是记录和评定,工作结果一定是每位成员做出来的。主管需要保证的是,自己绝不可以偏心,把A的功劳记在B上,或是把A的过失记在B上,也不能把A做的一件事情评定为几件事情。而绩效的结果,在当季或当年也许对当事人会是一个大的打击,但如果放长到职业生涯来看,越早意识到工作中的不足而进行改进,将越早获得更强的竞争力,为今后的发展打下好的基础。不乏阿里被打1的同学到外面公司仍然有很大的竞争力的例子。
  • 人才引进。加入回队半年多以后,虽然团队能够很好地承接项目开发,但大家的有些想法还是容易受限,毕竟团队规模较小,接受的信息也比较有限,我们需要以合适的方式来提升团队的整体技术水平。意识到这个问题之后,我开始有意识地留意各论坛技术掌握比较好的人,给他们私信留言,也和招聘HR、猎头做互动,下载各种招聘App。总之能够引进人的方式,我都尝试了。而长时间的积累也是有收获的,后来进入团队的同学,也确实给团队带来了新的想法和实践,有不少我们所缺少的技术牛人加入了这个团队,而这些经验沉淀是无论如何不可以凭借我一己之力在1年之内达到的。
  • 业务发展。技术是为业务服务的,这是我始终铭记的一条。与人员和团队增长同步的是我们的无线业务也取得了高速的增长,在这个过程中对业务的思考和碰撞是很多的,因为保密原因这里就不一一细说了。业务两年多的成长让我意识到一个道理:虽然移动化是一个潮流,但为什么是你而不是其它人?凭什么?就因为你有pc的优势么?但如果你不断犯错,未来还是你的么?所以先发优化重要,但业务的持续成长一定是大家做出来的,什么都不做躺赢的情况,在互联网行业基本是不存在的。

总结

  在我加入即将六周年的时间里,我得知自己晋升的消息,这是公司对我能力的一个评价和认可。但层级和晋升在任何时候都不应该成为我们追求的目标,而是对自己的能力和潜力的挖掘,对自己不足的提升。举个浅显的例子,一个人25岁加入阿里p5,假设他的瓶颈是p10(请相信我这个瓶颈99%的技术人员是适用的),在45岁的时候达到,那么它在20年的时间里晋升5级,每个层级有4年的时间。当然是越往后越难,但只要自己能力积累足够,工作业绩突出,高层级一年一级甚至跨级也是有的。所以这个过程中最应该关注的,绝对不是其中某一个层级花多少时间,而是这个层级代表的能力和要求的结果你是否能够具备和达到。否则即使幸运地晋升了,到下一层级也一定原形毕露。而反过来如果你能力已经足够胜任下一层级的要求,但长期没通过公司的晋升,那么你换个岗位或换个公司,受益的也一定是自己。   阿里就是这么一家公司:你够NB,在这里没有限制,不拘一格;你如果有偷懒放松的思想,那么也容易被淘汰。我不知道我还会跟公司的脚本合拍多久,但我知道当前阶段,这里还有许多的舞台足够我发挥。

  以上简要地回顾了自己在阿里几年的经历,自己留个记录,也希望给想加入阿里的人一些参考。大家有关于任何阿里的内容想交流,也请随时联系我。