Personal Career Review - My Way

Overview

It has been the 14th year since I graduated and started working in 2009. During this long career, I have done many stupid things and some things right.

Currently in a company, as the head of back-end development, in charge of a technical team of 15 people. For me, this is the brightest position in my current career. Although the team is small, it is still very important to be responsible for the system stability of the entire IT department.

As long as you have been a programmer in an IT company for several years, you should know that it is not so easy to take the road of technical management. There is an element of luck here, and you also need the blessing of your own strength. This article just wants to share my experience on how to embark on the road of technical management, for your reference, and to do a little bit for the majority of programmers.

The outline of the article is divided into the following sections:

  • The first five years without growth;
  • Turning point in career: entered Vipshop;
  • Be the technical team leader for the first time;
  • First time as a technical manager;
  • It is the first time to be the head of back-end technology.

How to fight monsters and upgrade during the period, please see the details in the following chapters.

The first five years without growth

The first five years can be summed up in one sentence:

Bumping around like a headless chicken, but getting nothing done.

In the past five years, I have worked in 4 [companies in traditional industries], basically every year, and two of them are outsourcing companies. At that time, there was only one reason for job-hopping, which was to go where there was more money. Even if it was only an increase of 2,000 or 3,000 yuan, I would go. I didn't have any career plans at all. Looking back now, I can already understand why I did that at that time. The reasons are:

Without the guidance of good teachers and helpful friends.

That is to say, no one will help you, no one will take you, and tell you how to cherish the first five years and how to make career plans. It is easy for people to be trapped in their own circle, and it is difficult to break through cognition. If there is no expert to help you, you may be like that for 10 years, always doing nothing, and always have no direction.

But after all, I have been working for five years, why do I say that there is no growth? There are several reasons here.

  • The experience in outsourcing companies (I have been to two outsourcing companies and stayed for more than two years) can basically be ignored. Because everything we do is an enterprise-level management back-end system, and it is difficult to get in touch with the real core system, and there is no large-traffic system for C-end users (even if there is, it is not your turn to do it), really Just make it according to the needs of the product. The team will not strictly require you to have technical solutions and technical designs, because this kind of project has very low technical requirements. Therefore, as soon as the demand comes, it is urgent to start working immediately;
  • 虽然也待过两家非外包的公司,但是公司没什么名气,对技术人的要求也不高,还是需求一来,马上开工的那种状态。如何做设计,如何提升代码质量,代码如何写才是好代码,没人告诉你。

没做过好项目,周围也没遇到过高手,加上自己也没啥天赋,比较笨,就一直浑浑噩噩度过了五年。我是属于需要有人指导一下,才能开窍的那种。

经验教训:

在传统公司里做程序员,不太容易遇到好公司好项目好团队和好的人,你可能还自我感觉良好,觉得自己做的不错,但是在互联网的HR和面试官看来,你可能一文不值。这个时候的你,应该赶紧去找一下好公司,突破上去,上到一个新台阶。

职业生涯转折点:进入了唯品会

14年结婚后不久,老婆语重深长的说:

准备屡战屡败,屡败屡战,去互联网公司,把履历洗白一下,不然你以后的路会越来越难走的。

我当时是挺不屑的,她懂啥呀。但是听了她的分析后,我被说服了。

  • 工作五年了,履历毫无亮点。没在有名气的公司待过,也没做过有大流量的项目,还是一个普普通通的程序员;
  • 再过几年,就七八年工作经验了,但是你的技术跟年龄,完全不匹配呀。

可以说是当头一棒了,确实不能在这样下去。于是赶紧更新了简历,开始投递广州的一些互联网公司,开始走上了互联网公司求职之路。如上文的描述,我一直以为我的技术还是相当不错的,像Spring、Hibernate、Struts用的很熟练,但是去面了几次后,我才知道跟别人差距有多大。面试官一上来都是问JVM、高并发、高可用等一些技术点,我全都不会。

当时我是屡战屡败,屡败屡战。记得还连续去了广州一家知名互联网公司面试过4次,都没通过,每次都被打击的死死的。虽说每次都失败,但是也注意到了互联网公司到底都用一些什么技术,后面认真的准备了半年,啃了N本书,看了N个技术博客,写了N个技术Demo。终于在2015年成功进入了广州唯品会。虽然是降工资,降了两个等级过去的(我当时资深开发,但是去了唯品会,就变成普通开发,连高级开发都没有),但是我仍然愿意去。因为进入一家比较有名的互联网公司,当时对我来说实在太重要了。

