发表时间:2022-03-25来源:网络
思绪回到了十多年前的一个夏天,一个少年焦虑的在校园行走。他是个疯狂玩游戏住网吧的少年。
大学期间,他沉迷于游戏,大一大二迷上了「传奇」。曾经创过一个年纪通宵记录:在网吧住了17天。
在学校几乎没有上过任何课程,挂科无数。所有的时光基本上都在网吧度过……直到学校下达最后的通知:勒令在半年内补完缺失的学分,否则按退学处理,父母也对他失望透顶。
1.窘迫的困局
这个少年就是曾经的我,那时候水到计算机专业大三了,连一个HelloWorld都不会写。
本科就读的大学坐落在一座山中,那一天上山再下山,不断往返,完全感知不到时间的流逝。整整走了一个白昼,累得精疲力尽,瘫坐在草丛之中,看着深邃的天空和地上的花朵,那一瞬间我突然做了一个改变自己一生的决定。
那一刻定了一个疯狂的计划:大半年内完成补考修完学分、通过英语四六级、拿到高级程序员证件、考上华科研究生。要通过努力来逆袭这一切,要改变自己的命运。
回头看当年的那一瞬间,所谓的顿悟,恐怕就是这种状态吧。
PS:如果你是研发,想要时刻保持竞争力,或者要进大厂,平时就要多看计算机经典书籍,顺便送大家一份经典计算机书单资源,看完进大厂:
这份书单目录,非常经典:

