我一直对人工智能的潜力着迷,它不仅能执行编程任务,还能学习和执行复杂的功能。然而,如果不认识到人工智能所遭受的期望提高和随后的幻灭的循环,那就是不诚实的,通常以该领域的资金和兴趣的波动为标志。
自从我在雪城大学学习数学和计算机科学以来,我亲眼目睹了至少三个“人工智能春天”和两个“”!
目前,我们正处于人工智能炒作的另一个时期,充斥着从“人工智能将取代软件工程师”到“更快编码的 5 种人工智能工具”等文章的轰炸。然而,这些叙述常常忽视了软件工程不仅仅包含键入代码。它涉及一系列技能任务,例如收集需求、设计解决方案、验证设计、协作解决问题以及预测潜在问题。
我们今天看到的以及即将出现的人工智能进步不仅有望简化编码,而且还将深刻改变我们设计软件系统的方式。
系统设计是一项核心工程能力
系统设计是软件系统成功开发、维护和演化所必需的一项基本工程技能。该学科涉及对系统结构和组件交互做出关键决策,并将架构考虑因素集成到日常开发活动中。有效的系统设计不仅可以减轻技术债务,还可以确保软件能够适应未来的变化,而无需进行重大修改。
在个人层面,对架构原理的深入理解可以极大地提高开发人员做出明智的编码决策、参与设计讨论以及了解其工作对整个系统的影响的能力。在团队层面,它协调努力以实现共同目标,提高开发实践的一致性和效率。
事实上,当采用协作方法实施时,系统设计是最有效的。这就是为什么我们目前看到软件架构师角色从“象牙塔”演变为“团队合作者”。
然而,我们仍然经常看到系统设计被错误地等同于过时的实践,例如大设计预先、严格的框架(例如 TOGAF)或特定的文档输出(例如图表或架构决策记录)。
相反,系统设计应该是一种持续的实践,嵌入到整个软件开发生命周期(SDLC)中。这包括某种程度的前期规划、开发过程中持续的设计审查以及详细的需求、决策和约束文档。
系统设计在就业市场中不断变化的角色
传统上,初级开发人员被鼓励主要关注学习编码技能并掌握其所选技术的基础知识。然而,随着人工智能助手显着加速编码任务(55% 的 GitHub Copilot 用户报告编码速度更快),他们现在有更多的时间来理解系统的复杂性。
除了以下因素之外,这种转变使得系统设计技能在当今的就业市场中变得越来越重要:
开发人员必须对软件系统开发采取整体看法,以保持相关性和竞争力。理解并为更广泛的建筑景观做出贡献——看到大局以及系统如何互连——对于未来职业成功至关重要。
人工智能增强系统设计,但不会取代它
在讨论人工智能在系统设计中的作用时,许多人可能首先想到人工智能驱动的图表工具。然而,有效的系统设计不仅仅包含图表,它还涉及基于明智决策的协作持续审查和系统演进。
当前的人工智能图表工具通常专注于生成静态图表或系统文档。但人工智能在这一领域的真正潜力在于帮助工程师了解系统需求,评估其决策的影响,并主动提出系统解决方案或优化建议。
大型语言模型 (LLM) 擅长识别模式,这在系统架构中至关重要,在系统架构中,重用成功的设计模式并选择适用于相同/相似用例的适当资源可以显着提高效率和效果。
以下是我对人工智能改造系统设计的设想:
自动化:人工智能可以自动创建和更新系统文档——从架构图到决策记录,确保文档始终最新且准确。优化:AI系统设计工具可支持自我诊断和智能资源分配。这确保了资源的有效利用,减少浪费并提高系统的整体性能。
人工智能不仅可以提供帮助,而且可以显着增强工程师设计、管理和发展软件系统的方式,使复杂的任务更容易完成、更省时,让开发人员有更多的时间专注于细化和优化阶段。
支持人工智能的系统设计工具面临的最大挑战
为了有效地协助工程师完成系统设计任务,人工智能工具必须克服两个挑战:
数据质量和可用性:尽管网上有大量有关系统设计的资源,但真实系统架构的详细示例(包括其组件、依赖项、API 以及必要的上下文(如需求和设计决策))却很少。为了使人工智能系统设计工具真正有效,它们需要访问高质量、全面的数据集。这些工具需要的模型不仅需要接受不同架构数据的训练,还需要接受广泛的现实世界系统的训练,以产生有价值的见解。
集成到综合系统设计平台中:系统设计是一项复杂的实践,需要的不仅仅是人工智能的帮助;它需要一个整体的平台方法。有效的工具必须能够解决团队在系统设计过程中面临的所有挑战。这包括系统架构的实时可视化、团队成员之间简化的沟通和协作以及强大的版本控制。只有在解决所有这些痛点的平台中实施人工智能,我们才能满足软件工程师的需求。结论
人工智能是帮助工程师进行有效系统设计的强大工具,但它不太可能取代人类的角色。
软件开发是一项复杂的、高技能的知识工作,需要的不仅仅是编码技能,它还需要创新、抽象推理和创造性的解决问题的能力,而这些能力是人类智能所擅长的,而人工智能往往不具备。
通过利用人工智能来管理日常任务和分析广泛的数据集,工程师可以将他们的注意力转向更具战略性和创新性的活动。这种协同作用使人工智能能够在人类应对复杂挑战的同时提高效率,确保系统设计所需的细致入微的上下文决策得到深思熟虑。
至关重要的是,采用人工智能支持的系统设计工具不应忽视人工监督的需要,以减轻因人工智能缺乏上下文理解而可能产生的不必要的复杂性或不适当的系统建议等风险。
系统设计的未来将最有效地利用人类和人工智能的独特优势,发展一种共生关系,使每个人都能在各自的领域表现出色。
您可能还喜欢……
加速数字化转型意味着创造优秀的工程文化
问答:为什么超过一半的开发人员正在经历倦怠