前言

张云龙老师于2018年5月19日在「FDCON2018中国前端开发者千人峰会」上的发言。作为走在前端工程化前列,现任全民直播CTO的张云龙老师,分享了他的个人成长之路,希望能够在前端职业规划上,给大家一些参考和启发。

关于张云龙

大家好,我是云龙,从2016年3月份开始,我参与到全民直播这个创业项目中,这两年一直在上海。关于我自己的成长历程,一直都很想找个时间跟前端的开发者们分享一下。通过剖析别人,也可以总结自己。我很害怕把这个主题讲的跟成功学一样,其实CTO这个职位现在多少有点“烂大街”,不算是什么成功,仅供参考。

我是2010年毕业的,刚毕业即加入百度,当年我毕业的时候同一批入职的人后来成立一个微信群,那个群在8年后的今天,我们还会一起扯皮闲聊,分享彼此的际遇。我发现它可以作为参考 —— 8年前一群有着相同能力,相同起点的人,在8年之间因为做出不同的选择,最后达成了不同的人生。有的创业,有的在大公司做高管,有的炒比特币财富自由。参考他们的选择会让你有一些感悟: “如果当初我选择了那样,我现在会怎么样”。我现在经历了职业生涯8年的时间,也想把自己的经历作为一个案例,分享给大家。

我面试过许多前端工程师,发现大家在工作了3-4年的时候会遇到一个迷茫期,我问他们你们接下来想做什么,大多数人回答说想做一个开源项目,并且推广开来,成为前端“网红”,更长远的职业发展规划往往考虑的很少。

今天,我希望把自己的工作经历完全拆解开呈现在大家面前,作为一个案例解答有关职业发展的困扰。

我把整个职业生涯分三个阶段:
第一阶段,一技之长。就是深耕你的专业技能,你的专业技术。
第二阶段,独立做事。当你的一技之长达到一定深度的时候,需要开始思考如何独立做事。
第三阶段,拥有事业。选择一份使命,带领团队实现它。

程序员的中年危机

程序员的中年危机,我今年33岁,虽然有技术傍身,但是难免会有一些焦虑,这种焦虑来自对自己的能力质疑。在大公司的那些年,背靠大平台,做出的成绩80%是平台赋予我的,它有健全的体系,有优秀的同事,有完善的职级制度,还有优厚的薪资待遇。你在这样舒适的环境下做那么一小块事情,如果有一天你发现你这20%可以被替代的时候,这家公司会怎么思考?你有很多股票,开很高的工资,对于公司来说,你的成本很高,在新人的推动下,你会产生一种可被替代的压力,我大概在28岁,29岁技术水平还在上升期的时候就有这种焦虑。

在大公司那些年,我感觉自己还像一个没毕业的学生,始终没有脱离“学生气”,无论说话做事都有这种感觉。其次技术的更新迭代速度特别快,尤其是前端领域,你会发现很少有能真正沉淀下来的东西。第三个焦虑点就是关于企业如何对待35岁以上员工,我当时在百度的时候团队有一个非常厉害的工程师,他在2010年技术职级很高,但技术思维还停留在上一个时代,随着技术的发展,渐渐不能指引团队进步,那个过程比较艰难,对我触动很大。最后一点,就是随着年龄的增长,选择的成本会越来越高,你会有家庭,即便公司觉得你没有价值,你也不能走了,走不动了。这些触动了我,开始要去思考。

我们做技术,尤其是前端,很多时候我们做出的产品,看到的都是UI设计,交互设计 ,产品设计,即便我们做的产品非常成功,成功点在哪儿?可能是UI设计得漂亮,也可能是推荐算法精确,而前端的产出给产品带来了什么?还有前端技术深要深到什么程度?做久了技术就必须要转型管理吗?这些问题我当年没有答案,我可以坚持不懈得写页面,但是这个事情做5年,6年,10年不还是一样吗?现在我能做什么?未来我想做什么?

带着这些疑问,用8年时间我走了3个城市,从北京、到广州,在到上海,在职业道路上寻求答案。

