一个合格的全栈工程师应该具备哪些技能?
上周末,被朋友拉去当了两天壮丁。起因是他们一个JAVA项目需要调用设备串口驱动,而他们的工程师无法解决一些问题。遂找到了我这个同样心里没底的外援。他们的工程师都大概是3-5年工作经验,都是比较不错的,那么面对这样一个项目,问题出在哪了?
后来逐步发现,他们并没有真正意义的架构师,也就没有深入的技术调研和面向未来的系统集成架构方案。面对这样的业务场景,或许很多人想到的是,需要一名全栈工程师。在此之前,受朋友推荐,我跟另一家小企业的技术老大见了一面,他们同样表达了对于“全栈”工程师的需求。
然而很多人之所以迷信“全栈”,其根本问题就是既不了解自己的业务场景,也不充分理解“全栈”二字。
所以,这里我们不妨聊聊。
1
没有理论上的“全栈”工程师
这一点很好理解,所谓理论上的“全栈”工程师,就是掌握各类技术,精通各门语言,熟悉各种框架的工程师,能够为项目铺设基础设施,能够设计系统架构,能够解决各种开源框架的问题,并把相应的框架知识带给团队。然而一个工程师的成长往往限制于很多因素,诸如时间、精力、专注度、自控力、天赋以及公司的业务倾向等等,注定了这样一位大神是不能够轻易诞生的。就算真的有一个这样万里挑一的大神也很难落到一个中小型企业当中,而更可怕的是,如果一个中小型企业选择了这样的一个工程师,因为高昂的费用所以往往是自损元气。
这里不得不抱怨几句,商业运营往往对技术认识有着可怕的导向性,之前一个好朋友想通过一些培训机构加入到计算机这个行业, 对比了当时市场招聘的职位以及当时许多培训机构的说辞,最终选择了一家面向"全栈工程师"的培训机构,然后几个月下来,当他去认真准备投递那些全栈工程师的岗位,他忽然发现自己悲剧了,因为到企业面试时发现,他所谓的全栈技术知识,远远达不到一个企业招聘这个岗位的标准,甚至不足以应付一个初级工程师的要求,由于培训机构要在短时间内对各种技术知识浅显的讲解,让他一些基本技术没能够深入掌握,无法达到一个正常工程师的基本技术要求。我想这样的事例并不鲜见于此吧。
2
全栈工程师与架构师的区别
如果你是一名项目经理,需要开发一套较为常规的ERP系统,那么你绝对不需要一名全栈工程师,一个前端加上几名后台工程师的开发团队足矣。
这个观点其实反应了一个信号,那就是全栈工程师更为侧重于技术经验而非业务经验。 对于一个工程师, 往往是双线知识在同时推进, 一类是底层技术知识, 另一个是与实际业务相关的业务知识。这个特点对于小的且敏捷的团队尤为明显。因为针对客户的需求,往往需要敏捷的工程师能够理解业务功能,而只有站在业务功能的理解基础之上才能够明朗技术问题和技术解决方案。
然而在常规的团队中,一个全栈工程师的能力往往不会表现出对应的业务知识, 而仅仅是技术能力。它能够建立符合业务需求并且适当情况下设计符合持续演进要求的技术架构即可,另外就是能够解决很多的技术问题,如架构本身局限问题,架构松耦合等问题。
然而这也并不意味着一个全栈工程师能够等同于系统架构工程师,因为系统架构的设计除了适应技术要求外,更需要为对应业务开发提升效率而服务。一个产品的系统架构师应主要关注于后者,而在对应的场合中,将更多技术部分交给全栈工程师。
3
全栈工程师应侧重于为项目筑基
事实上,很多案例已经证明,全栈工程师的工作往往是需要在项目前期展开的,而真正等到项目的生产线已经稳定,开发人员已经能够在基础框架和测试系统中开始稳定输出编码并测试时,往往也就意味着项目失去了对于全栈工程师的依赖。
这也就是利用各种事实案例明确了全栈工程师的工作, 即在新的业务上马的时候,我们绝对需要一个全栈工程师为项目铺设基础设施,他能够熟练的使用Container, CI/DI等工具为项目架设工作流,并辅助架构师铺建基础的项目技术架构,在保证架构轻薄的同时,能够合理的解耦IO, 数据驱动、事件驱动等部分的代码,并封装为易于常规开发者调用的API。
这绝非是一项简单的工作。前期架构的工作往往意味着其他开发者的开发效率,以及业务变化带来的重构问题的可能性。虽然当前技术架构中,我们有微服务,模块化,面向对象以及面向函数。消息订阅发布系统等等松耦合的办法, 但并不意味着没有项目中后期重构的可能性。
4
恰恰是敏捷项目提出了对于全栈工程师的需求
事实上,关于这个问题我思考了很多,也想了很久。究竟是怎样的场景提出了对于全栈工程师的需求?
这并不是一个容易理清的问题,之所以这么说,也是因为许多公司在不必要全栈工程师的时候,提出了招聘全栈工程师的需求。
从我个人的经历来看,近些年,随着客户对于计算机办公系统以及工业物联系统的深入调研,许多中小软件开发企业从原有的瀑布式管理转向了敏捷管理,无论处于主动亦或者被动情况,都让许多技术公司能够渐渐认清,真正好的适用的产品绝不是能够通过固定报价的方式得到的,传统的项目方式,越发不适应于当前的市场,糟糕的系统过程和UE设计足以让我们充分的认识到这样一点。
然而,转型到敏捷过程是一个痛苦的过程,即使对于一个有若干年敏捷经验的团队。仍旧在敏捷的过程中惹了一些不必要的苦恼。敏捷意味着快速迭代,也就意味着快速的需求变更。
对于架构来说,无法清晰的看到产品轮廓是敏捷项目的最大困扰,因为没有轮廓, 就没有充足的系统架构设计,快速的迭代变更,为系统架构带来了高昂的风险。因此持续演进的架构体系被引入进来, 然而这也没有完全摒除风险。此时,就需要一位技术经验丰富的全栈工程师来对项目进行保驾护航。
在谈论本部分的时候,与上一个部分有一个小小的矛盾,而这个矛盾也是敏捷项目带来的风险之一,即全栈工程师侧重于项目筑基的前期,又需要长期的保驾护航。这实际上是一个概率事件了,根据个人过去的项目经验,发现即使项目初期我们因为敏捷而对项目产生"盲目",但大多情况下,我们也不必为此过分担心。然而概率发生时,如果没有一位优秀的工程师护航,其结果也是致命的。
很多时候一些公司找我去临时解决技术问题,但这并不是一个负责的过程, 因为如果没有在解决问题之后完整的交接,那么产品本身始终将处于高风险之中。
5
不必最好,只要最适应
聊到此,其实也就没什么了,然而对于大部分公司和项目经理来说,最关心的问题就是, 既然很难有真正意义上的全栈工程师,那么是否还需要大费周折去招聘呢?
其实这就回到了原始的部分,对于一个企业招聘,最重要的还是先确保明确自己的需求,如果说,在敏捷项目中, 我们预测到了高昂风险的迭代过程,那么招聘一个能够适合公司需求和企业文化的全栈工程师还是非常有必要的。
一个合格的全栈工程师,不仅仅能够解决技术和业务上的问题,往往也会给团队带来更多新技术的血液。这对于一个技术团队的建设具有很高的价值。
完整实例:http://github.crmeb.net/u/defu
来自 “开源世界 ” ,链接:http://ym.baisou.ltd/post/604.html,如需转载,请注明出处,否则将追究法律责任。
一个合格的全栈工程师应该具备哪些技能?相关推荐
- 全栈工程师需要具备哪些技能
从本质上讲,我认为关于全栈的讨论也是一种与IT行业的全能和专家有关的论点,以及关于开发技能的深度和广度的争论. 那啥是全栈,就是..所有的你啥都得会.. 先说编程语言 你得先要精通多种编程语言,例如J ...
- 开课吧:全栈工程师的关键开发技能(硬实力)
一般来说想要成为一名全栈工程师,熟练了解和掌握开发技能是必然的事情,那么全栈工程师的关键开发技能(硬实力)有哪些? Git/GitHub 把Git作为关键技能的第一条,是因为它不仅仅是一个代码管理工具 ...
- 一个合格的中级前端工程师需要掌握的技能笔记(中)
Github来源:一个合格的中级前端工程师需要掌握的技能 | 求星星 ✨ | 给个❤️关注,❤️点赞,❤️鼓励一下作者 大家好,我是魔王哪吒,很高兴认识你~~ 哪吒人生信条:如果你所学的东西 处于喜欢 ...
- 一个合格的中级前端工程师需要掌握的技能笔记(下)
Github来源:一个合格的中级前端工程师需要掌握的技能 | 求星星 ✨ | 给个❤️关注,❤️点赞,❤️鼓励一下作者 大家好,我是魔王哪吒,很高兴认识你~~ 哪吒人生信条:如果你所学的东西 处于喜欢 ...
- 一个合格的中级前端工程师需要掌握的技能笔记(上)
Github来源:一个合格的中级前端工程师需要掌握的技能 | 求星星 ✨ | 给个❤️关注,❤️点赞,❤️鼓励一下作者 大家好,我是魔王哪吒,很高兴认识你~~ 哪吒人生信条:如果你所学的东西 处于喜欢 ...
- 浅谈“全栈工程师需要掌握哪些技能”
全栈工程师有很多种,以经典有Web开发体系中有: Java + JavaScript/css/html Nodejs + JavaScript/css/html 其他服务端语言 + JavaScrip ...
- 全栈工程师为啥值40W的年薪?
最近小编查看留言发现:询问的内容也大多是如何选择职业方向,如何成为一名优秀的软件工程师,以及怎样快速提高自身的技能等.我在一一回复的同时,结合身边无数朋友的经历,谈谈如何才能成为一名优秀的.年薪50万 ...
- 《Web全栈工程师的自我修养》浓缩笔记(上)
本书的作者余果,腾讯社交用户体验设计部高级UI工程师,前端开发组负责人,熟悉前端开发.iOS开发.PHP开发和Ruby开发等.这本书所讲的内容适合所程序员,不限于前端后端客户端,很多内容其实都是常识. ...
- 《Web全栈工程师的自我修养》浓缩笔记
一.什么是全栈工程师? 对于全栈工程师 ,业界并没有严格的定义 ,并不是说一定要一种都不能少地具备哪几项知识才能叫做全栈工程师 .我倾向于认为 ,应该从能力和思维方式两方面 ,来判定一个人是否是一个合 ...
- Web全栈工程师修养
全栈工程师现在是个很热的话题,如何定义全栈工程师?在著名的问答网站Quora上有人提出了这个问题,其中一个获得了高票的回答是: 全栈工程师是指,一个能处理数据库.服务器.系统工程和客户端的所有工作的工 ...
最新文章
- javascript检测对象中是否存在某个属性判断方法小结
- Groovy开发语言
- matlab里点云的读入显示和保存
- delphi 折叠代码 快捷键_我收藏的几个更快搬砖的vscode快捷键
- 现代php 阅读笔记,PHP 手册阅读笔记 - 语言参考篇
- 现代程序设计 作业5
- 转 安卓解决 IDEA 下 struts.xml 中 extends=“struts-default“ 报红的问题
- 计算机导论布尔运算,计算机导论第2讲-符号化-计算化-自动化.pdf
- jquery 遍历 each 每个匹配元素规定要运行的函数
- 通过和函数名相同的字符串调用函数 --浅谈loadstring函数
- 【电脑使用】如何快速给PDF添加书签
- Vscode 修改左侧 资源管理器的面板大小
- Windows Server 2003的32位企业版支持4G以上内存
- MapGuide源代码结构
- 【小技巧】argc和argv的用法
- 四、TCP中的流量控制和拥塞控制
- 本地python环境快速迁移到另外一台电脑
- Linux 用命令行打开doc pdf等文件及必备命令行工具
- stunnel安装及设置
- 自己记录的一些Java后端面试题