【译】小众观点:如今要成为一名优秀的软件工程师比以往任何时候都难

50 阅读8分钟

Cover image for Unpopular Opinion: It's harder than ever to be a good software engineer

在创业公司环境中工作将近十年,让我有幸接触到快节奏的创新、探索和快速失败的的文化。我遵循着标准的职业发展阶梯:实习生、初级、中级、高级,最终转向了工程管理方向。随着时间的推移,许多与我一起成长的人后来转到其他公司工作,在那里成为了备受尊敬的贡献者。可以说他们是优秀的工程师。

回顾我的同行、学员以及我自己的历程,要成为一名_优秀_的工程师似乎比以往任何时候都更加困难。

定义一名 优秀的 工程师

成为一名工程师意味着什么? 作为软件工程师,我们:

  • 负责将复杂问题转化为高效且可扩展的解决方案
  • 承担分析用户需求、设计软件架构、编写代码以及测试和调试软件的任务
  • 要紧跟趋势,寻找新的商业机会以及改进现有产品的方法

所以,不 —— 工程并不等同于编程。有时候,编程只是其中最小的一部分。正如下图所示,当一个人积累了更多经验后,这一点就会变得非常明显。

来源:工程领导技能的重叠部分

成为一名 优秀的 工程师意味着什么? 基于无数次面试和支持我的学员的进步,我注意到不同专业水平的人可能会给出不同的答案。

刚入行的人可能会认为,这取决于开发者所掌握的编程语言和框架的数量。而经验更丰富的工程师可能根本不在意自己使用的语言,反而会强调代码质量 —— 遵循所有的编码原则,进行质量保证,同时高效推进工作。

经验丰富的工程师极其注重创造价值。有时,我们会快速编写一些违背所有规则的一次性代码来验证某个假设;有时,我们会花数天时间编写几行关键任务代码。但大多数时候,我们都在做架构决策、讨论关键任务问题、改进流程等等。为什么呢?因为通常情况下,这些工作能带来最大的价值。

尽管规则总有例外,但我们可以说,一名优秀的工程师是能够高效地集中精力,在实现目标的过程中创造最大价值的人。

不断增长的市场与竞争

科技市场在不断发展。 这些年来,我们都见证了许多巨大的成功:从 WhatsApp 到 Uber 、Airbnb 和 TikTok 。虽然这些可能只是个例,但这样的例子往往为人们树立了行业标杆 —— 那是他们应该为之努力的目标。这种思维方式给工程师们带来了额外的压力。他们感受到来自内部的压力,觉得自己做错了什么;同时也感受到来自外部的压力,因为人们会把他们的公司和众多竞争对手进行比较。

来源:公共科技市场的健康状况如何?

要在这样的环境中取得成功,正如 Facebook 那句著名的座右铭所说,公司需要 “快速行动,打破陈规”。如今,这一点比以往任何时候都更加明显 —— 几乎每家公司都在成为 “人工智能公司”。所有人都在整合 ChatGPT,而且往往没有真正的理由,也没有关于它将如何创造价值的战略。

如果我们偏离核心原则 —— 即如何为客户带来更多价值 —— 转而在炒作浪潮中与竞争对手一争高下,那么工程师们所开发的功能终将注定失败。

世界是一个令人困惑的地方

像我这样的爱好者应该做些什么才能成为一名更优秀的工程师呢?除了通过提升整洁代码和架构理念来完善编码技能这一显而易见的选择外,如今还存在着诸多诱惑。学习 TypeScript 以及那款号称能改变一切的最新框架,深入区块链和加密货币的世界,尝试各种各样的人工智能产品…… 可选择的东西无穷无尽。

所有javascript库

说实话,在这个行业待了这么多年,我仍然对 ChatGPT、GitHub Copilot 以及其他新兴技术带来的新一波变革感到威胁。我的大脑开始想象自己在很多事情上都跟不上节奏的场景。我所专注的事情真的能带来价值吗?我是否发挥了自己最大的潜力?

过了一段时间,情况变得很明显,我们正处于一种炒作之中。这种炒作也终将过去,只留下那些创造长期价值的人工智能公司。在过去 5 年里,美国的人工智能公司数量翻了一番,其中许多初创公司只是在当时新发布的 GPT-3 基础上添加了一项功能。后来,随着 ChatGPT 或 GPT-4 的发布,这些公司就走向了消亡,因为后两者能做同样的事情,而且做得更好。但这并没有阻止 Twitter 等平台上的炒作大军宣告新的世界秩序。

即便在科技行业工作了这么多年,我还是被这种炒作冲昏了头脑。真是个新手才会犯的错误!

编程语言以及新框架的不断发布也加剧了这种困惑。Tailwind、TypeScript、Haskell 和 Rust 都很棒,它们各自都有独特的优势。然而,人们常常错误地认为学习这些就能让自己具备优势。但事实并非如此,至少不应该是这样。它们只是一些值得了解的工具,无法替代经验。这就是为什么我们在职位描述中从不列出对语言或框架的要求。如果因为一位有才华的工程师不懂 TypeScript、提示工程或微服务就错过他,那我就太傻了。

我的建议是 —— 不要过度沉迷于新趋势和炒作,以至于失去了对创造价值的专注。

快节奏和高期望

在寻求新挑战时,人们很难做到在追求积极压力的同时避免消极压力。 积极压力是指我们将有压力的情况视为能带来良好结果的机会,而消极压力则会对身心健康产生不利影响,如下图所示。在紧张的日程安排下持续产出成果会带来压力,而出于错误的原因开发功能则倾向于后者(消极压力)。

积极压力 vs 消极压力

无论是作为导师还是一名勤奋的工作者,我都见过压力导致倦怠的情况。毫无例外,让某人经历倦怠所带来的产出,要少于减轻工作量、休息一下并为长期发展进行优化所带来的产出。这就是为什么我们总是努力让发出警示信号变得尽可能简单,具体方式包括定期的团队更新、一对一交流以及营造关怀的文化。

不过,事情还是会出岔子。当这种情况发生时,我们会缩减范围、让能提供帮助的人参与进来,或者与客户沟通以推迟发布。

压力比以往任何时候都大,既来自内部,也来自外部。要保持专注,让自己身边有一个能优化长期发展的支持团队。

我们怎样才能做得更好?

我们都有情绪低落的时候 —— 感觉自己作为工程师、导师或同事都不够格。事情永远不会完美或轻松,也不应该如此。不犯错、不经历艰难时刻,我们就无法学习和成长。但我发现有些方法可以提高效率。

影响层次

就个人而言, 要坚守真正重要的东西。技术会不断更迭,但你为世界带来的价值才是关键。勤奋的工作和丰富的经验是难以伪装的。

作为一家公司, 在做决策时要从 为什么 开始。这是交付能带来价值的功能的最佳方式。此外,要确保员工明白这个 为什么。以我的经验来看,他们会做出更好的决策,提供有价值的反馈,并且会更快乐。

从文化层面而言, 要建立能为员工提供支持的流程,以实现长期优化。与同事们一同营造一种信任、支持和关怀的文化。这样,你们就能彼此成就,发挥出各自最大的潜能。