最开始的3年我在北京,那个时候刚毕业,还不能决定自己的未来,加入百度算是比较运气。当时花了些精力准备一份漂亮的简历,这件事对我找工作帮助很大。在学校的时候,基本上对前端这块已经非常熟悉了,我的简历非常漂亮。最开始刚毕业的时候选择工作,简历会成为一个好门面。我把当时自己在前端的方向、学习深入的点,都花精力体现在简历上,当时在大公司招聘的时候已经占了一些优势,很荣幸的是被百度接收了。在百度三年时间里面,主要深入的在做技术。当时百度有一个很大的前端团队,一百多人,包括百度新闻,百度视频,百度知道,百度百科等等,整个团队为了解决开发效率问题,决定成立一个横向支撑的小组,做一款构建工具,就是fis,我当时还在CMS部门(一个内部的内容管理系统),主动提出参与到fis项目中。做fis的过程让我学到了很多服务端技术,包括运维知识。在百度工作3年后,开始想着开始去脱离这个平台80%的支撑,我当时认为UC是一个中型的创业公司,我过去待了两年多,那个时候开始关注前端团队建设。把我在百度学习到的技术理念在UC结合nodejs重新实践一遍,其次是指导前端团队提高他们整体的技术水平。在广州UC工作2年后,来到了上海,参与全民直播这个项目。做全民直播的整个过程经历了比较多的坎坷,我最开始接手全民的时候,仅有两个全民自己招聘的研发同学,经过2年多的时间,组建了将近一百人的团队,包括服务端,前端,客户端,测试,运维,编解码,大数据等部门,感觉在上海这两年的成长,比前面在大公司所有5年的加起来还多。

过去走过了一个这样的路线: 大型公司→中型公司→创业公司。专注的事情从技术到团队再到业务。今天我重点跟大家分享我总结的成长历程,当你后面工作到一定年限,碰到困惑的时候,可以拿这个模型参考一下,也算是一个方向。当然,这不是唯一的成长路线。

第一阶段

(1)一技之长

我把它分成五个层次:栈内技术、栈外技术、工程经验、带人做事、业界发声。所谓栈内技术,是指你的专业领域技术,对于前端工程师来说,就是那些我们熟悉的JS、CSS、HTML等基础,深入了解我们的程序所运行的宿主环境——浏览器,能掌握并灵活操纵在浏览器内发生的一切。前端没有秘密,所有可访问的页面都近似于开源,所以检验栈内技术的标准就是看你是否能最终形成技术上的“写轮眼”——那种看到任何前端产品都有能独立复刻和洞察它的自信。

(2)栈内技术是安身立命的根本,不要轻易“换方向”

虽然我现在在做技术管理,但始终不会放弃我作为前端这个一技之长的根本。遇到一些前端同学工作几年以后前端做得比较熟了,考虑转行到其他岗位。但是我想说,当你转行那一刻起,就把要转的领域变成了你新的“栈内技术”,然后又要重新走一遍技术沉淀的过程,匆匆几年,又过去了,所以不要轻易“换方向”,前端绝对是可以长时间坚持的领域,现在新型的软件生态,无论是小程序,快应用,甚至区块链,都会首先瞄准JS开发者,因为有庞大的开发者群体,工具链也比较完善,所以长期坚持从事前端工作,在可预见的未来都不会“过时”。

(3)栈外技术

指栈内技术的上下游,领域外的相关专业知识,包括但不限于服务端技术、运维、CDN、测试,甚至UI设计、产品设计等等,扩展你栈内技术的周围领域,充分理解你的工作在整个技术研发体系中处于怎样的环节。工作之余多投入一份精力,把其他栈外技术不断纳入到你的知识体系中来,建立栈外能力。前端想要做的深入,往往会涉及到缓存、模板渲染、用户体验等知识,没有相当的栈外技术积累,你很难为自己的团队争取到足够的话语权。

我个人非常推崇“大前端”的概念,有点类似“全栈工程师”,但不是要求一个人全面专家,而是以前端为根,展开上下游的栈外技术学习,一专多能。我能在全民做到CTO的角色,也得益于早年在百度和UC积累的栈外技术经验,了解两家公司大部分产品线的运维和架构体系。

(4)工程经验

指建设专业技术体系的“解决方案”,通俗的说,就是做事的“套路”,掌握从0到1,1到60,甚至60到100分阶段建设专业技术体系的过程。工程经验涉及到技术选型、架构设计、性能优化,CI/CD,日志监控、系统测试等,这些是跟工程相关的方法论。很多的工程师没有总结自己工程经验的能力,我面试经常会问,你们觉得自己工作了两年、三年、四年和刚毕业的学生有什么差别?面试者说掌握了某某技术,但其实往往说的只是一些知识点。那些“今晚查完明天就会了的”不叫技术。决定你比别人更有专业价值的,其实是领域工程经验。你看过再多的文章也没有用,没真正实操过都不能称之为“掌握”。所以我建议要想掌握足够丰富的
工程经验,需要在业务中多争取实践的机会。
工程经验才是技术水平的分水岭。

