AI工具與軟件工程師的未來走向
进化中的重要一步,而非灭绝
我每天会在LinkedIn上花一两个小时。当我看到更多关于人们分享他们使用AI代码生成工具来满足需求的帖子时,LinkedIn会更多地推荐这些工具。看到这些成功故事,真是让人感到鼓舞——有人花两小时就生成了一个游戏,还有人用十小时搭建了一个应用程序。
34年前,我以软件工程师的身份开始了我的职业生涯。在我的整个职业生涯中,与软件工程师共事的时间比其他任何角色都要长。我也经常听到关于软件工程师未来发展的讨论。许多不在软件开发领域的人认为软件工程师最终会变得过时。与此同时,大多数实际从事这项工作的工程师并不这么看,他们通常对此持否定态度。他们认为,目前的AI工具还不能取代他们,短期内也不会达到这种程度。
经过几十年的软件行业,我觉得应该分享我对这个领域的看法和预测。
回想我90年代作为一名个体的职业生涯,我曾参与过各种项目,使用Z80、摩托罗拉68000、i386汇编语言、C语言、C++和其他语言。虽然我是一名程序员,我只花25%到40%的时间在编码上。有些日子,我会有80%到110%的时间都在编写代码,但这样的日子很少。而在很多其他日子里,甚至有些日子我连一行代码也没写。平均算下来,我真正写代码的时间还不到一半。
当时,大多数项目都遵循瀑布模型,团队是分层次结构的。我的经理或团队领导会给我分配任务或模块,我会根据他们分享的需求和期望来开发。
有趣的是,我过去因为每天只编码3到4个小时而感到愧疚,认为全职工作就应该每天工作8小时。因此,这让我感到焦虑和不安,因为我换的每一份新工作,编码的时间都比之前的工作少了。这让我在五年内换了四份工作。
到1995年底,我决定不再给雇主带来压力,转而成为创业者。一旦开始管理客户的需求和期望,我发现自己忙到无法应对。我意识到管理工作的最佳途径是让关键团队成员直接接触客户。于是从1996年开始采用敏捷方法。
有些公司和团队会给程序员提供伪代码或原型图,并期望他们将这些内容转化为可运行的代码。在我看来,这些人是程序员,而不是工程师。
软件工程师的工作从理解、定义和确定需求开始,接着进行设计、开发、测试、集成、发布,有时甚至需要部署解决方案。
还有一些应用程序或工具是为非常具体的用途而设计的。在过去,我们使用拖拽、无代码或低代码工具来开发这些工具和应用。AI工具可能取代一些所见即所得构建器和无代码、低代码工具。
不过,大多数软件工程师主要参与大项目的开发,这些项目需要持续的部署、支持、维护和更新,并定期发布重要更新,历时数年。
请在继续阅读时,记住这个背景。
从1996年起,我一直在管理产品发布及相关工作和软件工程团队。当我思考什么样的人才能成为成功的软件工程师时,我会想到,编写代码并不是最关键的技能。
一个软件工程师要想成功,关键在于他们能否:
• 仔细聆听并深入分析需求
• 提出相关问题以充分理解范围、界限和特殊情况。
• 理解他们的工作在更大的项目或产品生命周期之中嵌入的位置。
解决方案的方法和设计取决于工程师的经验、知识和问题解决能力。
有意思的是,优秀的软件工程师却往往被视为“懒惰”的。理解需求后,他们不会立即开始编码。相反,他们常常发现问题和解决方案中的模式——这些模式可能来源于行业最佳实践、公司项目或以前的工作。他们更注重复用的最大化,评估现有解决方案是否可以扩展、重构或定制。
简单来说,他们的责任不仅仅是给出一个解决方案,还要确保其长期的可维护和支持。
为了保持与时俱进,软件工程师必须不断更新自己的知识,包括最新技术、工具、流程、最佳实践、外部库和API等。
在过去六到七年里,我们开始使用行为驱动开发(BDD)、测试驱动开发(TDD)以及持续集成和持续部署(CI/CD)。这些方法让软件工程师的角色变得更加重要。
当观察工程师一年的时间分配时,他们大约只有20%到40%的时间在编程。其余的时间则花在各种不同的任务上:
• 需求讨论会
• 用例场景开发及检查
• API设计及完成
• 实用的设计
• 识别可重用、重写和定制的机会
• 定义敏捷中的小故事和大型故事
针对TDD的测试自动化
• 每日站会(每天早上团队成员快速同步进度的会议)
• 关键错误修复工作,紧急生产维护
如果人工智能工具能够完美运作,它们可以将工程师在编程上花费的时间减少20%到40%。
要想从AI工具中获益最大,软件工程师需要。
• 编写精确的提示
• 审阅一下 AI 生成的代码吧。
• 测试它是否符合要求
• 逐步完善提示以提升输出质量
此外,工程师还必须确保AI生成的代码是安全的、可维护的,并符合项目规范。
AI工具帮助软件工程师能够通过自动化重复的编码工作更快地构建更高质量的产品。就像社交媒体把数百万读者变成了作者一样,AI也可以帮助许多代码读者变成出色的工程师——只要他们具备强大的理解力、批判性思维和解决问题的技巧。
有趣的是,一些好工程师无法成为伟大的工程师,因为他们过于执着于自己的代码。AI生成的代码迫使他们对解决方案进行更批判性的评估和改进,而不是过分保护他们的工作。这种转变可以提高代码质量,减少维护工作。
在2011年,马克·安德森(Marc Andreessen)曾有名言:“软件正在吞噬世界。”我相信这一点依然正确——比以往任何时候都更加正确。人工智能(AI)和软件正在每一个领域变得不可或缺的。
随着我们进入个性化的新时代,每个人和每个企业——无论大小——都将寻找符合自己需求的解决方案。AI 工具将帮助培养一大批新的软件工程师,他们将从自动化和智能化中受益。
我们正进入一个令人兴奋的时刻,对于产品创造者、服务提供者和软件工程师来说尤其如此。AI不会取代工程师,而是会增强他们的能力,使他们更强大。未来属于那些拥抱这些工具的人,他们将构建更好、更快、更智能的解决方案团队。
共同學(xué)習(xí),寫下你的評論
評論加載中...
作者其他優(yōu)質(zhì)文章