2.艰难的爬坡
那一整天的校园漫步,是我逆袭的起点,这之后我告别行尸走肉般的状态,变成一台彻头彻尾的学习机器。
编码的世界,日新月异,发展非常快,但C语言永不过时。那时候我也是从C语言开始学起。
没有了老师,只能自己开始一点点啃,谭浩强的《C语言程序设计》反复看,然后一行行在电脑上敲出来。
当时对计算机缺乏系统认识,最难理解的就是指针,书上说它是个变量地址,那么问题来了,什么是地址?一不小心,指针就让程序Crash了。直到读研的时候,看了大学教材:《计算机组成原理》这本书,我才明白指针背后的含义。
因为要考研,没有时间和C语言缠斗,主要目标是专业课,数据结构才是真正要攻克的重点。
从数组到链表再到堆栈、二叉树、平衡二叉树、红黑树、B+/B-树,简直就像看天书。
还记得二叉树的先序,中序,后序遍历就把我弄晕乎了。更别提后面的AVL树的删除以及B-树。
我应付看不懂的方式也很粗暴:做笔记,勾选出没看懂的部分,反复看。一遍不行看两遍三遍四遍,直到所有内容看懂为止,数据结构这本书,记得来来回回看了10多遍。
这个时期学习编程是为了准备高级程序员考试和考研,离实战还非常远,但打下了编程的深厚理论基础。
3.成长期
疯狂学习大半年后,拿下高级程序员考试,也考上了华科研究生。定下的目标一一实现之际,居然没有一点点喜悦。
对浪费时光的扼腕叹息和对编程的渴望完全压制了喜悦。
考研专业课最后两个大题,居然连Include都没写(上机太少),但凭借啃书的那股劲,拿到了140多分。
这种水平如果进入社会,会被毒打到什么程度?这点自知之明还是有的。
只知道自己要跟时光赛跑了。不再需要复习专业知识,我开始疯狂的在机房敲代码。
这期间认识了学校的几个同学,他们长期通宵在机房Coding,且伴随着激烈的讨论争吵,有时候一天都不怎么吃东西,他们在做什么引发了我的好奇。
问了问,他们是ACM校队的成员,正在参加集训。ACM全名是国际大学生程序设计竞赛,学校里参加这个竞赛的,基本都是高中就开始编码。而我这个菜鸡,开始硬凑着要和他们一起玩。
遭遇嫌弃是必须的,但没关系我脸皮厚,天天请他们吃饭,帮他们端茶送水。
还记得为了解一个DP问题,苦思冥想三天三夜,找到解法的那一刻如释重负。
刷题的过程是枯燥且伴随痛苦的,提交器报各种不通过的时候让人无比抓狂。
这期间,同时开始系统的学习算法,《算法导论》这本书重复看了N遍之后,终于有了一些心得。
自认为能力不错之际,提出加入校队,但被队长无情拒绝。这让我伤心了很久。
成长的过程,润物细无声,极难察觉。但那段枯燥痛苦的刷题岁月让我未来的道路受益匪浅。
4.跨越期
很快,到了读研的时光,几乎是两点一线:实验室到宿舍。期间,参加了ACM校队三队,最后铩羽而归,并没有拿到奖牌。
这之后开始系统的学习网络、C++、VC,还记得有一本非常厚的书:《C++ Primer》,可以说上面的每一个例子,都上机造过轮子。
随后开始啃《Effective C++》、《More Effective C++》、《C++程序设计原理》、《深度探索C++对象模型》、《STL源码剖析》、《计算机网络系统方法》、《TCP/IP详解》。
除了疯狂自学,专业课和实验室的项目压力也很重,但掌握的东西越多,你对未来就越笃定。
校园漫步的那次顿悟还给自己定了一个目标:毕业以后做游戏的创造者。
所以,主攻的三大方向很明确:Window C++开发、算法、网络编程,这些都是游戏编程所需要掌握的硬核技能。
毕业后,如愿拿到腾讯游戏的Offer,开启了工作生涯。
5.初入腾讯
2008年硕士毕业就加入腾讯游戏部门了,也算开局比较顺利,哪怕是在我们那个985计算机硕士还比较稀少的年代,毕业进腾讯勉强也能算top 25%。
能加入腾讯有一个很重要的原因:刷题+计算机体系基础知识牢固,这里前文讲过不少,就不啰嗦了。
重点强调下校招其实是可以临时抱佛脚的,那时候在面腾讯之前,我把刷过的算法题重新看了一遍,没想到面试官问的两个算法题都是我做过的。
最近秋招结束了,明年的春招马上也要开始了,还在找工作的朋友要加油了,关于应届如何进大厂大家可以看看这篇旧文:CS年薪百万,YYDS?。
在腾讯的工作是非常繁忙的,每天基本都是11点下班,周末跑去加班会发现同事都在,项目排期都是倒排,老板直接告诉你deadLine,我们的老板要求也巨高,一不小心就会挨批,卷是真的卷不过收获也很大,在工作的第一年养成了精益求精、使命必达的职场品质,这些品质在随后的职场生涯中让我受益匪浅。
6.北上加入人人网
2009年在人人网工作的师弟小强的一个电话让我产生了跳槽的冲动,彼时的人人网刚完成4亿美金的融资,正准备冲击上市,这一下就吸引了我。
彼时人人网的极客非常多,比如今天方正证劵的CTO曲浩大神、微软大佬穆总、现在担任腾讯的技术专家的欢哥、移民加拿大顶尖公司的小白等等,相对来说公司也不怎么加班,大家基本到点就走,氛围非常轻松愉快。
在人人网我开始带团队,领导欢哥给了我一个任务:研发人人游戏大厅,是一个网页版游戏大厅要用到很多插件技术。
刚接到任务之际压力非常大,毕竟之前没接触过插件技术,能力不行加班补,并且在腾讯的经历也让我形成了自觉加班的习惯,这个习惯也影响了我很多年,是好是坏暂时不表,最起码在人人网那段攻坚时间,这个习惯让我扛住了压力,按期将人人游戏大厅推上线了。
上线后,这个产品一度做到100万日活,领导们对我也非常满意,半年时间连续拿了两个A级绩效,同时给我的团队加了两个人。
这个时候还算春风得意,刚毕业1年多就担任技术组长了,并且得到了老板们的支持。
但接下来发生了一件很意外的事情:公司COO在一次宣讲期权政策中透露,后续的期权授予将减少,甚至不再授予。
这和当初HR的承诺直接矛盾了,感觉就是被坑了,这之后我开始心猿意马,感觉初心无法在这家公司实现了。
恰巧人人游戏大厅需要查杀功能,老板们选择了和360合作,合作完之后,对方开始挖我。
从各方面了解到360的信息:发展迅猛、老板大方、员工能力强,我迅速做出离职加入360的决策。
今天回看这个决策,充满了风险与挑战,因为毕业1年7个月就跳槽两次,一旦跳槽失败,可能就是万劫不复了。
幸运的是,后来的经历证明了这次跳槽是对的。
8.360蜕变的那五年
我在360工作了五年,伴随360从500人发展到1万人规模。刚加入360担任高级工程师,离开的时候管理整个部门的产品技术,几十人的团队承担了6个产品业务。
在工作中我不会给自己设置边界,刚进360我是一个码农,但会很积极的参与到产品的讨论中。
我们部门做的是远程人工修电脑业务。通过公司研发的远程控制平台,由我们的电脑专家给用户远程解决各种电脑问题。
我发现我们的支付流程有好几步,这个过程用户流失严重,于是我做了一个JS注入帮用户自动输入后续的步骤,用户输入一次之后就会看见一个支付流程动画,等待几秒后支付就完成了。
这个改动上线后的第二天副总裁发现公司销量涨了30%,一问才知道是我主动做的优化。
从这以后副总裁就特别认可我了,进入360半年后赶上发期权。副总裁直接给我争取了总监级别的期权,并且很快让我担任技术经理。
在360,我完成了从技术骨干到二级管理者的跨越。技术骨干其实相对单纯,比如3q大战的连续通宵编码,和腾讯打攻防。
从技术骨干跨越到一级管理者,有三点最重要的改变:
团队贡献者思维替代个人贡献者思维深耕技术的同时,熟悉业务,了解产品和商业从管理自己到管理他人的跨越,开始教练员工和提拔骨干员工一级管理者跨越到二级管理者也说三点:
深刻理解商业、业务、产品,并开始用技术驱动业务时间管理上,放更多时间在重要且不紧急的事情从管理他人到管理经理的跨越,技术视野更开阔,对其他职能的了解更深入在360还有个很重要的心得:「技术驱动生产力的进步」:
中国最快的远程控制软件
在360周鸿祎要求我们要把远程控制做到极致的快,于是我们开始自研远程控制软件,从各种角度出发去提升远控的速度,技术角度挖掘完了,我们就从产品流程角度去创新:

(360远控软件的优化方案)
这个方案,是产品和技术的深度结合。传统远控软件是传整个用户界面到云端,我们把用户界面等分成36块,每个小区域产生改变才上传这个方案结合图片压缩传输优化,我们的远程控制软件的控制速度做到了行业第一,实现了单点突破,形成用户口碑,进而击败竞争对手。
AI替代人力提升10倍运营效率
我们在分析电脑专家给用户远程修电脑的工作场景得出一个重要结论:90%的远程控制工作可由自动化方案解决(AI远控操作)。随后,我们研发了一套和AI结合的远程修电脑的方案。
通过技术实现自动化方案,首先通过AI自动回复及分析,拦截50%无效用户问题。真正需要远程介入的用户问题分配给电脑专家后,先自动分析用户电脑情况,运行自动化AI程序。只有当用户感觉电脑没被处理好,按下求助键,这个时候才真正让电脑专家介入。
这样一套解决方案,直接让我们的电脑专家每天处理的用户量提升了10倍。也就意味着原本需要500人的团队,一下只需要50人。这套系统给公司节约了巨额的运营成本。
(我们研发的远控自动系统架构示意图)技术和商业、产品、业务深度结合所产生的巨大推动力,是难以估量的。这也是技术人最值得骄傲和自豪的点。
9.创业做手游
2015年,深感360已经成长为一家巨头公司,而我依然是创业者的工作方法,这种工作方法和一个成建制的组织格格不入,我也开始各种不适应。
这之后我决心创业,说干就干,很快离职拿到500万天使投资,组建团队开启游戏研发,很快我们研发出一款画质、流畅度都非常高的2D卡牌对战游戏:《死神Q传》:

虽然创业做了CEO,公司有20多个员工,编程依然是我的热爱,技术攻坚我依然冲在最前面。
这期间我们尝试过2D手游、2D对战游戏、3D格斗游戏,无奈最后惜败,这段经历大家可以看看我的这篇文章:一个价值10亿的教训。
这期间,错过了巨大机遇后,公司要转3D研发,从没接触过Unity 3D的我,依然冲在最前面。找专家咨询、自学,一时间又是997的节奏。
当我们的第一款3D格斗游戏demo跑起来的时候,那种荷尔蒙的感觉再度袭来!
手游创业随着风口和环境的变化,最终失败,2016年底我将公司出售给一家金融巨头。而直到今天,曾经建的《死神Q传》玩家群还有人在问这款优质游戏为什么要关闭?很无奈,从某种意义上来说,我征服了代码却无法征服商业。
10.第二次创业
2017年年底,和赶集网创始人之一的刘洋一起合伙创业(赶集网40亿美金出售给58,这位大佬已经财富自由),融资一亿,做少儿在线教育。刘洋要求产品在1个月内上线,彼时我带着10来个技术快速攻坚,基本住在办公区。
直播系统(第一版非自研)、教务系统、教学系统、一个小的CRM系统、网站等等,这么多系统,时间就只有1个月。还记得出来创业的时候已经临近过年,只好放弃休假,大年30都在编码。
最后,我们真的在一个月把公司的产品做上线了,2018年年初,第一个用户付费使用我们服务,那一刻真的是开心无比。
这一次创业我们可谓是兵强马壮,但很遗憾因为各种问题依然惜败。
这次失败之后,我认识到创业成功真的是一个小概率事件。
11.担任独角兽公司VP
18年我加入哒哒少儿英语,担任技术VP和创新事业部总经理。在哒哒少儿英语,我完成了二级管理者到三四级管理者的跨越,第一次开始带接近100人的团队。
上任的第一件事就是参与重构整个公司的架构,深入了解了下,我们首先把公司当时的架构画出来了,简单点说就是个大泥球架构:

这家公司的数据库是单库模式,一张表就有几百个字段,简直搞死人。
当时公司已经惨到只要改一个功能就得测试2周的悲惨境地,线上出一个故障技术团队更是惶惶不可终日。
耗时2周我们才完成第一步:深入了解了这个大泥球和对应支撑的业务。
接下来耗时1个月,采用ddd领域设计:

在充分了解业务之后,基于领域模型,我们做了对业务的拆解:

接下来我们最终确定了新架构的六大关键元素:
前端业务模块支撑业务模块核心业务模块中台服务模块平台服务模块基础架构模块基于领域模型的拆解,我们还确定了六大关键元素之间的并列、包含、支撑关系。
然后我们设计出了新的架构:

以上,是我们确定的公司的新的技术架构图,紧接着团队攻坚3个月,按照架构图的设想重构了公司的技术框架。
重构完成后,公司的程序员们再也不用为了一个bug拔光自己的胡子了。
完成重构后,老板指派了一个新任务:负责dadababy业务,从这个任务开始,我从一个技术管理者步入了业务管理者的行业。
12.第三次技术创业
创业的确是一件可以让人上瘾的事情,在哒哒工作了一年多之后,这个心瘾又开始折磨我了。
在一个好友的推荐下,认识了土豆教育CEO,在对方的热情邀请下,我加入了这家只有200人的公司,担任CTO。
加入团队后首先重组了产品技术设计团队,引入了数名非常优秀的小伙伴。其中有几个产品技术小伙伴,放到上市公司都能到总监级别。
其次,参与公司战略制定,并根据公司战略制定产品的战略和打法,明确了未来3个月,半年,一年的产品目标。
再次,梳理了产研流程,搭建了敏捷研发及发布体系,工具的使用,推动团队数据驱动思维的转变。
进公司发现团队已经在使用微服务架构,基本属于一个子功能一个微服务,服务端团队没多少人,微服务倒是有几十个。这半年,我们砍掉及合并了10来个无用的微服务,并从业务角度重构了我们的服务架构。
服务重构前:

服务重构后:

重构主要解决了以下问题:
服务耦合,通用服务没有抽离服务分的太多,服务治理及维护成本高用户服务没有统一的入口,管理混乱分层混乱,没有面向业务的分层思想重构后的服务体系应该能支撑公司业务后续2年的发展。并且我们是在优先支撑业务需求的前提下做完整个服务重构。
我们的大刀阔斧最终在C端产生巨大效果,实现用户量扩大10倍,公司内部的支撑产品也走向正轨。
这次创业的前半段非常顺利,公司产研运营体系在我的推动下日趋完善,公司的业绩也突飞猛进。
以上就是我写十三年程序的感受,这是一个老码农的倔强,但代码世界的乐趣真的只有程序员才懂。
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-02-15
2022-02-14