(5)带人做事

之前三项都是个人专业技能方面的深度要求,带人做事是对团队协作能力的要求。我以前非常不理解一件事情,就是我自己明明做的很好,来了一个新人不能get到我的要求,怎么办?非常着急的时候,我说你别做了,我来吧。更有甚者,早年间在百度工作的时候,有同事白天辛辛苦苦写好的代码,晚上我code review之后直接给重构掉了,没过几天那位同学就提了离职。带人做事,是把自己擅长的事情,良好的习惯传递给他人,实现1+1>2的生产力提升,让整个团队的产出高于自己。另外,这个阶段大家要特别注意『管』与『带』的区别。所谓『管』是”我不懂某个领域,但我知道你懂,你必须给我做好”,而『带』则是”我特别懂这个领域,我知道你不懂,我要教你做得更好”。有点授之以渔,甘当人梯,成就他人的意味。带好一个人或者带起一支有战斗力的团队,是做人做事成熟的表现。

对技术有洁癖的人,往往缺乏耐心,带人容易走极端,如何引导新人成长,激发他人的能力,也是我在职业发展过程中要寻求的问题。管理上有一个特别好的方法,就是善于启发式的提问。提问的深度特别能体现一个人的能力水平,任何用于提要求的陈述句,都能转换成疑问句,在启发萌新的过程中植入对结果的约束。举一个例子,我想要老板给我加薪,如果直接说:『老板,我要加薪』,估计十之八九会被搪塞过去,但是转换一下,先问问『老板,我最近工作怎么样?』启发上司思考你的工作成果,引导他得出你应该被嘉奖的结论,或许是个不错的话术。当你让一个人做A的时候,他提出了方案B。你不要强行扭转对方的思路提出A,因为对于新人来讲,或许确实不能一步到位理解A方案,在他的能力约束下,只能想到B。你带人呢,要尽量尝试把A和B之间有差异的地方转换成提问,你问他遇到这个问题怎么解决,遇到那个问题怎么解决,一直问到形成A,他会带着思考去做事情。如果没有这个过程,没有让他思维演化的过程,虽然他收到了A的指令,但是他不理解,他会用别的方式做出来,最后得出来一个C,然后你又重构一遍,陷入一个怪圈不能自拔,这就是我以前的误区,所以我现在特别注重提问的艺术。

(6)业界发声

如果你前面做的非常好,基本上到了可以对外发声的程度。把自己的工作经验总结对外发布,与他人交流,碰撞思想,看到更高的山峰,然后修正自己的想法,日臻完善,是能走得更远的一种方式。有的时候真的要把自己的思想放到业界的层面验证它,自嗨有毒,大家好才是真的好。如果别人不认可你的这套思路,你的想法,基本上你也可以判定为自己没有达到一个更高的水平。不过通过业界发声获得认可,往往需要机会,可遇不可求,得之我幸,失之我命,这也和你所在的公司平台有关。在我技术声誉成长最快的地方就是在百度那几年,刚好一个大平台,做出一点成绩,但是小型创业公司出来分享,基本上没有人理你。永远不要放弃一技之长,没有所谓的转行或者转型,永远坚持你最初的领域,扩充你的外延,最终达成比较全面的能力,所以一技之长是值得你长期信仰的。

第二阶段

(1)独立做事
独立做事也有几个层次:独立Coding:给你一个目标自己做完,不让别人给你擦屁股就可以了。

(2)独立带人
要注重提问的水平,帮助他演进他的想法。

(3)独立带团队
进入到这个阶段,要关注的更多,整个团队的氛围、工作效率,运用你一技之长的工程经验带领团队高效优质的产出成果,实现1+1>2。

(4)独立做业务
团队稳定之后,开始关注所做的业务,行业的发展,理解你的用户,他们是谁,他们在哪,他们为什么使用你的产品,为团队指引下一步的产研方向。

(5)独立生存
独立做事的最高水平,就是能带领一群人养活自己,独立生存下来。互联网的商业模型只有有限的那么几种,深谙其中的玩法,寻找擅长的合适的模型养活一群小伙伴,意味着一次更大的蜕变。

独立做事每个阶段,都是一次比较大的跨越,需要思想和多种软素质发生较大的变化,抛开技术人的身份不讲,独立做事的几个阶段,也是一个人逐渐成熟的过程,这是我过去2年多以来一直探求的结果。

