一个后端程序员的前端之路协作篇

3,925 阅读5分钟
原文链接: mp.weixin.qq.com

此篇将是该系列的终章。

也许软件开发中最难的部分并不是软件开发本身,而是沟通和协作,前端和设计师、产品经理和程序员、前端和后端、老板和产品经理、测试和程序员,想要高质量的实现需求,沟通最多的往往都是程序员。程序员木讷不爱说话?这里一定有误会。

今天我们一起来扯扯后端和前端协作的淡。

套路

现实中,很多公司都会按照职能的不同把程序员划分成前端、后端、客户端等不同角色,后端负责实现数据业务逻辑,提供 api 供前端和客户端调用,前端和客户端通过 api 调用实现 ui 的数据交互。

为什么要按这样的套路分?

  1. 一个人很难做到前端、后端都懂,而且水准达到专业级别。

  2. 基于第一点,大多数公司招人不会要求你既懂前端又懂后端

  3. 基于第二点,大多数公司的团队中程序员的岗都只负责一端

  4. 基于第三点,协作不可避免了,因为前端不懂后端,后端不懂前端

协作带来的问题是什么?

  1. 沟通成本上升

    这世界上还有比两个人扯来扯去都不知道对方在扯什么更浪费生命的东西么,我想没有了。和一个认知不在同一领域甚至是不在同一水平的人沟通就会带来这样的问题,鸡同鸭讲,但是大家好像都乐意,因为开个会之后…很快就到下班时间了。

  2. 谁该妥协

    数据是该放到后端组织还是前端组织,这样的问题在前后端协作中真的是不胜枚举了。有时候数据就是应该前端组织,但是前端不干,有时候数据就是应该后端组织,但是后端不干,有时候数据放到前后端都可以,但是前后端都不干。怎么办?打一架吧,我经常这样说。

  3. 步调难以一致,任务切换频繁

    有些很诡异的问题,是需要前后端通力合作的,后端要控制输出,前端要控制展示。前端做好了,可能要等等后端,前端不能干等,于是前端的 CPU 发生一次任务切换,后端做好了通知前端,前端的 CPU 再把刚才 resume 的任务 rewake,把任务状态从内存(大脑)中恢复过来。任务的切换都是需要花费时间的,而且占用计算资源。 这种事,前后端反过来也一样。

  4. 其实还有很多...

既然这个套路很有问题,为什么很多团队还是要用这个套路。原因也许很多,最重要一点通晓前后端的人才难觅。

成长最需要什么?认知的改变,认知改变带来思维的转变,思维转变带来行动的改变,无论是个人还是团队,改变这个套路的现状很难,并不表示没有改变的可能,团队的改变必然会带来利益的牺牲,甚至短暂的效率下降,个人改变会带来强烈的阵痛,但是一切都是暂时的。

老司机带你上路,改变并不难

之所以你只是个前端或者后端,那是因为你身边肯定有一个后端或前端,跟着老司机学习和自学相比就像是1000 万的学区和 200 万学区对比,老司机可以带着你轻松跨过很多坑,少走很多弯路。

在 wecatch, 龙哥(客户端程序员)是被我带入后端的,落在深海(前端程序员)是被龙哥带入 IOS 的,我(后端程序员)带着落在深海写 Python,落在深海带着我前端。

Learn by doing

边学边做,既然是工作一般没有很多时间让你去学一个完全新的东西,这样边做边学,边学边做。

  1. 从小项目开始

    小项目能够很快完成并且能得到及时反馈,可以有效降低新手受挫的可能性,即使完不成让更专业的同学救火也完全来得及。

  2. 从没有复杂 UI 交互的项目开始

    后端学前端最怕的是写 CSS 和 动态特效,如果可以完全借助 framework 来实现各种功能能够迅速降低入门的门槛。

  3. 从内部项目开始

    内部项目对性能、体验、bug 率都有一定程度的容忍度,因而只要能有人把好关,新手完全可以大胆实践,不怕犯错。

二者都学,到什么程度为止

任何一项技能,唯有深入持续的研究学习才有大成,既学前端又学后端对于大部分人来说都很难做到样样精通,此时一定要有所偏重,依据自己的兴趣、专业程度、职业发展前景来衡量和选择。如果你的后端专业水准能做到完美,那前端的水平达到 7 成足以,不需要完全懂 html5,各种 CSS3 特效,大部分时候可能你都不需要会这些技能就能解决问题,即使真的需要,那就找更专业的同学。

二者都学,这不就是全栈么

一直以来我都认为全栈是个伪概念,几乎没有人能真正做到全栈都精通,太难了。会点皮毛也敢说是全栈,说明还涉世未深,没碰到过高手。

程序员,无论前端也好,后端也罢,跨国自己的专职多学一点,完全无可厚非。技多不压身,不仅提高了自己的产出,扩大自己的技术视野,而且以后不论在什么样的团队,只要有前后端协作的地方,那些前后都懂的人明显具有天然的优势,因为他痛过,所以能懂。

我的理想是大家前端后端,我中有你,你中有我,其乐融融。至于让后端懂前端,前端懂后端真的能带来什么好处么,试试你就知道了。