当前位置:龙泉人才网 - 公司招聘 -

全栈工程师(全栈工程师为什么越混越困难)

  • 公司招聘
  • 2023-08-14 22:40
  • 龙泉小编

最近跟朋友聊天,经常聊到全栈工程师,我就问他们为什么要成为全栈工程师?技术派的回答:“全栈工程师,前后端技术都会,感觉很牛!”,职业派的回答:“全栈工程师很多公司都需要,不担心工作找不到,工资也比普通的工程师高。”,跟风派的回答:“我好多朋友都想当全栈工程师,都说全栈工程师很好。” 有时候,我就贱贱的问他好在哪里?他当场傻了,回答不上来。

各位小伙伴能看这篇文章,相信要么是全栈工程师,要么对全栈工程师有兴趣,这个问题也问下你:“全栈工程师,好在哪里?”你可以花几秒钟想一下,这样你从这篇文章中收获的价值会更高。


1. 什么是全栈工程师


百度百科上对全栈工程师的定义:

全栈工程师是指掌握多种技能,胜任前端与后端,能利用多种技能独立完成产品的人。


这个定义是正确的吗?请你花几秒种想一下,这个非常重要!


这个定义是错误的!

这个定义是错误的!

这个定义是错误的!

重要的事情说三遍,所以才会有百科词条后面讲的困境。


2. Facebook 的全栈工程师


Facebook 宣称她只招全栈工程师,我们来看下Facebook对全栈工程师的能力要求:

按市面上讲的全栈工程师来理解:

1到4点是java(后台)开发人员必备的技能,第5点是web前端工程师的技能。

全栈工程师,就是要掌握1-5点的技能。


第6点用户体验、第7点理解客户和业务需求,这两点不在市面上的全栈工程师的技能范围内。你可能会抱不同的看法,我们来看一些常见的案例。

一.

产品经理来找程序员;“你做的这体验像什么鬼,用起来多不方便。”,

程序员:“现在哪有时间搞这些,项目都延迟这么多了,等有时间再来优化吧!”

二.

产品经理又来找程序员改需求,这是第5次改需求了,于是程序员忍无可忍:“你怎么搞得,能不能想清楚一点,一个需求改五遍了。”

这个是产品经理的问题吗?不是的,是程序员的问题。


案例一,用户体验不是全栈工程师重点考虑的,完成功能才是最重要的。

案例二,一款产品,一般产品经理设计40%,程序员设计20%,其它人设计40%。程序员拿到产品,要搞清楚客户需求、业务逻辑、功能间的关系、数据流和交互方式等,这些是程序员对产品需求的理解,更是对产品功能的细化。如果程序员有做这个步骤,在开发之前,就能找出产品中隐藏的问题和设计上的错误,就不需要产品经理反反复复的过来改需求。理解客户和业务需求不是全栈工程师重点考虑的,在全栈工程师眼里,功能都不是个事,我先做了再好。


全栈工程师的能力水平是高级程序员,高级程序员没有6和7点能力,6和7点是架构师、主管程序员以上级别程序员要掌握的技能。

再看其它拼图中的三个点,就自动化部署因为有框架,有人会做;单元测试、安全,有多少全栈工程师会做?这个不是说我对全栈工程师不尊重,市面上讲的全栈工程师,在公司里面基本上是属骡子的,每天做大量的工作,加班加点赶项目,做完前端做后台,改完后台bug改前端bug。根本就没有时间来考虑这些,更不要说花时间做了。


可见,市面上说的全栈工程师,或者百科词条上定义的全栈工程师,跟实际全栈工程师要掌握的技能不同。


3. 全栈工程师,不是你想的那样

为什么会出现这种情况?关键出在前后端分离。这个即是技术进步带来的好处,也是技术进步带来的麻烦。

早些年,我们做开发,都是前后端一起做,只是要自己去设计框架来做前后端隔离。后来有些前端框架出来,我们也会用这些框架,自己做开发。后来慢慢的,就有程序员专门做前端开发,特别是像VUE这类框架出来,前端程序员彻底沦为界面交互工程师。


我分享一个案例:

前两年搭一个新团队,我根据公司方向和产品需求,团队配置是3个java和2个web,我的想法是java负责接口和后台开发,web负责app嵌入页和活动页的开发,这样的配置是合理的。结果在做计划的时候,web就报工作量大,时间内完不成。我就好奇,这怎么可能?

我深入了解了一下,技术经理采用的方案就是前后端分离,java只做接口,后台的页面由web程序员来开发,这就完蛋了,这样的配置用这种方案,肯定不能按时完成工作。这种技术方案,就是java程序员砍掉两只手,只做一块业务,而web程序员沦为界面交互工程师。


我们接着前面的分享,web程序员不甘心局限在界面交互上,想找回自己的价值,就开始学习1-4点的能力,于是全栈工程师就大火起来。

由于一些误导,就变成是:web程序员学习后台开发,成为全栈工程师;java程序员学习web开发,成为全栈工程师;Android/IOS app端程序员,学习后台,又可以开发app,又可以自己写接口,成为全栈工程师。

