Weber博客

分享知识,记录思考

为你的软件工程职业生涯做好未来准备

2025年5月27日
转载

如今,我们正面临大型语言模型(LLM)带来的新一波自动化浪潮。围绕这些工具的讨论往往摇摆于两个极端之间——要么预示着我们所知的编程时代的终结,要么将其视为仅仅是复杂的自动完成工具。这两种观点都偏离了主题。

让我们从务实的角度,以当前的技术能力和行业发展的历史模式为基础,来审视人工智能对软件工程职业的现实影响。

了解当前的 LLM 能力

在讨论职业策略之前,我们需要准确评估法学硕士(LLM)能做什么,不能做什么。过去几年,我一直在尝试将各种AI编程助手融入到我的工作中,结果非常鼓舞人心。

这些工具在某些任务上表现出色。它们可以快速生成样板代码,在编程语言之间进行转换,并实现文档齐全的算法。在使用 React 等流行框架时,它们通常能够生成几乎无需修改的可维护代码。例如,请 Claude Sonnet 或 GPT-4o 创建一个基本的 REST API 和前端,通常就能生成一个完整的可运行实现,并包含错误处理和基本验证功能。您可以通过 Cursor、Copilot 或 Cline 等工具层来实现这一点。

然而,在更复杂的场景中,它们的局限性就显现出来了。最近,我尝试使用各种LLM来帮助重构一个遗留系统,该系统的复杂业务逻辑分布在多个服务中。这些工具始终无法理解组件之间的隐式关系以及现有代码处理的细微边缘情况。它们生成的解决方案看似合理,但本质上存在缺陷,如果没有仔细审查,可能会引入严重的错误。

我观察到一个特别令人担忧的模式:这些工具可以自信地生成错误或过于复杂的解决方案。初级开发人员渴望利用人工智能的帮助,有时会在没有充分审查的情况下接受这些输出,从而导致技术债务或安全漏洞。我亲眼目睹过一些案例,初级工程师要么开发出完全无法运行的解决方案,要么在没有充分理解的情况下遵循人工智能的建议,导致实现过于复杂。这再次强调了扎实的基础知识和批判性审查技能的重要性。

人工智能已经开始取代软件工程师了吗?

最近在旧金山拍摄的“人工智能即将取代你的工作”的真实照片

在深入探讨职业影响之前,让我们先来讨论一下一个显而易见的问题:经过大约两年的人工智能辅助开发工具,究竟发生了什么变化?

  • 人工智能辅助开发已经存在了大约两年多,但还没有出现用人工智能取代工作的广泛案例

  • 众多初创企业纷纷涌现,目标是打造“人工智能工程师”(如 Devin、Magic.dev 等)。

  • GitHub Copilot、Claude 和 Google 的 IDX 等工具正在成为主流

  • Bolt.new 和 Lovable.dev 等平台服务于特定用例,但并未取代传统开发

  • 重要的是,目前还没有经验证据表明大规模采用会导致工程师被取代

这一背景对于理解如何适应而不至于反应过度至关重要。现实情况是,尽管人工智能工具正在改变我们的工作方式,但它们是在增强人类工程师的能力,而不是取代他们。

初级工程师的困境

与普遍的猜测相反,初级工程师职位不太可能完全消失。然而,它们将发生重大转变。随着这些任务日益自动化,通过实现基本的 CRUD 应用程序和简单功能来学习的传统路径将会发生改变。

这种演变对早期职业开发者来说既是挑战,也是机遇。入门级职位的门槛可能会提高,需要更强的基础知识才能有效地审查和验证AI生成的代码。然而,这种转变也意味着初级工程师可以在职业生涯早期就有机会解决更有趣的问题。

考虑一个典型的初级任务:按照现有模式实现一个新的 API 端点。以前,这可能需要一天的编码和测试。有了 AI 的帮助,实现时间可能会缩短到一个小时,但关键技能变成了:

  1. 充分了解现有系统架构,以便正确指定需求

  2. 检查生成的代码是否存在安全隐患和边缘情况

  3. 确保实施与现有模式保持一致

  4. 编写验证业务逻辑的综合测试

这些技能不能仅仅通过遵循教程或人工智能提示来学习——它们需要生产系统的实践经验和高级工程师的指导。

中级工程师:适应势在必行

中级工程师面临的变革压力或许最大。许多传统上占用他们大量时间的任务——实现功能、编写测试、调试简单问题——正变得越来越自动化。

这并不意味着过时,而是意味着提升。重点从编写代码转移到:

  1. 系统设计和架构 中级工程师不必花费数天时间实现新功能,而是可以花时间设计能够优雅地处理规模和故障模式的健壮系统。这需要深入了解分布式系统原理、数据库内部机制和云基础设施——而这些领域目前法学硕士 (LLM) 的价值有限。

  2. 集成与边界 随着系统日益复杂,理解和管理组件之间的边界变得至关重要。这包括 API 设计、事件模式和数据模型——所有这些都需要仔细考虑业务需求和未来的灵活性。

  3. 性能优化虽然 LLM 可以建议基本的优化,但识别和解决系统范围的性能问题需要深入了解整个堆栈,从数据库查询模式到前端渲染策略。

  4. 跨职能沟通:随着实施时间的缩短,在业务需求和技术解决方案之间进行转换的能力变得越来越有价值。能够与产品经理、设计师和其他利益相关者进行有效沟通的工程师将变得越来越有价值。

确保职业未来发展的实用步骤

基于这些观察,以下是在人工智能增强的未来维持和推进您的工程师职业生涯的具体步骤:

1. 深化计算机科学基础知识

