也说全栈工程师

全栈工程师在前几年是一个比较火的概念,虽然没有一个官方的定义。不过大概的意思是说从服务器到客户端,从IOS到安卓,从Windows到MacOS都可以搞定的工程师。当时javascript借助这个概念,既可以实现Web端又可以通过Node.js实现服务器端,流行了一段时间。但是从我用了六个月时间写TinyIM的经验来看,全栈工程师很难做到,成本更高。以下是具体分析:

1 全栈工程师是怎样产生的

full-stack-engineer 从百度上可以看到,在2014年的时候,网易数码的文章提到了全栈工程师。而在页面的右边,创业公司又赫然在列。当时非常流行的一个口号是“大众创新,万众创业”,移动互联网的创业公司如雨后春笋一般出现。这时候面临的问题就是企业的招聘需求和急缺的工程师,再加上很多创业公司资金不多,不能招聘那么多员工的情况下,全栈工程师这个概念就应允而生了。

2 专业化分工和全栈的冲突

现代的很多管理理论已经证明了专业化的分工是有利于提高生产效率的,每个工程师单独掌握一个方面,难度会低很多。全栈要求一个工程师需要熟悉多个技术栈,对工程师的能力提出了很高的要求。根据2–8理论,我们知道这样的工程师的数量肯定不会很多。两者就这样产生了冲突,但是如果每个方向的员工招聘一个的话,员工成本就高了很多,所以才流行了全栈工程师。

3 全栈的一个小实验

通过6个月对TinyIM的编写工作,我体验了一次Windows客户端工程师和服务器工程师的全栈。以下说说我的体会:

  1. 客户端和服务器最好采用相同的语言,这样能降低调试时的切换成本,也能一定程度上降低对工程师的要求。

  2. 客户端和服务器的开发所用到的技术栈相差比较大。在客户端需要对GUI的框架、控件、事件有更多的经验。在服务器端则需要对多线程、数据库、网络高并发有比较多的经验。两者的对技术栈的要求是相差比较大的。

  3. 从工作量上来说,客户端的工作量要比服务器的工作量更多一些,主要体现在界面相关的逻辑多而杂。从技术难度上来说,服务器的技术难度相对更高一些,需要保证服务器高效稳定的运行,支持高并发等。

4 总结

如果是作为一个个人开发者来说,如果你想开发一个应用,没有找到合作伙伴的话,那么我支持你做全栈。但是如果在公司工作的话,那我希望你专注于自己的岗位工作,不要做全栈。

可以聊聊文学,
可以聊聊摄影,
可以聊聊程序,
可以聊聊感悟,
你想听我聊什么,请告诉我。

image