加上大众创新,万众创业,很多创业公司招不到合适的程序员,或者是为了省成本,就开始大量的招这种全栈工程师,对公司来说,是花一份的钱做两份的事。这种做法对公司和个人都是没有好处的,对公司有害不在这里讨论,有机会我另外写篇文章分享;对于全栈程序员的伤害,后面二小节分享。


全栈工程师是鬼老提出来的概念,我没有找到是谁提的这个概念,不清楚作者原著是怎么讲的。但是鬼老的书我看的多了,像《**编程思想》、《敏捷开发》、《XP》、《Scrum》、《重构》、《测试驱动开发》... ... ,像这些书都有个特点,比如《重构》,讲的是代码重构,但是它讲了很多设计思维、设计模式、产品理解、用户体验等内容,所以学习这本书的内容,不仅可以写出好的代码,还能成为一个优秀的架构师。再比如《敏捷开发》,它是讲敏捷开发方法,看是讲项目管理,实际它讲了很多技术管理、开发方法,学习这本书,可以成为敏捷开发的项目经理,还可以成为架构师或技术总监。

所以鬼老提出来的概念,它都不是一个单纯的概念,都是让你职业能有成长。我们再看这些书的作者,都是从事这个行业一二十年的时候写的,看介绍都是某科技公司的CEO或技术副总,到这个级别,都很关注程序员的成长,而不仅仅只是传授一个技能。


我们回到facebook全栈能力要求第6、7点,这个是架构师的能力,所以成为全栈工程师,这7点掌握了,可以达到架构师,或者主管程序员以上。其它三个点是技术总监要掌握的能力,如果掌握这三个点,有可能成为技术总监。

真正的全栈工程师,是让你职业向上成长的概念,简单的说,是让你成为高富帅;不是让你掌握更多开发语言,往旁边成长,这样只会成为一个大胖子,互联网行业发展这么快,大胖子是跟不上节奏的,会带来职业生涯的灾难。

如果你对不同级别程序员需要掌握哪些技能不熟悉,你可以搜我写的“程序员职业次第”的内容。



4. 高级程序员往全栈工程师发展的后果


百度百科对全栈工程师“困境”的描述:

技术有两个发展方向,一种是纵向一种是横向的,横向的是瑞士军刀,纵向的是削铁如泥的干将莫邪。这两个方向都没有对与错,发展到一定程度都会相互融合,就好比中国佛家禅修的南顿北渐,其实到了最后,渐悟与顿悟是一样的,顿由渐中来。可以说全栈什么都会,但又什么都不会。

如果一个公司不太懂全栈工程师的价值,那么全栈工程师的地位将会很尴尬,说得不好听一点,全栈工程师就是什么都会,什么都不会。曾经有一次面试,对方问很基础的问题,他答不上来,但他能做出产品,也知道什么是怎么一回事,他也不会犯那些错误,可他就是答不上概念,要考倒他非常容易。所以在应聘面试的时候,有些时候会吃亏,他可能会不如那些在某一方面钻得很深的人工资拿得高。

由于经常在各种技术穿梭,他会经常忘记代码的语法和一些API,所以他经常需要去查API甚至查语法,他觉得没有Google我几乎没法工作。这在某些人的眼里,是技术不够的表现。他记的只是一个Key,一个如何找寻答案的索引,而不是全部,人脑不是电脑,他不可能能记下所有的东西。


百度百科对全栈工程师价值的描述:

对于创业公司来说,全栈工程师的价值是非常大的,创业公司不可能像大公司一样,各方面的人才都有。所以需要一个多面手,各种活都能一肩挑,独挡多面的万金油。对于创业公司,不可能说DBA前端后端客户端各种人才全都备齐了,很多工作请人又不饱和,不请人又没法做,外包又不放心质量,所以全栈工程师是省钱的一妙招。虽然说全栈工程师工资会比一般的工程师会高很多,但综合下来,成本会低很多。


全栈工程师的因果

我们结合价值和困境,来做下分析:全栈工程师是多面手、万金油,哪些方面都会一点,都不精,能体现价值的地方是创业公司,大公司面试通不过。在一家人员不齐的公司上班,你说项目进行能顺畅吗?晚上加班到十点之后是不是情理之中的事?所以你选择当全栈工程师,你是不是已经决定了以后只在创业公司混,每天要加班到晚上十点之后,一周要上六天班?

现在创业公司一年半内倒闭的概率是97%,也就是说,选择了全栈工程师,你基本上就选择了每一年左右要换份工作。你想在一家公司稳定的工作,好好的发展,基本上是奢望。


全栈工程师应该都有个感觉,刚开始的时候,面试很顺利,很容易就被录用,随着年限的增加,面试会越来越困难。这个是为什么呢?

刚成为全栈工程师的时候,还有一门语言精通,所以面试的时候,面试官看你一门语言精通,还会其它的语言,所以很容易就面试上了。但是,全栈工程师大量的时间都花在赶项目、加班和解决各种语言的问题上,随着年限的增加,这门精通的语言,也不精通了,越来越依赖百度或谷歌。面试的时候,面试官一问三不知,想找份工作就困难了。