超越基础的数据结构和算法分布式系统原理数据库内部和查询优化网络协议和安全

这些知识可以帮助您了解 AI 生成的代码的含义并做出更好的架构决策。

2. 培养系统设计专业知识

练习设计能够大规模解决实际问题的系统。其中包括:

  • 负载平衡和缓存策略

  • 数据分区和复制

  • 故障模式和恢复程序

  • 成本优化和资源管理

无论代码如何生成,这些技能仍然很有价值,因为它们需要了解业务需求和工程权衡。

3. 建立领域专业知识

专注于人类理解仍然至关重要的复杂领域:

通用域名:

  • 具有监管要求的金融系统

  • 存在隐私问题的医疗保健系统

  • 具有严格性能要求的实时系统

  • 机器学习基础设施

软件工程特定领域:

  • 前端工程:掌握高级状态管理模式、Web 重要功能优化、现代构建工具和框架内部结构

  • 后端工程:深入研究数据库内部、分布式系统和可扩展性模式

  • 移动开发:iOS/Android 架构模式和性能优化方面的平台特定专业知识

  • DevOps:容器编排、云基础设施设计和站点可靠性工程

  • 安全工程:威胁建模、安全系统设计和合规框架

领域专业知识提供了当前 AI 工具所缺乏的背景,并帮助您更好地决策在何处以及如何应用它们。

4. 掌握开发运营

随着代码生成变得更加自动化,了解系统如何在生产中运行变得更有价值:

  • 监控和可观察性

  • 性能分析和优化

  • 安全实践与合规性

  • 成本管理和优化

5. 增强沟通技巧

  • 需求收集和分析

  • 技术写作和文档

  • 项目规划与估算

  • 团队领导和指导

6. 使用人工智能!

请记住,AI 应该是你工作流程中不可或缺的一部分,而不是需要抵制的东西。融入 AI 的实用方法包括:

  • 使用人工智能搭建初始代码结构

  • 利用人工智能进行快速原型设计和概念验证

  • 与人工智能结对编程,加快调试和解决问题的速度

  • 使用人工智能提出优化建议和替代方法

  • 让人工智能处理重复的代码模式,而你专注于架构和设计决策

设计要务:超越纯粹的工程

越来越多的人认为初级软件工程师应该“干脆辞职”——随着人工智能处理实现细节,纯粹的工程技能将会过时。虽然这个结论有些夸大,但关于工程技能(例如设计)之外的技能重要性的讨论值得探讨。

成功的软件开发一直以来都不仅仅需要编码能力。变化的不是工程的消亡,而是纯粹的实现门槛的降低。这种转变实际上使得工程判断和设计思维变得更加重要,而不是不那么重要。

想想 Figma、Notion 或 VS Code 等应用程序的成功秘诀。这不仅仅是技术上的卓越,更是对用户需求、工作流程和痛点的深刻理解。这种理解源于:

  • 用户体验设计思维

  • 深厚的领域知识

  • 了解人类心理和行为

  • 考虑性能、可靠性和可扩展性的系统设计

  • 商业模式协调

最优秀的工程师从来都不仅仅是程序员。他们是问题解决者,既了解技术限制,也了解人类需求。随着人工智能工具减少实施过程中的摩擦,这种整体理解变得更加宝贵。

然而,这并不意味着每个工程师都需要成为用户体验设计师。相反,这意味着:

  1. 培养更强的产品思维能力

  2. 与设计师和产品经理建立更好的协作技能

  3. 了解用户心理和行为模式

  4. 学习做出支持用户体验目标的技术决策

  5. 平衡技术优雅与实际用户需求

未来属于那些能够弥合人类需求与技术解决方案之间差距的工程师——无论是通过自己开发更好的设计理念,还是通过与专业设计师进行更有效的合作。

展望未来:未来十年

未来十年,软件工程可能会见证我们工作方式的重大变化,但我们所取得的成就却未必如此。软件工程的基本挑战——理解需求、设计可扩展系统、维护可靠性、确保安全性——基本保持不变。

改变的是我们应对这些挑战的方式。AI工具将成为我们开发工作流程中不可或缺的一部分,就像Git和持续集成已成为标准实践一样。最成功的工程师将是那些能够有效地将人类洞察力与AI能力相结合,从而更快地提供更佳解决方案的人。

这并不意味着要成为一名人工智能研究员或快速工程专家。相反,你应该专注于培养能够有效利用这些工具的技能,同时保持判断力,知道何时不使用这些工具。

结论

软件工程职业的未来不在于抵制人工智能工具,而在于理解如何有效利用它们,同时发展人类独有的技能。专注于在人工智能目前面临挑战的领域积累专业知识:系统设计、架构决策,以及将业务需求转化为技术解决方案。

请记住,软件工程始终以解决问题为先,其次才是编码。随着编码自动化程度的提高,理解和解决复杂问题的能力将变得更加宝贵。最成功的工程师将是那些能够有效地将人类洞察力与人工智能能力相结合,从而更快地提供更佳解决方案的人。

关键在于保持务实,专注于创造价值。学会在合适的场合使用人工智能工具,但不要将其视为一种依赖。继续提升你的基础技能和领域专业知识。最重要的是,记住,我们的领域始终关乎持续学习和适应——这只是这个持续故事的最新篇章。

未来并不属于那些能够生成最多代码的人,而是属于那些能够最好地理解和解决现实世界问题,同时适当利用所有可用工具(包括人工智能)的人。

文章转载:Addy Osmani(谷歌工程主管)https://addyo.substack.com/p/future-proofing-your-software-engineering

文章评论

发表评论

全部评论 (0)

加载评论中...