0


我为什么反对提“全栈工程师”

本文总计 2200 字,预计阅读需要 5-7 分钟

长期以来,社区就有人在提“全栈工程师”,还有一些公司一直挂出名为“全栈工程师”的招聘职位。

例如这个截图:

我们看到类似这样的职位发布在招聘平台上并且数量也不少,那什么是全栈工程师?

我们看看百度百科的定义:

说白了就是啥都懂的人。

根据定义和上面招聘的要求,我大概总结了一下:

对全栈工程师,每个人都有不一样的定义、不一样的衡量标准。有的认为全栈=全能,需求分析、产品设计、UI设计、开发、运维等(没有说测试是因为这样的项目根本不需要测试,点两下不报错就完了😏)全部都熟悉。

有的认为只要既懂前端开发也会后端开发即可,全栈工程师 = 前端开发(包括移动端和客户端) + 后端开发。

我顺带就去更权威的wikipedia上搜了一下,无论是“full stack engineer”还是“full stack developer” 竟然没有这个页面,你敢相信吗,wiki上竟然没有这个词!

于是我赶紧去找了下英文Full Stack的来源,看到最早的来源是Facebook的工程师Calos Bueno在2010年底时写的一篇文章:The Full Stack(https://www.facebook.com/notes/10158791462547200/)。作者这句话可以作为重点

“No one can know everything about everything, but you should be able to visualize what happens up and down the stack as an application does its thing”

我理解的全栈

先说一下第一个定义,全栈不等于全能但是全都要了解一点,就像有句话叫“你可以不用,但是我不能没有”。

对于一个上进的人来说,他的好奇心和创造欲望会很自然地促使他成为一个”全栈“,甚至兼任产品经理、运营、销售的工作。但是这里就要强调下,一定要自己能够在某一个方面(前端或者后端)有专长,但是不必要每个方面都精通,只要能够理解整个系统如何运作的就可以了,这也就是上面那个英文的理解。

其实“全栈”这个职业在中国很早就流行了,当时他们的名字叫“站长”。做过站长的朋友可以回想下:买服务器,在落伍或chinaz上找程序,改样式定制上线,上线后交换链接,建群维护用户,拉广告。这一连串的工作不就是从设计,开发,上线,推广,运营,销售的工作吗。

每个人都有擅长和不擅长的、都有自己的领域定位,技术出身的可以采集别人的网站伪原创,以SEO流量为主。朋友多喜欢交际的以精品内容找朋友带站为主,这些都是通过自己不同的专长达到了相同最终目的。

全端工程师

对于第二种的定义:前端开发也会后端,我觉得叫做 “全端工程师”更为合适,看看上面的招聘要求,解释一下就是求公司小,什么都得做;人手不够,能多干点就多干点。我接触到的项目中包括了H5、JavaScript、CSS、Java、Jenkins、Prometheus、Redis、MySQL、Hadoop、Kafka、Spark、Python、Pytorch等等,这些需要研发团队,运维团队,大数据团队,数据挖掘算法团队共同来完成的。如果公司招5个全能王,5个人能接下来全部的工作,每个人自己干自己的就行了不仅节省沟通成本也节省薪酬。但是你有没有想过,如果5个人以上这些都会,那你怎么分配工作,他们的工作不冲突吗?这些“银弹”怎么能够做到工作的自我分配呢?那肯定是不行的,因为《人月神话》早就告诉我们了,没有所谓的”银弹“。话说回来,这样5个人做微服务应该挺好的,别人的微服务是按业务分,我们的微服务是按照开发分,微服务的名字就直接定义成开发的名字就好了,职责清晰😎

全栈/全端哪里错了?

其实“全栈工程师”这个叫法我觉得没有问题,但是他的动机错了

我定义的全端就是一个程序员在至少熟悉一门编程语言后能触类旁通地快速地掌握其他语言或技术的一种技能,全端虽然不能作为一个职位。也就是说他还是一个程序员,但是全端是程序员学习能力与接受新事物的能力一种表现,哪个程序员不喜欢折腾点自己的东西,这是求知欲和好奇心的体现。

小企业要求员工单打独斗,尤其在创业型或者单干的时候,什么都懂一点肯定会过的更好,先出个原型可以慢慢调整,反正是上线了可以进行推广了。

但是一定要记住,挖的坑一定要填的,自己的坑自己填。

在大型企业里必须有所专精,样样通、样样松就只能混日子或者被人牵着鼻子走,但是在精通一样的情况下什么都懂得一点你会感到非常的舒服,在大企业中全端没有意义因为大企业中不需要,所以也没人去刻意追求。

问题出在哪里?

我们都知道工程师也有分级:初级、高级、专家。每一门技术都是一样的,都需要经验的积累,十几年经验的工程师要说只会1门编程语言可能会被人笑话(其他的只要也要懂一些吧,不是精通至少也要有了解吧)。但是要是刚毕业大学生,每个月学一门学完一门换一门,1年全栈,3年架构,5年管理,走上人生的巅峰,那就是太扯淡了。在我看一门语言要不经过3年的深入研究根本就不能称作会。工作3年的人就敢说架构,功能边界都定义不清更别说技术选型上的合理的判断,别人说什么好我们就用什么这样的人大有人在。计算瓶颈、IO瓶颈、内存不足、架构调优这样的问题每个项目都不会一样,只有经历过人才会懂经验才是最重要的。这样的人即使用过的技术和框架再多,为你带来的坑也可能比填的坑还多。

前端VUE,后端NodeJS,MangoDB直接上,这就是目前培训公司里面所谓的“全栈工程师”,而且支持百万并发,这样的项目百人并发都有困难,更别说安全性的问题了。

很多无知的老板认为IT方面雇一个人就可以了,定一个人的岗位,给两个人的工资,加三个人的班,干四个人的活,背五个人的锅,关键是老板还挺高兴,因为你加班改的是自己写的的BUG🤗

哪到底有没有全栈工程师?

肯定是有的。能称得上“全栈”的工程师,基本都在某一个领域写过大量代码或者解决过大量问题,积累了非常深厚经验。在一个领域精深之后,把知识转化成为常识做到触类旁通。

现在的社会很浮躁,我觉得主要表现应该是部分人的眼高手低而不切实际,对于我们来说还是要脚踏实地,不管是学习工作都需要沉心静气,例如做技术的一定是靠经验靠积累,没有任何速成的做法,所以我觉得应该始终保持个人能够聚焦一点而不是更发散一面,一定要深耕自己的邻域,在自己的领域精通后,再去考虑广的事情。

其实发布这些3-5年架构、全栈的人应该好好回忆下,自己在工作3年的时候在做什么,你觉得当年自己的水平能够胜任自己发布的职位吗?

庄子都说了:吾生也有涯,而知也无涯,以有涯随无涯,殆己!

标签: 人生

“我为什么反对提“全栈工程师””的评论:

还没有评论