从程序员到技术总监:一个普通人13年的奋斗

Posted 码农翻身

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从程序员到技术总监:一个普通人13年的奋斗相关的知识,希望对你有一定的参考价值。

最近有多位读者问我,“军哥,你是怎么从一名普通程序员干到大厂总监的?”这其中有什么经验可以分享不,我笑着说:“这全靠“运气””。

事实上,除了运气,还有很多东西值得你探索一番。

话不多说,我们马上开始吧!


 1 

程序员

我从 2005 年 9月进入程序员行业,前5年待过3家公司,其中2 家是 IT 小公司,技术团队不到 30 人,还有一家是国企中兴。

在第一家公司时,那时市场流行 struts框架,而我所在的公司则全部手写 servlet!

这让我一点都提不上兴趣,并且非常担忧以后找工作怎么办,因为没有相关的工作经验真的难于上青天。

怎么破?

于是我买了各种书,从电驴上下载马士兵的课程各种学习。那时下班回到出租屋就是学习,周末也不出去玩,真心佩服那时候的毅力。

终将努力不负有心人,一年后,我跳到同行业的一家公司,工资也从 3000 涨到 4500,我还记得拿到 offer 的那天欣喜若狂,请了我的室友吃了大餐——鸡公煲,还给家人打电话报喜。

进入一家新公司就像刚谈恋爱一样,一开始总是甜蜜的,可是三个月后部门领导说:我们开发语言要从 Java 换成 asp.net ,做项目要的就是快,效率才是王道,这 Java 太繁琐了。

我的心情一下子低落谷底,我给自己的规划是走 Java 路线,然而目前这个囧境让我郁闷至极。

然而看到每个月的房租和各种开销,我被现实按在地上不断的摩擦,再经过无数次的不眠之夜的深思熟虑,我决定学 asp.net 一边做项目,先忍个半年再积累点积蓄再找自己喜欢的工作——Java,因为当时基本每月月光。

我依稀记得是 08 年 4 月份,我果断裸辞了,在面试了 3 个月、20 多家公司后,我拿到中兴通讯的 offer,真是太不容易了,毕竟最近一年工作都是 .net,然而找的是 Java 工作,这其中有多难估计只有相同经历的人才会明白。

在中兴的工作一年半的时间,我的工作是——负责一款叫网管的产品的性能部分的开发和维护,但这一年多期间我没有机会设计一张表,只加过 3 个字段,2 个索引,这个系统的架构是 swing + EJB (市场上用的公司很少)的,说实话我三个月就学的差不多了,工作也逐步进入正轨。

入职半年左右时,公司强制要求加班(一周要加满 15 小时),这让我很抵触。更有甚者,我直接上级花了 8 年才从程序员晋升到经理,我觉得这么慢的成长速度,我看不到希望。

我再一次陷入了迷茫,因为我的职业规划是技术总监,可是直属经理的过去经验狠狠的打了我一巴掌,我该怎么办?怎么办?我觉得这样的国企并不适合我,我要骑驴找马了,可是这一找就是 1 年,这真是焦虑不安的 1 年,请继续看下文。


 2 

技术经理

终于在 2010 年 3 月,我加入 PC 电商 1 号店,这一待就是 4 年,这四年我从刚入职的高级开发、做到技术经理、然后到公司架构师,真是肉眼可见的速度在成长!

刚入职时,公司主要使用的技术是 Struts2 +  ibatis + Oracle,我负责的业务 WMS(仓库管理) 系统中波次、捡货、出入库等模块,刚开始的两个月真是焦虑不堪。

为什么呢?

第一、公司使用的框架技术从没有用过,第二、我负责的业务我也是第一次接触。

怎么办?我觉得唯有勤奋和方法了。

我基本早上第一个到,最后一个下班,不懂就问老同事和业务人员并多次去业务现场,然后晚上回来还要坚持读技术书 1 小时,周末也是如此,就这样坚持了三个月,我逐渐上手了并且可以加速,我负责的模块不但开发速度快,质量还很高,几乎没有什么线上 bug。 

又过了三个月,部门老大找到我,说有一个开发 team 缺一个负责人,问我愿意试试不?

说实话,有这样的机会,我既开心又担心,开心的是我可以带领团队打战了,担心的是我怕做不好,毕竟管人我是小白一个。

那一夜我失眠了,我想了很久,第二天我找到了老大说:“我愿意接受挑战”。从此我成了 TMS (物流系统)的技术负责人(共 3 人),然而刚上任不到 1 月,团队里仅有 2 个小伙就要离职了,这让我哭笑不得,我于是开始反思自己,原来我事无巨细了,让下属没有了发挥空间,也同时说明我的管理太稚嫩了。