怎么决定一个人的薪资、奖金、期权?

薪资是一个人的未来能带来的收益的考量,它是一个市场价值,一个人不管来这家公司做出多少业绩,他达到这个水平,就要给他薪资;奖金是做出业绩的回报,是一个人过去做过的事情的价值衡量;最后一个是期权,如果这个人这家公司充满希望,你可以用一部分的薪资奖金兑换成期权,降低公司的成本。这是三者的关系。充分理解薪资、奖金、期权的关系,是一个CTO要关注的事,有助于建设良好团队氛围。

如何建设好团队工作氛围?

除了前面说到的待遇问题,还有很多举措可以用于建设良好的团队氛围。我是偏理性的管理者,我基本上不太会用个人关系,比如天天吃饭来去维护这个,我比较认可通过完善的机制,完善的规范来建设公平的环境,带领好的氛围。另外,好的氛围的根本,取决于业务,业务不向上,基本上你怎么做都是不好的氛围。
再就是是不是技术做不下去的就要转管理?我觉得没有所谓的转管理,这个过程对我来说,只是在寻找独立做事的能力,最后怀揣着使命感,要达成梦想,是这样的过程。

技术型人才是不是都不适合做管理?

我曾经也有这样的怀疑,后来自己带团队,经历了一些事情,慢慢了解到,每个人都会形成自己的管理风格,没有适不适合的问题。管理上不是有个『五型管理风格』吗?老虎型、考拉型、孔雀型、猫头鹰型、变色龙型,这五种,没有谁好谁坏,只是不同的风格会带来不同的团队氛围。我估计很多技术同学刚开始带团队的时候都是老虎型。

刚毕业的人应该去大公司还是去创业公司?

我觉得经历大公司很有必要,因为去到大公司,你会了解到『好是什么好』,我现在能做到这个位置,一定程度上得益于曾经在B和A的工作经历,大概知道一个团队如何从1发展到60,再从60到100。经历过大公司,知道了好是什么好,才有足够的视野和
高度指引团队走下去。

这一点我发现创业的时候一定要先做后学。2年多前,我一个朋友有一天问我,『云龙,我要做个易企秀那样的平台需要多少成本?』,我说认识一个朋友,他们大概需要二三十人的团队做两三个月,可能需要两三百万的资金吧,他说这么高的成本,就不理我了。过了两天来找我,说搞定了,我很诧异,问他怎么解决的,他说在淘宝上买的,一套代码,100多人民币,还带大量模板。这件事给我很大冲击,当你做技术决策的时候,尤其是创业公司,千万要先想到行业里面有什么可以直接用的,用公司的资
源置换也好,商务采购也好,拿过来先用,用完以后再组团队去学,学完以后形成自己的一套东西,是这样的过程。

如何体现技术团队的价值

如果一个公司都是产品设计运营做的好,我们怎么知道是技术做的好,这是一个技术管理者要非常清楚的要点,才能让团队有方向可以遵循。

这里我大概总结了3个要点:技术产品质量、开发效率和体验性能。

这里有一张漫画,当线上服务一切正常时,老板回想『一切风平浪静,真不知道我要雇这群研发干什么』,而当线上出现事故,老板又会想『成天出问题,真不知道雇你们这群研发干什么』,这种现象其实很普遍,技术产品质量是基础,稳定压倒一切。其次能体现技术价值的就是在稳定的基础上,提升开发效率,快速迭代,快速上线,小步快跑。但做到以上两点,只是基本满足业务要求而已,不被诟病,但要进一步体现技术的价值,就要在性能上做文章了。右图是亚马逊提出的一个概念,网站打开速度每降低0.1秒,网站就能多增加1%的收益,优秀的团队需要在业务核心性能指标上下功夫,突破秒级的打开速度。

