全栈正式宣告死亡

小芯认为是时候更新招聘职位说明和招聘方式来展现新的现实了:“全栈”不再是能帮助作者考量求职者的技能是否与岗位要求匹配的标准了。

全栈的起源

新世纪伊始,web工具发展迅速,如今已达到了仅用开源工具就可以组装网站。基于OSI网络模型,我们将网络每个单独的部分称为层,将层的集合称为栈。

 LAMP栈是最早的栈模型,它包含四层:L指Linux操作系统,A指ApacheHTTP服务器,M指MySQL数据库服务器,P指PHP脚本语言。随着时间的推移,WAMP、MAMP、XAMPP、LEMP、LEPP、MEAN、JAMStack等变体的出现也让“层”这一概念的实用性。             

掌握了以上栈也就掌握了软件开发革命的关键,搭建网站不再是件难事:无需微软、甲骨文、IBM等供应商的帮助,人们只需要毅力和对学习新工具、语言和协议的渴望。这是一个公平的领域,因此吸引了许多人参与,造就了上世纪90年代末的投机网络时代。

不久,浏览器引入AJAX(XMLHttpRequest),一种新的网站类型由此变得可行,Web 2.0时代和网络应用随之而来。但是,开发这些新应用程序需要巨大的工作量,单枪匹马的开发人员很难在截止日期前完成任务。              、

专门化应运而生。前端开发人员负责处理HTML、CSS和JavaScript。后端开发人员负责处理主机操作系统、HTTP服务器和数据库。而前端后端均擅长的开发人员则被称为全栈开发人员。

全栈时代

来源:Pexels

专门化不失为一件好事。这意味着开发团队可以前后端并行工作,缩短开发周期。但同时,这也意味着开发人员必须要花额外的时间沟通初始需求以及后续变更,否则并行工作将失去其优势。             

因此,一个由不区分前后端技能的全栈开发者组成的团队似乎是个好主意。

最大的益处便是团队中的每个人都非常清楚任何细枝末节的更改会产生的后果。他们各自都可以适当地评估风险,让管理层清楚地了解项目成本和拖延情况。更大的优点是,若有员工离职,立刻便有开发人员能替补上来,继续高效地工作。

但随着技术进步,全栈不再那么富有竞争力。栈不再只有初始的操作系统、HTTP服务器、数据服务器和脚本语言这四层。

·       为应对前所未有的并行用户量,需要不断改进程序,程序的复杂度增加。因此增加了负载均衡器。

·       由于需要更快配置新服务器,同时降低灾难性故障的风险。因此选择云计算。

·       由于需要构建面向全球用户的项目,于是着手将计划部署复制到区域数据中心。

·       由于复杂的数据库架构和联结并不总是最优的,于是开始使用键值储存

·       出于对更优质品控的需求,聘请专业的测试工程师来构建测试套件

·       由于想要使浏览器控制渲染与合成,于是由服务器端脚本转为REST APIs

·       由于良好的代码管理对团队效率至关重要,于是使用Github创建工作流程

而随着能力不断提升,开发人员也开始更多地倾听用户意见:

·       用户希望应用程序含有更少的提交表单,更流畅,更易使用,所以我们聘请了具有艺术才能且对人体工学敏感的用户界面专家。

·       用户希望顺畅地完成工作,因此我们聘请了用户体验专家来研究产品缺陷,打造更好的互动方式。

·       用户发现手机的便利性,驱动我们提供大型SaaS 应用程序的移动端版本。

技术的基本知识也在不断丰富:

·       HTML5已经成熟,涵盖了语义网络、可访问性、服务工作器和组件(不确定专有名词)。

·       CSS逐步发展,除了选择器和层级,还包含变换、变量、新布局模型和分页媒体。

·       JavaScript爆炸式发展,如今它具有模块化、面向对象的类和异步函数,在任何地方(浏览器的DOM中、服务器上、笔记本电脑上)均可使用同一种脚本语言执行。

·       HTTP协议升级,拥有更优的缓存能力、安全政策、持续会话功能、标题压缩功能、多路复用流及优先级。

全栈时代终结得没有它泛滥得那样严重。栈的层数不断增长,导致没有人能够精通所有方面。职能多样化和专门化是必然结果。

身为新文艺复兴的先驱,全栈工程师的传奇已经是过去式。在这个新时代,没有人能指望做到全栈。

2020的栈

这就给我们留下了开放性的问题。还有位置留给掌握涵盖多个网络层的知识和技能的天才开发者吗??如何适应全栈开发者为项目带来的各种混合体验?管理层应如何满足这些需求?招聘人员应如何选聘有潜力的求职者?求职者应该如何描述他们拥有的技能?

是时候重新考虑全栈一词了。

作者这么说可能有些矛盾,因为曾经正是作者帮助普及了全栈这一概念。full-stack.com上就有作者2009年对当时技术的看法。但遗憾的是,在2019年,它只适合在计算机历史博物馆展出供人纪念。

