前言
数数年头从12年初以实习生的身份加入到百度,到现在也已经7年了。期间从T3到T7花了5年时间,而且没有一次晋升答辩失败,应该也算发展比较快的了。谨以此文回顾总结一下我的职业发展,希望能对大家有一些帮助吧。
菜鸟篇-选择和入职
先介绍一下学校背景吧,我是06级的哈工大软件工程专业,10级的人大软件工程专业。是不是跳动有点大?很难想象为什么一个人会放弃哈工大的保研资格而去考研到人大的相同专业,毕竟单从专业排名来说两者差太多了。但是其实这个是我人生最正确的决定之一,理由很简单,我读研的目的是找一个未来的老婆,然后找到了,而且现在生活幸福美满。人生就是这样,你要清楚的知道你想要的,而不是别人眼里更好的。
接下来再聊聊工作的选择,每个经历过毕业季的同学都有过这样的纠结,以后要到一个什么样的地方工作。作为一个北京土著,可能更多我之前的同学都会选择一个相对轻松一点的工作,毕竟压力没那么大,而且借助父母的关系进个所谓“铁饭碗”的企事业单位都不会很难。悠哉的生活和更好的发展的选择面前,我应该庆幸自己选择了后者。虽然累一点,但是我凭着自己的努力一步一步,过上了目前还算小康的生活。
再说说我是怎么成为一个QA的。其实应聘的时候,我并没有选择测试开发的岗位,毕竟我开发能力还算不错,而且研究生阶段实习也一直是JAVA开发,不过因为当时的水平问题吧,其实面试开发岗位没有通过,被调到测试开发的。拿到这个offer其实还是纠结了一段时间的,但是最终选择相信百度这个平台,加入了百度质量部,然后秉着干一行爱一行的理念,一直走到了现在。
说起当时转到测试岗以后的面试还有个小插曲,我觉得除了技术能力和学习基础之外,一个最加分的经历应该是我研究生时期的一个兼职。当时室友接了一个兼职,是从一个图书电商的网站,一条一条将图书的信息粘到另一个图书电商的网站,每录入一本书可以赚1毛钱(想想学校学生是多么廉价的劳动力啊)聪明的你可能想到了,我当时看到他每天花1个多小时粘大概不到一百条的图书信息,觉得实在累得慌,就写了个小爬虫,把网站里的图书全都爬了下来,然后整理成了csv通过网站的导入功能批量传了上去,最后一下搞定了所有图书录入,挣了2000多块钱,我和室友一人一半平分了。我相信对于所有计算机专业的研究生,写这种东西应该都不是什么难题,但是可能是这种利用自己的开发能力解决问题的思路和想法,打动了面试官吧,最终通过面试。
菜鸟篇-入门和学习
在百度,有一个我认为最好的制度,就是百度的导师文化。每一个新入职的同学会配备一个导师,由导师负责帮助指导他。我到现在都特别感谢我当时的导师,他不仅教会了我如何工作,还教导了我如何在职场发展,从一个学生变为一个职场人,就连待人处事的道理都会一一提点。这使得我之后成长成为导师之后,也特别乐于教导别人,也带出几个不错的徒弟~包括在这里的分享,也是我想让更多的人可以看了之后收获点什么。
如果说给初入职场的同学一个最重要的建议,那我一定会回答“主动成长”。包括一直到现在,我见过的所有优秀案例,主动成长都是最重要的。职场不比学校,这里没有人逼你学东西,自己要为自己的成长负责。这点也是我当时的导师教导我,并且后来一直被我放在嘴边的。我真是的见过很多有些专业技术底子很不错的同学,入职后迅速的被非计算机专业的同学超越,并不是他们不努力,而是他们不知道怎么努力。我当时的做法记得是这样的,主动学习和总结一切和我工作沾边的东西。比如可能导师让你去测一个功能,我会去了解这个功能是怎么实现的,为什么这么实现,为什么要做这个功能,对产品有什么用,测的时候用到什么工具,工具的原理和实现是什么样的,为什么用这个工具……应该感谢百度的文化足够open,导师和边上的同事都很耐心指点我,但是要注意的是,如果你不问,不会有人主动给你讲这些的。同时,学到的东西都落成了文档和总结,我入职半年转正的时候产出了差不多20篇wiki,总结的习惯保证了所有别人讲过一次的东西都能沉淀,否则再好脾气的人也受不住你总是问同样的问题。
如果说主动成长是快速发展的手段,那么“独立”就是成长的标签。独立意味着你已经建立了一套方法,能够把你学到的东西应用到你要解决的事情上面,并且完成它。就像一个厨师,他心中有着完成一道菜的每一个步骤,并且遇到常见问题的应对方案,这样才能自己做一道菜。这里需要一个思维上的转变,你需要承担工作中更多的责任,而不只是你的导师一步一步带你去做。这时你才会发现,之前你主动了解的一个任务的其他方面,是你独立的资本。当然,尝试独立时你可能会遇到一些挫折,比如当时我开始独立负责一个模块的测试,结果连着搞了4次上线回滚(项目上线时出现问题,紧急回滚代码)。那段时间各种痛苦,沮丧,不自信……不过就算这样还是要勇敢往前走,关键是及时总结经验教训,犯过的问题不要再犯,最终很好的独当一面。
接下来,目标导向是成长中最需要注意的。你需要知道你下一步要成长成什么样子,并且朝着那个方向去努力。一开始,如果你遵从了“主动学习”的建议,常常会发现时间不够多。本来工作任务就很重,拿什么时间来学习提高?这时候有一个明确的目标,可以让你知道做哪些事情更重要。根据目标改变你做事的优先级,甚至做事方法,才能不走歪路的每件事都做在点子上。当时我的导师给我灌输了一个加减法的工作方法,对达成目标有帮助的事情,要做加法,不光做好事情本身还要扩展学习,做到最好。而背离目标的事情,要做减法,少做或者想办法提高你做这些事的效率(比如用自动化),这样你的时间才有价值。
崭露头角篇-机会
渐渐的,通过学习,从菜鸟差不多变成一个老鸟了,知识得到了一定积累,也能熟练地应对日常的工作了。这个时候,也许你需要的就是一个展现自己的机会。不过机会本身就是很随缘的事,本身不能强求,不过以下的事情可能能够提高一些概率。
第一点应该是不要去拒绝你的工作安排。如果一件事情已经安排给你了,不管它是不是一个好机会,你要做的就是全力以赴做好它。我见过有些人很“挑活”,感觉哪些工作对自己发展没什么用,就拒绝去做。这些小聪明可能在初期会有一点作用,但是从长远来看,并不是一个很好的选择。当然,我的经验可能大多来自百度这个气氛相对比较好的公司,不过我觉得,你做事的机会其实都来自于你的经理,事情已经安排给你的话,说明你的经理觉得这件事你去做比较合适。而拒绝会打破你经理的安排,只会留下坏印象。更有甚者你不情不愿的接了活却不好好做,只会给你经理留下你工作能力不行的印象。这样一旦好的机会来了,你只会被排除在外。而全力以赴的做好事情,就算短期以为这件事情冲突你可能失去了一些机会,但是长期来看,你做的事情都被看在眼里,你会得到补偿的。尤其像百度这样的互联网行业,有的是机会,千万不要挣那一点半点,吃亏是福,因为你换来了人心。工作中有99%都只是在工作,只有1%的事情能让你发展。但是不做好这99%,你永远等不来这1%。
第二点,什么工作是最有价值?答案不是最难的工作,而是解决痛点的工作。哪些事情是平时被抱怨最多,最让人难受,业务最关心的,效率最低的,那解决它就会是你最亮点的工作。而且通常,这类工作并不为别人察觉,没有人跟你抢,你只需要有双发现的眼睛,停下来思考一下,就能找到它们。我当时的几次就是因为发现并主动提出来一些问题,并且找到了思路解决了他们,才被当作了重点培养对象。比如当时很耗时的一件事是跟进内部报bug的邮件组,经常要回复百度内部别的产品线给我们提过来的线上问题,会占用大量的精力却只是充当客服转发问题,大家都不愿意做要强制值班。这时我就发现其中大部分问题都有一套固定的流程,可以无脑完成,比如记录到bug平台,提取一些信息,联系转发到下游业务排查。所以当时就搞了个小工具,收到邮件匹配关键字将这些流程一键搞定,大大减少了处理的精力和时间,并且推广到了组内。本身并不是很难的事情,却给经理留下了很深的印象。所以,机会是可以自己找的,积累你很靠谱,你很优秀的印象,才会在大的机会来的时候,你首先被想到。
最后,机会是留给有准备的人的。召之即来,来之能战,战则能胜!你的专业能力和解决问题的思路都是你平时工作学习的结果。我目前一直最擅长的是系统架构,性能和稳定性相关事情,最初就伴随着一次机会。当时我还是一个小兵,我所在的那块子系统线上稳定性有问题,一到晚上流量高峰就会挂掉,出了很多次问题,研发都束手无措。当时经理找了位大佬,是稳定性相关的专家(大师级的,当时拿着系统源代码看了两周,提了14个稳定性的问题,改完以后系统后来就没出过问题),当时让我去对接介绍一下现在的情况。我凭借着对系统的熟悉,手画了整个系统所有模块和交互情况,业务流程,讲了两个多小时。后来被经理安排跟着大佬学习了两周,并且将找出来的问题弄懂并推动修改落地,技术能力得到了飞跃。再后来,百度糯米线上稳定性出了问题,我就被经理跨部门派过去支援了三个月,扛过了一次双十一(当然没法和淘宝的比,但是流量也不小),相关的机会就越来越多,最后见过了各种问题,解决了各种问题,才慢慢也变成了相关的专家。所以说人的发展是要靠机遇,但是没有实力抓住机会,只能一直平淡下去。
面临选择篇--跳槽和管理
我们永远不知道自己的选择是否正确,但是一旦选择了,就坚定地往下走。这7年中,我曾经面临两次大的选择,第一次是工作3年的时候,是不是要从百度跳出来,看看外面的世界到一个其它公司发展;第二次是在工作4年半的时候,是继续做技术,还是转成管理。
先说说“三年之痒”,有统计显示,入职百度后,有几个时间点是离职高峰:入职3个月、入职半年、入职2~3年。入职3个月走的基本是不习惯百度的工作节奏或者职位职责,毕竟虽然别的组不知道,但是我所在的部门,晚上9~10点多走是常态,周一到周五基本是睁开眼去上班,回到家就睡觉,没有什么个人时间,一部分人会在入职3个月发现自己无法适应决定离职。第二个时间是入职转正的节点,公司的确会有部分通过不了转正。第三个节点就是所谓的“三年之痒”了。那段时间里,第一是外面的诱惑特别多,相对校招开始慢慢的涨工资,一次跳槽50%的工资涨幅是极为诱人的;第二是工作三年,基本会把目前的工作都吃透,没什么新鲜感了,感觉自己得不到什么提升;第三可能是包袱会很重,你之前做的事情要不断维护,每做一件事就是一个包袱,压在身上完全没有时间和精力学习新的事情;最后作为校招生,看看外面的世界是一种理想抱负。综上原因,我基本在15年以高工的身份从糯米回来,就开始看外面的机会,当时甚至拿了滴滴的offer都定了入职时间。最终被高经劝了回来,没有离开。原因其实也挺简单,一个是我当时最大的诉求是可以甩掉包袱,能够学习新业务,有一种理论叫做跳出舒适圈,如果你能很舒适很好的把控你目前的工作,那你就该离开当前的环境了,因为这意味着你不再能快速提高,只有挑战和痛苦能够鞭策你变得更加优秀。当时的经理跟我说,你现在虽然学习了不少,但是作为qa才刚刚真正入门(现在才觉得这个说的是对的),去了外面的小公司,你做的只是把现在的东西搬过去再做一遍,对你一样没有任何提高。你要是真想提高,百度质量部其他部门你随便选,这样才能有更大的挑战。当时感觉还挺能满足我的诉求的。另一个原因还是百度质量部真的不错,当时外面看了一圈,感觉其实都没有太满意,而百度当时质量部还是单独的部门,作为业务部门的第三方,所以能够支持做更多的东西。综上所述吧,还是被说服留在了百度,不过换了一个部门到了百度钱包,后来一路变成了百度金融和现在的度小满。回顾下来,当时虽然没走成,但是这次trans还是特别恰当的,在新的部门一直有明确的事情一直支撑到T7,发展的还算不错。
接下来是第二个选择,转管理还是继续做技术。可能有些人会不理解,能够转管理,肯定转管理啊,技术的进阶不就是管理么。但实际上,在做了半年经理的工作之后,我才意识到,管理和技术是两个不同的发展路线,最终还是选择继续做技术。带人的半年里,我始终都感觉深深地有心无力,明明自己做两天能完成的事情,带的人1个月都没有进展,苦口婆心去讲去教,下面的人就是推不动。后来和之前入职时候的导师聊(他当时已经改做了经理),才知道带人和做事完全是不一样的,需要的技能和能力也是有差别的。当高工时手底下也有人,但是你的思路是用什么方案才能把事情做好,还是在解决问题,你的工作对象是各种事情;而经理的角度则不同,他需要思考的是怎么才能让手下的人把事情做好,工作的对象是人。当然实际情况肯定没有那么纯粹,高工也要考虑一些人的问题,而经理如果能够指导解决方案也能起到很大作用,但是本质上两者是有区别的。而我内心中,更享受的是把事情做好之后的成就感,而不是打造了一个优秀团队的自豪感,所以最终还是选择继续走技术路线。以上纯属个人感受,仅供借鉴,毕竟我现在也不知道自己的选择是对还是错,但从后来的发展来看还是不错的。
高工篇—体现你的价值
作为一个测试高工,到底需要体现什么价值,或者说,在团队里的作用是什么?我觉得,首先你要是团队里的表率。有很多人在晋升后,会觉得没必要在一线测项目了,全都把工作扔给小弟,这其实是错误的。团队里的其他人会看着你的一言一行,如果你天天工作不饱和,还整天指手画脚,人家嘴上不说,心里是不会认同你的,而且你的经理也会对你有意见。真正的高工一定要做在前面,你的工作方法,工作思路,在项目测试中传达给下面的同学,这样才会让大家学到东西的同时,还很服你。第二点,高工要时刻观察整个组里的情况,及时发现问题并且解决。有些人走了另一个极端,晋升以后还是自己埋头做事,完全没有起到高工的作用,对团队没有贡献;还有的人只是去吐槽问题,但是不去想解决方案,或者没有认识到自己有义务去推动组内的问题解决。真正有价值的高工要接地气的参与项目,发现和理解团队的痛点问题,可能是效率问题,也可能是质量问题,然后站在自己的高度分析问题原因,以及解决办法,给出方案自己解决或者组织团队里的同学一起解决。我曾经转到一个团队,团队里天天哀声哉道,吐槽和上游联调有问题,天天被投诉。为了了解问题,我参与到项目中,按之前的做法做了两周客服,天天响应上游的问题,最终发现了问题原因,设计了两个解决方案,一个是做分层测试提供一个mock和上游解耦,另一个是开发了一个联调定位工具让上游可以查询我们模块的关键日志和接口输入输出,信息透明化把不是我们的问题让上游自己解决,最终整个情况得到了改善。所以,高工的另一个重要价值是发现解决组里的问题并解决。第三点,可能就是各种评审了,毕竟在一个团队里,不可能实际参与每一件事。所以通过评审的方式,一方面可以提出你的专业意见,保证事情的质量,另一方面也可以让你把控组里的情况;最后,高工还有一个责任是培养团队里同学的能力,定期的分享或者指导,时不时地一对一交流,帮助大家提升技术能力,增加看问题的高度,解决工作中的疑惑,甚至提高与人沟通交流的方法。
高工篇—自己如何成长
其实作为高工,自己的成长是一个很难的事情。因为可能组里没有人能指导你,你遇到的所有问题都需要自己想法解决。这还不是最难的,毕竟解决事情还有思路,难的是,你的成长方向也需要自己去摸索!之前在百度有个说法,T6是可以复制的,但是T7以上都是独一无二的,尤其是质量保证方向。研发还可以跟着业务,解决业务需求,从中找到往前走的路,而作为测试,测项目明显没法满足你的成长需要,晋升主要看你质量保证技术方面的能力,所以完全要自己找方向。我个人是架构和稳定性方向的,因为前面目标明确,升到T7还比较顺利,但是上去以后,发现已经基本没什么新的难点了,业务已有的风险都能用已有的方法来控制,这时候就完全找不到下一步应该怎么走。没有目标的情况下人是最焦虑痛苦的,我也在这种状态摸索了一年多,甚至现在还没找到一个明确的方向。在这种情况下,我在做的有以下几件事情:第一是调整心态,提高可能没方向,但是可以先多发挥自己的价值,给团队贡献力量,在解决问题的时候也能被动提升自己的能力;第二是沉下心来复习基础,最近开始重看测试基础能力,包括开始做公众号也是想输出倒逼输入,重新梳理学习自己的知识,把他们都输出出来;第三还是尝试一些新技术,扩展自己的知识面,不至于被淘汰。这些事情我不确定是否有效,但是他们能够平静我的内心,让我不至于对自己的发展产生焦虑,同时最好万全的准备,迎接可能的新的机会。
写在最后
写这篇文章可能没有什么技术干货,但是都是我对自己工作方式经验的一些总结。后面我应该会开始做一个QA知识技能图谱,并且按照图谱去产出相关知识的分享。就像前面说的输出倒逼输入,分享同时也是给自己打好基础吧