而难找工作的这个时间点是什么时候呢?我们来算一下,22岁毕业,3-4年成长到高级程序员,成为全栈工程师,差不多要经过3年,就可以成长到只能靠百度或谷歌来工作了。这个时候差不多29或30岁。

我们再往下聊,三十岁之后,体力还跟的上这种强度的工作吗?这个时候很多人刚有小孩,这个阶段的小孩是最闹腾的,你多多少少都要照顾下小孩子,每天只能睡两三个小时,顶得住吗?所以现在很多公司不要三十岁之后的工程师,是有道理的,你只能当个万金油,能力跟不上公司要求,加班又加不过小年轻,工资又比小年轻高很多,公司不炒你炒谁?


相信有不少小伙伴这段看得毛骨悚然,这就是互联网行业,我们行业所有的麻烦都是自找的。这篇文章分享的观点,成为真正意义的全栈工程师,是可以避开这个因果的。


5. 中级程序员往全栈工程师发展的后果

本来,全栈工程师是因为高级程序员升不到架构师或部门经理,退而求其次,通过学习更多语言来提升自己价值,提升自己薪资的手段。不知不觉,在行业中就变成是仅次于架构师的职位

所以,很多程序员立志成为全栈工程师,这种思想已经延伸到中级程序员,我甚至听到初级程序员讲他要成为全栈工程师,这太离谱了。我们来聊聊中级程序员成为全栈工程师会有什么后果。


我们来看个案例:

Android中级程序员,学习后台语言,打通前后台成为全栈工程师。

中级程序员的能力范围是什么呢?中级程序员只能负责模块,对完整的项目玩法是搞不清楚的,搞定完整项目是高级程序员的能力范围。Android程序员,在APP开发团队中,只能负责项目中的模块,后台缺人,把这个程序员拉到后台帮忙开发接口,后台他也只能写点接口,最多是负责到模块。你看他到哪里都是负责模块,只能在中级程序员水平。而且这种人好用啊,在公司会很吃香,项目组都想要他。他一会儿负责android,一会儿负责后台接口,他永远都不可能完整的搞定项目,不管是android,还是后台。

像这个中级程序员,刚成为全栈工程师的时候,工资会比同样岗位的程序员高,因为他可以做比别人多的事。但是,他只要做一两年,换工作就麻烦了,本来以他的年限,应该是高级程序员水平,面试官按高级程序员来面试,肯定是蒙的,如果按中级程序员来面试,他基本上也只能回答些key,所以面试效果肯定一般,就算过了技术面试,谈薪也会出问题,这种水平的薪资是中级偏下,而他当全栈工程师时,已经拿了接近高级程序员的薪资,自己不愿意接受降薪入职,所以,他的职业发展就差不多了。



6. 全栈工程师的价值


通过前面的分析,我们知道,全栈工程师,它不是指掌握多种技能,胜任前端与后端,能利用多种技能独立完成产品的人。

它是指全面掌握某个技术栈的人。


我们以facebook的全栈技能为例,全栈工程师是有层次的,掌握1-5点是优秀的高级程序员;掌握1-7点,可以成长为架构师或主管程序员;掌握其它拼图的技能,可以成长为技术总监。我们文章开头说很多公司想要全栈工程师,那是因为他有更高的技能,可以承载更高的职位;因为有更高的职位,所以全栈工程师的工资更高。当然,这个是老外公司的想法,国内创业公司招全栈工程师,还是因为一个人能当两个人用,可以给公司省成本。


我写这篇文章,不是打击大家成为全栈工程师,而是希望大家能关注自己的职业成长,成为真正的全栈工程师。

java程序员,会web开发是理所应当的,这个是成为合格的java程序员必备的技能,如果公司的人员配备,有专人来做H5开发,那就由专人来做,自己有这个技能不用就行了。偶尔出现web人力不足,就帮个忙分担些工作量;或者是有小项目,一个人能完成的,就自己把前后端一起担起来就可以了。

web程序员,学习后台语言,职业才能走的更远。如果只是做界面的交互开发,工作2年和工作5年的能力差不多吧,薪资差一倍,你说工作5年的这位职业是不是很危险。而且《web前端开发》等级考试,它就要考java和php等内容。


市面上讲的全栈工程师,只是掌握全栈工程师技术部分,而全栈工程师,要全面掌握技术栈,即包括开发前的客户和业务理解能力,产品分析和设计能力,开发过程中的系统架构能力、代码开发能力、数据库能力、单元测试能力、部署能力等,开发后的运维、安全、性能提升等能力。这个是职业成长的路径,是职业成长之道。



免责声明:本文内容来源于网络或用户投稿,龙泉人才网仅提供信息存储空间服务,不承担相关法律责任。若收录文章侵犯到您的权益/违法违规的内容,可请联系我们删除。
https://www.lqrc.cn/a/gongsi/61977.html

  • 关注微信

猜你喜欢

微信公众号