2015年,唯品会刚好开始进行核心系统大重构,我刚好在公司的重构部完整的经历了整个过程,参与了几个核心系统的重构工作(其中一个商品项目,在唯品会2016年的大促里,流量是最高的,真的是百万级别的瞬时流量),都是从零开始弄的项目。整个过程下来,自己的JAVA技术、系统设计和架构、以及技术认知,都提高了好几个档次。也终于见识了,一个高并发、高可用的系统是怎么弄出来了,要经历过一些什么,要注意一些什么。记得在由于体会越来越多,也陆续写了很多博客,后来还成了CSDN技术博客专家。

期间由于表现还不错,晋升到高级开发(P3),刚晋升后不久,我就跟原来的leader提出说,能不能让自己带一个小团队,锻炼一下带队的能力。得到的回复是:

团队暂时没有这样的坑位。

但是带团队的经历对我来说是非常重要的,因为我当时的年龄已经不小了,技术上也没有什么特别的优势,但是项目管理的潜力还不错。最后没有办法,我只能提离职申请,离开待了快3年的唯品会。当时的离职不是一时冲动的,而是职业发展所需。

  • 年纪也30好几了,技术天赋也一般,走技术专家不合适我;
  • 对项目管理非常有兴趣也有一定的潜力;
  • 当时的团队暂时没有坑位;

基于上面几点,我又开始走上了寻求技术管理岗的求职之路。

经验教训:

  • 早期不要毫无目的的频繁换工作,很多中大型公司很在意这个的,会因为你频繁换工作而把你刷掉。因为职业发展所需才去跳槽才是对的;

  • 如果能进入到一家好的互联网公司,最好是去核心部门,学到的东西才多,成长才足够快;

  • 只要去过一家比较有名气的互联网公司,是能将你不好履历洗白的。这个对后面找工作非常有帮助;

  • 找一个合适的靠谱的女人结婚,对你的影响是一生的。

第一次当技术组长

以我当时的实力和背景,去大厂带团队是不可能的,只能去一些中小公司,但是这个没关系,只要能让我带团队就行,先入门先。

刚好当时唯品会有几个认识的同事离职了,去了深圳的一些创业公司做技术负责人或者架构师。当时有3家公司可以选择,也都面试通过了(有熟人推荐和介绍,确实成功率高很多)。但是只有其中一家有机会带一个7人小团队,加上当时的推荐人在那边是技术负责人,对技术这块有完全的话语权,我就果断了选择了这家。

这家创业公司是做小程序电商的,是做这块业务的头部公司,业务发展非常快。基本上所有的业务项目都是倒排期的,技术团队是没有任何的反驳的余地的。

经常出现大老板对外说,我们什么时候推出什么样的产品,而我和我带的小团队,一行代码都还没写呢?

因此如何按时交付倒排期大项目,成为当时我面临的最大挑战。当时是小团队,我也是参与写大量代码的(必须一直在一线),但同时得兼顾如下几个角色:

  • 架构师,主要是关键系统的设计和核心模块的开发;
  • 项目管理者,负责与产品和业务方沟通,并制定详细的项目计划,让大家能依计划行事;
  • 管理者,主要是团队的成长、绩效这块。

那刚开始顶得住吗? 肯定是顶不住呀,我经常因为赶工,睡公司沙发。能力还没修炼到家,那就只能拼时间了。

这个节奏一直持续接近两年,非常的辛苦,但是成长也是有的。具体如下:

  • 正儿八经的带过团队了,团队虽小,但也算五脏俱全了。团队管理遇到的一些问题也基本遇到了,这个就是我当时想要的,因为后续再去找工作的时候,我就是实打实的有带团队的经验了;
  • 项目管理能力得到飞速的提升,毕竟要经常应付紧急大项目。项目管理能力是技术管理者的一项重要的横向能力,是一定要懂的;
  • 在创业公司,业务交付是最重要的,技术的长期规划是不重要的。老板都不知道某块业务上线后又没有用呢,你IT团队操心个什么技术的长期价值呢?
  • 在创业公司带团队,自己的硬实力一定要有,随时能在一线大量的写代码;
  • 人脉对找工作极其关键,我能快速的入职这家公司并带一个小团队,也是因为在唯品会累积了一些人脉。他们有好的去向,你是可以跟着去的。

第一次当技术经理

后来这家创业公司业务发展不行了,开始裁员了,我也不得不考虑一下自己的将来,于是又借助人脉,去了一家餐饮公司,当时这家公司的CTO以前也是认识的,简单唠叨几句后,很快就接到了该公司的面试通知,由于自己有唯品会的重构经历也有创业公司的带队经历,整个面试过程还是很顺利的,拿到了一个技术经理的职位,负责中后台业务,团队是13人。为了能快速的融入这家公司的IT部门,我当时做了几件事情。

  • 通过一对一沟通,了解团队的瓶颈;
  • 积极的去一线处理线上问题,以便快速熟悉业务和了解应用系统的情况,同时也能让更多的人认识到我;
  • 大重构;