不过,由于物流订单(5w 到 20w)激增,需要开发更多的业务功能和系统,半年之后我的团队有了 10 人的规模。

这期间发了一起比较大的事故,那次事故我和兄弟 team 的同事整整排查了一天一夜,一开始我认为是他们系统的问题,我只是来帮忙的,后来定位是我们系统的问题,原因是在数据库某张表过百万数据时,数据查询没有走事先建好的索引而走了全表查询,导致我们系统某个接口的耗时从 10 毫秒延长到 500 毫秒,再一次让我对技术的复杂性有了新的认知,

接下来,又花了一年的时间,我把老的系统重构升级,从之前的单点系统改成分布式系统,数据库重新设计,核心业务流程重新设计,还给中国平安开发了新的 TMS 系统,那段时间真的充实。

然而好景不长,我又再次陷入迷茫,虽然我对 B 端系统经验还算丰富了,可是我对 C 端高并发还很陌生,我想每一位技术人都很憧憬 C 端的技术挑战吧。

我毅然决定内部应聘 C 端核心交易部门的架构师,在经过和负责人面试并和 CTO 面试后,我终于如愿以偿,不过我记得刚转过去的三个月真是非常焦虑,第一、C 端业务不熟悉,第二、对 C 端的技术架构说实话只是停留在看书水平,第三,很多开发还会找我问各种技术问题、线上问题需要我来协助排查。

哎,真的不知道当时是怎么熬下去的。

焦虑之余,我还是静下心来,把 C 端的核心代码都看了一遍,包括会员体系、SSO、购物车、订单、库存、商品、营销和第三方接口服务等等,核心代码 3 万行以上,这让我对 C 端技术有了深刻的认识和实践的机会,之后我还负责秒杀架构设计、订单分库分表改造设计、用户库和订单库拆分、分布式缓存优化等设计。

也正是这一次历练,让我的技术视野(总结一下就是异步 + 消息 + 队列 + 缓存)和 C 端产品的理解和业务,有了飞速的提升。

干了一年半之后,我对 C 端交易核心技术和业务都了然于胸,再一次感觉我又到了瓶颈,我心想到了要离开的时候了。

回顾这四年,我的职位从高级开发——技术经理——架构师,经历了太多事和人。

我不断走出舒适区,不断挑战自己,人生不就是这样吗?一直在路上......


 3

技术产品总监

2014 年初,我从 1 号店离职之后,经朋友介绍,就职一家 P2P 公司任首席架构师。在这家公司,我把之前的积累的技术输出了一次,技术对我没什么提升,值得说的就是这家公司比较传统,老板不太相信人,把人当成工具,在经历多次内斗、站队之后,我选择退出,玩不过他们还不能跑么。

最近,听老同事说,这家 P2P 公司的高层包括 CTO 都锒铛入狱了,幸好我跑的快,想想都有点后怕。

2015 年 4 月,我加入饿了么,任技术总监,不过我这个总监入职的时候就我一人,光杆司令一枚。

入职第一天,CTO 就给了我 2 个艰难的任务,其一是 2 个月内团队从 1 到 30(后端、测试、前端、产品) 人,并跟我叮嘱这事我是 owner ,HR 只是协助我;其二 2 周内把饿了么早餐这款和美团早餐的竞品上线。还告诉我,这两件事搞定了就过试用期了,否则就卷铺盖走人。

这突如其来起来的压力让我顿时崩溃不已,2 个月招 30 人就意味着 1 个月要招 15 人,通常面试 10 个人才能入职 1 位,这就是说我要在 2 个月面试 300 人。

摆在我眼前有两个难题,怎么找到那么多简历?对于我不熟悉的前端、测试、产品岗位,我怎么判断他们的专业水平?

对于问题一,我发动了我所有的人脉,各种招聘网站(BOSS、拉钩等等)发布招聘广告,去老同事公司请喝茶,在几十个技术大群发红包(预计发了近 10000元),不过最终效果还不错,找来了足够的简历,对于前端、测试、产品经理的专业能力面试,我就请兄弟部门的同事协助帮忙,然后积极回馈他们的协助,最终任务顺利完成,我也长长的缓了一口气。

在这期间,我拼命学习测试、前端和补充我自己的产品知识,我感觉可以依赖别人一时,并不能依赖一世,最终还得靠自己。

接着说问题二,就我一个人,要 2 周搞一个 c 端产品上线,而这个工作需要前端、后端、测试(6/7 人)配合才能完成,这明显是天方夜谭。

怎么办?我当时真的焦虑之极。