Google Trends 2009–2019 for the term fullstack

奇怪的是,人们似乎对“全栈”一词愈发好奇。谷歌2009-2019年的趋势快照显示,过去五年,这一词语的搜索趋势大幅上扬,并且每年都会达到新高。

如果这些搜索是想要找到下一个将要代替全栈的东西,接下来要讨论的便是。当然,我们得给它起个名字,这样才更方便我们对其加以研究。

作者将其称为2020栈。这是新时代的新名字。

个人观点

来源:Pexels

首先应向那些擅长不同领域的工作的开发者致敬。他们是不落入专门化陷阱的最大希望。我们想避开那些开拓边疆的的设想,那些念着秘密咒语的大师,以及那些随着专业化而潜入铺天盖地的信息。

其次要承认这样一个事实:职业发展意味着人们来去匆匆。各公司组织必须将此视为其正常运作的一部分,即使是公司高层人员变动,业务也不能中断。即“没有人不可或缺。”

第三,专业术语及行话会削弱了专家间的沟通。专家使用特定领域的术语、缩略词和惯用语会使其本人和队友均处于危险境地。有人称说:“跨领域融合在畅通沟通渠道方面至关重要。”

以下是新的2020栈专家具备的一些特点:

因为没有人能处理所有的事情,2020栈必须由一个团队来负责。不是许多个体组成的小组,而是一个真正的团队。这就是说,一个人拖后腿时,另一个人会帮助他赶上来。如果一个人拥有掌握了更先进的技术,有一种机制让他去指导其他人。如果团队知识储备出现缺口,他们则会去寻找并雇佣更聪明的人。

到2020年,每一个编程团队的成员都必须是跨领域专家。任何一个仅掌握一或两个层面技能的人都不是真正意义上的2020编程团队成员——这些人可能希望未来能成为2020团队的一员,也可能并没有这么想。总之除非他们深入掌握了多个层面的技能,否则都只是2020年代编程团队的候选人。

2020栈成员为项目带来的技能集并未严格分类。与我们到目前为止采用的前端/后端分类不同,2020栈的分类是多层面的。2020团队中的一名成员可能拥有NoSQL、云配置和持续整合等技能。同时,另一 2020团队可能有成员懂得SQL数据库、Node.js服务器,容器和编制等技能。简单地称他们为2020后端开发员实在是过于草率。

最重要的一点是:大家都要抱着为解决眼前问题寻求最佳对策意图进行沟通。这意味着技能重叠的开发者应该以开放的心态进行沟通。不只是通知同事新的进展,而是坐下来一起讨论。这能让每个人都更具智慧,也防止了专业化卷土重来。这叫共同成长。

你好,“2020栈”

来源:Pexels

那就来看看如何利用这一点来更好地匹配求职者的工作要求和技能吧。以下是项目经理在寻找适合公司的求职者时可能会发布的招聘内容:      

Rock City Brewing公司正在寻找擅长测试、文档和代码管理的“2020栈”团队成员。申请者还应该至少具备以下两个领域技能:云配置、编排、CI/CD和服务器端脚本。

选择最适合的工具,共同塑造未来。在RCB,职业技能提升是工作的一部分。在每周的“科技周二”,与RCB 2020栈团队的其他成员分享知识。

对于同一个职位,招聘人员还可能采用更具体的关键词,如:

本公司正在寻找一个“2020栈”团队成员从事回归测试、API文档、Github工作流管理和开发管理工作。

如果你掌握这些技能,请联系我们。

以下是求职者可能会在LinkedIn个人资料上展示的内容(如果求职者足够务实,则会描写对传统技术和最新技术的掌握程度):

本人安东尼是一名“2020栈”团队成员,具有丰富的传统后端技术经验,同时对最新的2020 开发管理层(包括Gitlab、Kubernetes和Digital Ocean)也十分熟悉。本人是开源工具和DRY的狂热信徒,并坚信代码重用是否成功取决于文档质量。

以上每一个例子都体现了代码管理领域和开发实践领域之间角色的明显连接。并且在每一个例子中,对“2020堆栈”的认可都表明了其扮演着比旧式的所谓敏捷团队成员更复杂的角色。

层!层!层!

那么,切分这个新领域最明智的方法是什么?像前端和后端这样的分类是否足够明确?服务器和网络这一对术语,和设计和操作对比起来怎么样?当然,分类方式太多了,不是吗?

但是不能忽视测试人员,因为没有他们的技术,公司的产品将输给其他竞品。而如果没有市场方面的人才,公司甚至永远不会有客户。

以上只列举了2020栈的部分信息。至于你如何划分你所具备的技能层并不如栈本身的层次那么重要。

未经允许不得转载:PHP100中文网 - 中国第一档PHP资源分享门户 » 全栈正式宣告死亡

赞 (17) 打赏

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