记得刚进入这家公司没几天,上级就提到,我负责的团队的情况不是很乐观,项目经常延期且跟其他职能团队配合的也不太好,让我想办法解决一下。言外之意就是说,这个团队不好管,让我多花点心思。由于之前已经有两年的带团队经历,深知跟团队成员一对一沟通的重要性,尤其是跟核心员工。

于是便找了团队的两个老员工,请他们吃饭,顺便了解团队的情况。当时其中一个员工情绪稍微有点激动:

团队负责的核心应用,大部分还是PHP写的,但是PHP开发只有3个,业务需求又多,根本忙不过来。而JAVA开发基本又没事干。

基本是一针见血了,这个是团队的真正问题所在。忙的人忙的要死,不忙的又闲的无聊。事后我跟上级反馈了这个问题并提出了解决思路:

必须进行核心系统的重构,除了提高稳定性外,也能极大的提高业务需求交付速度;

在得到上级的批准后,便紧锣密鼓的操办起重构来,那会的阻力很大,因为产品负责人觉得这样会阻碍业务需求的交付,而测试负责人则反馈,重构期间,测试人员得两边测试,极大的加大了测试工作量。没有办法,我只能把问题上升上去,直到CTO那边。最终CTO拍板,必须重构,并让我列出详细的重构计划。

于是乎中后台技术团队足足花了10多个月,把核心的应用全部从PHP转成JAVA。期间也出现了很多线上问题,但由于有完善的灰度和回滚方案,都在5分钟内恢复正常。我因为这个重构项目,在次年晋升为高级技术经理,而我的上司则晋升为技术总监,记得当时他去晋升的时候,CEO还特意说了句:系统最近稳定了很多。

期间为了能快速熟悉业务,我做了一件很疯狂的事:

我个人在线值班3个月,并作为线上问题的对接人。

无论是线下门店的问题还是线上的app和小程序问题,都可以直接找我。这个当然会占用我很大的一部分时间,但我认为值得,理由如下:

带着问题去询问或者查看代码,效率是非常高的,因为问题非常明确,就摆在那,你压根就不用去想,从哪个地方切入去熟悉业务,直接把当前的问题解决掉,就能了解到一点业务,通过长期的坚持的处理一个一个的问题,慢慢的从点到线到面的了解整体的业务。随着解决的问题越来越多,你会越来越了解当前的业务应用,有哪些模块,都是负责什么的,当前是怎么玩的,哪些是关键的地方绝对不能出问题的,哪些又是强依赖第三方的,渐渐的会对应用有个整体的认识。当然也会知道系统哪些地方需求去打补丁,哪些地方需要去做监控。业务熟悉了除了有助于自己快速的融入到团队里去,还可以为自己后续的任务合理分配和系统有效规划打好基础,当然最重要的还是有助于与团队内部、外部、上司进行良好的沟通,如果业务都不熟悉的话,很多事情都无法直接跟你谈。

没有这段处理线上问题的经历,我是无法很好的推动重构的。因为业务和周围的人你都不熟悉,别人也不了解你。

在这家公司除了做重构之外,也交付了很多能给公司带来GMV的业务需求,上司和CTO也都比较满意,基本上每年都给我涨了不少工资。在CTO眼中,能帮大忙的,钱就尽量给够。那几年公司发展的不错,中后台技术团队的业绩也很不错,每年的蛋糕分的都比较多,团队的人都很开心。

经验分享:

  • 要去做有挑战有难度的事情,只要做成了,团队就容易拿到好的成绩,对团队的稳定性是极其有用的。一定要从团队的角度出发来考虑问题,像当时如果没有做好重构项目,我估计团队就会散掉了;
  • 跟着你一个看好你支持你的上级以及CTO,超级重要。他会信任你保护你并授权给你,让你做重要的项目,让你出成绩;
  • 稳定性是技术团队保命用的,如果系统不稳定,随时会被干掉的;
  • 空降兵,一定不要急着去改变团队现状,一定要先融入,了解团队的人和事,找到那几个关键的问题,然后全力推动去解决;
  • 项目管理能力很重要,因为大老板很看重这个能力。能按期按节奏交付系统,是很重要的。作为技术管理者,必须掌握这个技能;

我在这家公司待了也2年半。

第一次当后端技术负责人

