• 真的有全栈工程师吗?
  • 发布于 2个月前
  • 147 热度
    0 评论
你可能觉得我的想法颇有争议,甚至不太受欢迎。但如果你愿意倾听我的阐述,或许你会改变看法,当然也可能不会。这正是生活的魅力所在。这么多年,我一直坚持这个观点,现在我认为是时候更深入、更细致地讨论一下了。

关于 “开发者” 与 “工程师” 这两个术语,虽然严格来说它们的涵盖范围有所不同,但在很多方面,它们实际上涉及到的是相同的学科和原则。因此,在接下来的讨论中,我会交替使用这两个术语。

定义全栈工程师
在提出某个概念并不存在之前,首先应该说明一下人们通常是如何理解这个概念的。经过在网上查找,我得到了以下定义:
全栈工程师是指那些既能够处理网站前端(用户看到并与之交互的部分)又能处理后端(幕后的数据存储和处理)的开发者或工程师。由于全栈工程师需要涉及到开发过程中的各个方面,他们必须同时精通这两个领域。—— 什么是全栈工程师?(Coursera)

全栈工程师可以定义为那些既参与网站、网络应用或桌面应用的前端开发,又参与后端开发的开发者或工程师。这意味着他们能够领导涉及数据库、面向用户的网站,并在项目规划阶段与客户协作的平台建设。—— 解决方案堆栈 —— 全栈工程师(维基百科)

这种定义听起来合理,也因此这个术语成为了工程文化的一部分。然而,尽管这种定义曾经看似合理,但现在的世界已不再仅仅依赖于 LAMP 堆栈,软件工程师的角色也不再像过去那样单一简单。

现代软件工程师面临的要求
现在的工程师工作不再仅仅是编写代码那么简单。上述定义略微提到了这一点,但在过去几年中,对工程师能力的期望呈指数级增长。每天都会不同,每个工作环境也都有其特点,但不变的是,软件工程的复杂性已经远超过去了。

工程师不仅要会所有基本技能,他们还要负责定义工作、评估工作量、编写测试用例、进行单元测试、集成测试或端到端测试、创建或编写构建及部署流程、制定监控指标、分析应用日志、修复 bug、设计解决方案或系统架构、以代码形式创建基础设施,并进行代码提交、合并和重构。请注意,我甚至还没有提到编写代码来实现功能的实际工作。现在,把这些工作应用到数据存储、后端系统和前端应用上。

或许 “开发者” 的工作范围不如 “工程师” 那么全面,但二者非常相似。这里的要点是,对工程师和开发者的期望是广泛的,要求一个人在这所有领域都能达到专家或高级水平,可以说是不切实际的。

跟上前沿技术很困难
考虑到这些多样的学科,思考一下你如何能够同时在所有这些领域保持最新的知识。“全栈” 的理念意味着你在工作范围内不仅仅是胜任,而是要非常熟练和技术高超。信息量的过载和不断变化的技术环境使得这几乎不可能实现。

从 Udemy 到 YouTube,从官方文档到正式的培训课程和认证,仅仅跟上你目前知道的这些知识就已经足够困难了。现在,再加上库的发布和更新、新技术以及新产品的融入。要想保持最新,几乎就像是一份不涉及任何实际交付工作的全职工作。

如果你从事使用 JavaScript 的 Web 开发,我或许可以就此打住,因为你已经深知其中的艰辛。想想过去几年里,你学习了多少不同的库、框架和构建工具…… 我会等一等…… 这是一个漫长的清单。

对工程师的新思考
显然,我并不是说人们不可能同时拥有很多技能。更准确地说,期望某人在不断扩展的多个学科中具有同等的技能,这既有挑战又不现实。一个更合理的期望是培养、招聘或构建一个 “T 型” 工程师团队,但即便是 “T 型”,其定义也相对模糊。

“T 型” 软件工程师是指在某一领域有专业特长,同时在其他领域也具备广泛技能的工程师。“T 型” 这个术语用作比喻,表示个人的能力强项。T 的竖线代表在特定领域的深厚专业知识,而横线则代表跨学科的能力。

构建浅而广泛的技能范围也是困难的。我更倾向于将其视为 “π 型” 工程师,学习多项技能是必不可少的!在多于一个领域成为专家或资深人士也非常有价值,但这一过程(如同 π 一样)永无止境。他们可能不懂得一切,但他们乐于学习。

好奇心强的工程师会很抢手
我经常面试工程师。我看重的是他们是否拥有广泛的知识,而不是知识的深度,但更重要的是他们是否具备好奇心。最优秀的工程师热衷于解决问题,并对找到最佳解决方案充满好奇。他们不断学习更好的技术和更新的技术,并始终寻求进步。顶级工程师能够清晰地说明自己能学习什么,以及他们的不足之处。谦逊也是很重要的。

在招聘时,像 “全栈” 甚至 “T 型” 这样的术语可能成为束缚。它们或许能提供某些东西,但并不总是你所需要的。对于工程师来说,这样的标签听起来不错,但实际上几乎不可能实现。忘记那些特定的技能集,如果你成为一个好奇心强、能做少数事情但总是渴望学习的工程师,你会搞定其余的事情。

鉴于这些,真正的全栈工程师的比例实际上必然接近于零。别误解,确实存在着 “独角兽”,但他们非常罕见。当我阅读一些职位描述时,我认为期望工程师能够满足全部愿望和需求列表有点不切实际。

申请跟踪系统的普及使得潜在员工难以超越那些流行词汇,但招聘方也许应该看看技能列表之外的东西,寻找那个非常有价值的个性特质 —— 好奇心。
用户评论