warmhug

技术成长、工作感悟、教训反思

全栈转型

一年多前,经过我们部门老大推动、从CTO层面确认下来要让后端业务开发同学走「全栈」之路,即学前端、然后自己把业务的前端部分也能搞定。我们作为专业的前端部门,便承担了输出易用的前端技术框架、培训和辅导后端全栈人员的责任。这一年下来,培养出了不少能写前端的全栈同学,许多前端辅导员(辅导员是在业务中手把手教后端同学写前端的专业前端同学)按照我们老大的计划和安排、也刚好伴随着新的财年开始,便彻底从业务线上撤出来,转而参与到输出前端技术框架工具或做部门自己的产品中来。

表面上看,这个事情是让后端开发同学去做全栈、学前端,但个人觉得其实这对他们来说变化并不大、只是让他们比以前更重视前端技术而已。因为后端同学相对前端同学的技术基本功一般都更扎实一些、原有的技能也更全面一些、多学一点前端技术并非难事。另外最重要的是、他们的工作重点和长远职业发展计划等基本上都不会因此改变。 这个让后端同学去全栈的过程、感觉最大的影响还是在前端同学自身上:即 要让前端转型!

我们知道传统的情况是:一个专业前端一般要支持多个业务,但在业务中只负责比较薄的表现层、不能深入,所以一般都不会是某个业务的owner、而通常都是被业务方当做资源借来支持下、完了还回去。

所以,如果前端脱离了业务线、不再被拿去支持别人的业务,这样就像老大说的、摆脱了「发展的困境」。但是否这只是走出了一个困境,却进入了另一个更不确定的困境?首先是必须要改变原本的发展计划,去重新规划以后的发展路径,这里也不妨分析下个中情况:

  1. 前端去支持别人的业务一定是坏事吗?恐怕不一定,因为在业务里你能接触到更多的人、用心的话也能学到更多其他技能。
  2. 不支持业务了、首先别人就可能“不再”认为你是前端,但假如你还是一直继续做着这一层比较狭窄的前端工作(哪怕是把前端技术做的更专业),你的价值恐怕并不会被人特别认可,再长远点说你的发展前景会宽阔顺利吗?
  3. 不支持业务、也不只盯着前端技术,而是去做更广泛的技术。常见的可能会做些客户端相关的技术,如现在很火的 React-Native;偏向后端一点的,常见的会做 Node.js;主要是因为这两者都和前端的 js 语言相关性比较大、前端同学相对比较容易切入。个人对这两者的看法:前者虽然出来不久但目前感觉前景还不错,不过问题是终端相关技术共同的特点是挑战和难度都并不大、即可替代性较强;而后者、即拿 Node.js 去做正式的服务端编程、感觉完全就是个“鸡肋”做法、或者最多能当个小配角,毕竟有几十年积淀的各类服务器端技术以及它们形成的巨大的生态绝对不是那么容易能挑战的。还有做其他的技术:如页游;还如数据可视化相关的更专业的技术;还有运维相关的,像很火的 docker;还有最近一年热起来的 VR/AR 技术也吸引不少前端同学。
  4. 不支持业务、也不想再持续深入做技术,转而去做产品。但在前端部门里做产品真的好吗?既然喜欢做产品,为什么不转到专业的产品团队、做更加专业的产品?不该这样做吗?或者是怕失去优势吗?
  5. 业务、技术、产品都不深入去做,直接找机会做管理。这条路想走的好比较难、需要不错的机遇,但个人觉得其实这条路是非常多的人想要走的。我们不少技术人内心其实并不真爱技术,可能是冲着诱人的收入或是因为不知道做什么或是机缘巧合无奈走上技术路而已,所以内心会认为技术本身不是重点、只是借它解决其他问题罢了。还有一个原因是在目前国内环境里,一直做技术是很难有更大发展空间的,一般技术搞搞几年,升为团队leader或做产品的PM,这样就转到技术管理或纯管理去了,这比纯做技术会更容易晋升。只搞几年技术就急着伺机转管理、大概也因此造就了这样一个结果:国内很少有引领业界的突破性技术成果,只能一直追着国外技术潮流。

以上说的一些转型路径,都是实际出现在周围同事们身上的,这些对自己来说是宝贵的实例参考。那么自己做了些什么呢?

随着后端同学全栈的推进、做为仍然在一直做着纯前端技术的自己、觉得不能再一直这样了。于是这一年里看了不少“杂书”,包括 JAVA后端、数据库、安全、人工智能等,也包括一些非技术方面如管理、沟通等。但除了做了个基于别人提出的新的前后端交互 API 架构的 Java 版 demo 之外,其他的东西大多看过即忘、或者只是能看懂或了解、缺乏实战机会。

但回头想想、做到这样感觉已经不容易了,在这个广泛学习的过程里深刻感到了 人的精力和时间确实是有限的 而且 也很难会勇敢抛掉自己的已有技能,全心投入到新的领域中去 。更麻烦的一点是你很难会非常肯定地说我就是要转到这个或那个领域,而是会不断问 自己的初心是什么? 要不断的说服自己、少一些患得患失、尽早下定决心去改变。

全栈转型的路有千万条,但作为技能领域窄、见识不是很广的前端,该怎么顺利地转型呢?

的确术业有专攻、谁也不可能能掌握所有技能。有人说: 拥有全栈思维,换位思考能力,去全链路考虑问题 即是全栈。但一个产品全链路上有很多工作:产品设计、交互视觉、前后端技术、数据库层面、网络层面、系统性能等等,这些需要各方面专业人才一起合作才能搞定。其中的每一个专业人才都只能了解与自己相关的一两块东西而已,他们就没法做到换位思考、全链路思考问题的。。那么谁能做到呢?我觉得是产品经理或产品技术总负责人,虽然产品经理可能对各种技术都不精通、技术总负责人也可能仅仅只是精通产品的核心技术,但很重要的一点,他们是产品的真正 owner (虽然说团队其他所有人都该有 owner 意识),他们就有充分动力找各方了解各种情况、甚至学习各种技能,来保证做出好产品。

所以,如果你内心愿意或你的工作性质决定你要一直专注于某项技能:比如前端或数据库,那或许就不可能做到全链路考虑问题,因为你一直太专注所以不知道的东西太多了、你的思维也受限了、虽然可能你并没有真切意识到。

the problem with specialization is that it narrows your attention to the point where all you know about and all you want to know about.

思维受限能直接导致创新力不足。比如近几年前端热点技术 Angular.js,React.js,GraphQL(发源自 Facebook 已经开发了好几年的 graph API) 等的作者都不是纯做前端的,而众多的纯前端专家们却没有一个做出类似有大的变革性的技术来。

太专注、思维受限产生的问题,应该不仅只是在技术上,非技术上如产品灵感、甚至生活上都会有很大的负面影响。反过来虽然不能一直太专注,但必须要先有某一方面的专长,不然做什么都是蜻蜓点水一样、也就什么都难做好。

所以想转型就先去:扩展自己的技能,而不要一直太专注


April 23, 2016 | by warmhug | other