在2022年2月,我又跳槽去了一家公司,当时离开上家公司是没有办法的事情,因为原CTO离职了,公司新招了一个技术总裁,哇去,带来了N多老部下。几乎所有的核心老员工都需要走,包括我。

当时我心里就想着一个事,CTO是否稳定太重要了。

因此从那家餐饮公司离职后,陆续去面试了几家,每每到最后,我都会问面试官,CTO的背景是什么,是否稳定,因为我吃过亏了。

当时选择这家公司有如下几个原因:

  • 这个行业的资本很活跃,一直在投资公司。也即是资本看好这个行业,赛道足够大;
  • 公司是这个行业的头部公司;
  • 我应聘的职位是后端技术负责人,责任变得更加大了,同时title也升级了;
  • CTO背景非常好;

这次我没有借助人脉,完全靠自己的判断和职业诉求去找工作。对团队内部的情况并不了解,里面一个人都不认识。相当于是进入了一个完全陌生的环境。因此也踩了不少坑,导致在早期,我在这家公司,过的极其的辛苦。

首先是leader层以及技术总监的技术专业水平,强到完全超乎我的想象,他们在技术架构、技术规划、技术管理、项目管理,有一套极其严格的规范,且是他们在上家公司严格经过考验的。这个导致我很不习惯,因为有一堆的方法论在卡着你,我在前两家创业公司里,做事的时候,有时候是有点野路子的,当然这个也是被逼的,因为当时业务方压的太紧了。

但在这家公司里,业务需求是能停一停的。可以专注的去做技术项目,提高系统的稳定性。大家应该知道,如果纯做技术项目,对你的技术能力要求是非常高的,但我已经有两年多没写代码了,刚开始完全适应不了。

另外呢,他们的要求又极其的高,像技术方案、代码质量,code reivew,压测,技术架构合理性,没按照要求来做的,通通打回重搞。再加上我的上级是细节控,一路盯着你,哎,搞得我压力山大。我曾经一度怀疑自己,我还合适待在这家公司吗? 怎么感觉之前累积的东西,在这里完全没用了。

后面压力实在太大了,只能多次的敞开的跟上级和CTO聊,慢慢的,自己的心态才缓过来。那会我开始明白了一些事情。

  • 勇敢的承认自己的不足,不是什么丢人的事情。一定要敞开的跟老板聊,老板虽然严格,但是他会帮你的;
  • 心态要好,有些人的实力就是比你强大很多倍,在他眼中很容易做成的事情,你可能一直都无法做好或者说需要花费很大的精力才能完成。要能接受这种差距,并努力提高自己,慢慢减少差距;
  • 有些事情真的急不来,解决它就是需要花时间的。

在这家公司经历了12个月的磨练后,哇去,我自己成长真的是飞快,而且成长质量非常高,比以往任何一家公司都高。毕竟跟着一波高人做事情,成长是最好最快的。

当然期间你得能挨过去,中间我其实有离开的想法,但是后面还是坚持了下去,到目前为止,基本上迈过了这个坎了。

那么在这家公司我学习到哪些技能?

  • 对团队要高要求,团队成长才足够快。中间如果有人适应不了的,那就请他走;
  • 如何用最标准的方式,准备一场大促;
  • 如何管理自己的时间。这个是我在这家公司才真正掌握到的,做管理的,其实有一条暗线,那就是管理自己的时间。如果做的不好,你可能一路都被别人牵着走;
  • 如何高质量的从0到1,搭建应用系统。以前我都是短平快的把事情做成,在这边,学习到如何系统性、体系化、长期化的去思考和解决问题;
  • 做管理的,如果自己都没重点,那团队也就没有重点,这个是很危险的事情;
  • 如何从0到1的搭建研发流程体系。

小结一下的话,就是到目前为止,我学习到了一些技术总监才懂的技能。有一种从八路军到正规军的转变的感觉。

总结

提几个重点吧。

  • 跳槽要根据自己的职业规划来,每次跳槽都是往上跳。呈上升的趋势,不要搞降级跳,平级跳。我这边在后面几年就是按照这个思路来的。传统公司-->唯品会高级开发-->技术组长-->技术经理-->后端开发负责人;
  • 每次跳到一个新的台阶,你都会累到半死,只要你能挨过去,就能得到飞速的成长;
  • 跟着高手才能学习到好东西,要注意成长的质量;
  • 勇敢的承认自己的不足,不是什么丢人的事情;
  • 心态要好,要能接受差距,并努力提高自己,慢慢减少差距;
  • 团队管理,必须在实战中体会和掌握。

Guess you like

Origin juejin.im/post/7196496365030146108