我舔着老脸和 CTO 说,能不能从其他团队借调几个人来协助我,架构和后端代码还有整体项目协调都我来(架构师背景优势凸显),后来还真的借到了人,我提议包下公司一间办公室,一起吃饭、一起开会、一起写代码、一起测试、一起讨论需求,就这样封闭式开发了 10 个日日夜夜。

我记得这期间,我就回家过一次,换了件衣服就马不停蹄回公司,真的是皇天不负苦心人,产品终于如期上线,我也顺利转正。

接下来我们和美团打起了硬仗,美团早餐发布一个新产品功能,我们觉得不错 1 周左右也发布,反之我们发布一个新功能,没几天他们也有了。

这里分享一个故事,是业务同事说的,有一天地推业务同事开早会,有一位刚入职不久的同事穿着美团的工作服就来了,后来才知道这人是美团派来的卧底,可见当时的竞争已经到这种程度了。

时间一下到了 2016 年底,CTO 和联合创始人找到我,说饿了么的客服做的太烂了,高峰期间客户电话进不来,并且客服部门已经近千人,可是他们使用的系统效率相比同行太低,他们商量了一下要把这个产品交给我,在他们眼里我能委以重任,并给我一年的时间,看看我的表现。

我感觉,我又了接了一个难活,怎么办?干呗!

我调研下来,目前客服产品有四大问题:

1、客服业务部门(负责人)太强势,并且积累了很多历史需求。

2、客服业务对产研同学互相不信任,且专门支持客服业务的产品开发才 6 个人。

3、客服整个产品中,用了太多的外包产品,要开发新功能周期太长。

4、仅有的自研客服产品,使用了 python,但是 python 工程师当时非常难招。

通过四个问题,可以发现,有时候根本就不只是技术的问题,可能是人与人合作的问题,可能是解决问题者的思路问题。

为此,我多次找到客服业务负责人,换位思考并沟通我的想法,我估计了一下最少有十几次之多,最终我们达成一致,我快速招人把支持客服团队的产研人数从 6 人扩大到 15 人,我们把老系统按照新的产品规划进行重新开发,老系统等新系统上线后逐步下线,外包的系统逐步用自研的系统取代。他则全力配合我,并且反馈产品在使用过程中的各种问题,我们快速改进。

另外,我在饿了么经历 3 次组织架构调整,3 次换领导,每换一次领导我感觉都要重新过试用期,如履薄冰,不过这些经历让我成长加速,人生何尝又不是经历呢。

2018年 3 月我因为个人原因离开饿了么,这 3 年多的经历,让我在技术和产品广度、深度、商业思维等方面都提升很大,对于管理团队也有了自己的经验和方法论沉淀。

我非常感恩,曾经的 CTO 如此信任我,让我有机会从 0 到 1 操盘多个公司战略级的产品,也认识了众多优秀同事(他们来自腾讯、滴滴、阿里、facebook、linkedin),从他们那学到了很多经验让我受益终身。

最后,特别非常感谢我的部门伙伴(加上离职,总共有 120 多位),感谢一路陪伴,一路见证!


结语

回顾了自己亲身经历三个重要节点,总结一下:

1、职业规划很重要,找到自己喜欢的方向,需要坚持才能拿到结果,这可能是 10 年。

2、技术只是起点,不是我们技术人的终点,想要往上爬,请注入产品和业务思维,并且我们每个阶段需要的能力并不一样。

3、要想「成长」就必须经历「痛苦」,经历的越多成长越快。

4、不断走出舒适区,挑战舒适区,坚持终身成长,另与优秀的人为伍或学习,做一个靠谱的、真诚的人!

一直在路上,共勉!

关于军哥:前饿了么、贝壳技术总监,他的公众号是“军哥手记”

军哥乐于结交朋友,在他的公众号(军哥手记)输入框回复“w”即可加他的微信,朋友圈做个点头之交!

另外军哥写了一些,关于个人如何快速成长、深度思考、程序员或产品经理能力模型、架构,OKR干货,技术管理等电子书资料,在他的公号(军哥手记)后台回复 “9”获取,不谢。

以上是关于从程序员到技术总监:一个普通人13年的奋斗的主要内容,如果未能解决你的问题,请参考以下文章

从程序员到阿里技术总监之路

共同创业五年,技术总监却突然就这么离职了

一篇文章搞懂高级Java程序员架构师技术总监CTO从薪资到技能的区别

一篇文章搞懂高级Java程序员架构师技术总监CTO从薪资到技能的区别

原腾讯QQ技术总监T13专家,黄希彤被“离职”,原因竟是……

“30岁,当一名游戏技术总监去”