从前端到CTO——程序员的成长之路相关推荐

  1. 测试/开发程序员的成长之路,未来是你们的......

    目录:导读 前言 一.Python编程入门到精通 二.接口自动化项目实战 三.Web自动化项目实战 四.App自动化项目实战 五.一线大厂简历 六.测试开发DevOps体系 七.常用自动化测试工具 八 ...

  2. 菜鸟程序员的成长之路(二)——时间都去哪儿了

    距离我的上篇博客菜鸟程序员的成长之路(一)已经过去六个月的时间,又到了总结收获的季节.在漫长的六个月里,发生的了很多的事.残存在大脑中的记忆(不是脑残),已经不能将我带回到去年的九月份,想问自己一句: ...

  3. 顶级程序员的成长之路2

    如果把程序员编程水平的修炼比作游戏中的"打怪升级之旅",那么程序员的水平就会随着不停的"打怪"而不断升级.程序员的水平有哪些等级呢?哈哈,如果人为地将程序员的水 ...

  4. 顶级程序员的成长之路1

    本文关注的问题是程序员的水平究竟应该按照什么样的不同层级而逐渐提高?或者说,在学习编程的过程中,每一个阶段究竟应当设定什么样的目标才比较合理?本文的内容主要借鉴了周伟明先生的专栏文章<程序员的十 ...

  5. 菜鸟程序员的成长之路:Python四大进阶攻略

    随着人工智能的发展与应用,Python编程语言受到世界各界人士的关注,编程圈金句从"人生苦短,我学Python"转变成了"学完 Python,可以上天",Pyt ...

  6. 菜鸟程序员的成长之路(一)——菜鸟程序员起步

    看到标题之后,突然想起一句文的话:白驹过隙,时光荏苒.每当看到这么有文采的话,总觉得有点酸,再酸我也用*^◎^*. 9月开学季,大家陆续返校,让我想起了三年前自己带着新奇与憧憬步入大学,大学对我来说一 ...

  7. 张云龙-一个程序员的成长之路 - 剖析别人,总结自己

    张云龙- 全民直播-CTO 张云龙老师于2018年5月19日在「FDCON2018中国前端开发者千人峰会」上的发言.作为走在前端工程化前列,现任全民直播CTO的张云龙老师,分享了他的个人成长之路,希望 ...

  8. 迅雷程序员的成长之路

     1. 对今年的技术背景的毕业生,有什么校招的建议?例如笔试.面试的方法,注意什么? 敬宓:校招主要是重视基础. 2. 自己作为技术路线的应聘者,在校招时候,是如何选择第一份工作的?考虑过什么因素 ...

  9. 一流程序员的成长之路

    现在网上流传着35岁以后的程序员就没有公司要了,程序员变成了青春饭,这完全就是一种对程序员职业的表面理解.造成这种情况发生的原因就是一部分的天才程序员让编程变得越来越简单,让编程变得大众化了,这种编程 ...

最新文章

  1. ks检验正态分布结果_统计学里的数据正态性检验
  2. 华为java 优招面试题_2017华为优招笔试题
  3. 数据结构上机实践第四周项目4 - 建设双链表算法库
  4. ARM处理器是有益补充
  5. 什么是自动化测试?为什么要自动化测试?怎么做?
  6. python设置多级标题_Mac Office Word设置多级标题
  7. fisher判别分析原理+python实现
  8. ShowWindow函数用法。
  9. 西瓜视频中视频计划还有机会吗?
  10. Python读取指定文件夹中的所有图片并保存
  11. 利用栈进行数制转换和括号匹配(C语言)
  12. ArcGIS中利用DEM数据生成地形图既视感的等高线;利用掩膜进行等高线注记;DEM的可视化表达总结
  13. 一个小小的互联网创业狗的自白
  14. 赫兹Hertz重新上市:转道纳斯达克挂牌,租车行业重现光辉?
  15. XY轴控制板,料盒控制板,水路流量控制板,直流电机控制方案和程序代码
  16. 找回Windows XP 815主板下的160G硬盘
  17. 西门子收购家庭娱乐软件供应商Myrio【ZZ】
  18. JMeter常见错误解决方法—你知道几种
  19. 腾讯QQ/TM珊瑚虫外挂 2.3.4 QQ IP数据库
  20. 让每个人都能轻松上手的私有云:极空间Z4/Z2首发上市

热门文章

  1. Iterator中的Itr类(ArrayList)
  2. 小米九月十五升级鸿蒙系统,小米手机鸿蒙系统申请升级刷机包-小米手机鸿蒙系统申请平台预约v1.0.0预约-七度网...
  3. Doxygen常用命令
  4. oracle 去重效率最高,oracle去重整理
  5. 会员营销需要知道的6个关键
  6. latex模板摘要目录标题字号
  7. 切换器改变Linux分辨率,KVM切换器屏幕分辨率问题
  8. java第二作业 手动输入数赋值给数组 求最大值最小值 ,,,,,,输入一个数字 插如数组里 并且保持降序
  9. 1.9 项目的特征——案例:三峡工程
  10. win10计算机更新后网络卡,升级win10正式版后电脑很卡怎么解决?