纽约QC的经验教训:缩小交付规模并利用人工智能增强软件开发
2023年07月11日 由 Susan 发表
733376
0
在QCon New York 2023大会上,关于“优化团队以实现快速流程——在后敏捷时代生存”主题的讲座包括了上午的两个演讲,介绍了如何使用人工智能的工程和对话式软件交付来替代敏捷过程。
布莱恩·芬斯特(Bryan Finster)做了一个关于“敏捷康复:为了提高交付效果而进行的工程实践”的演讲。
芬斯特表示,软件交付中最大的问题是在我们不理解的问题上应用解决方案。如果你想使用敏捷实践,首先要思考为什么要使用它们以及需要解决什么问题,他说道。他们遇到的主要问题是不确定性,需要设计解决方案以提供更好的价值。
他们采用的方法是使用领域驱动设计对交付进行解构。他们将系统分解为子域,定义接口,并研究依赖关系。接下来,他们采取了反向康威策略,将组织结构调整为所需的架构。他们将系统的某些部分分配给产品团队,并创建了一个小型平台团队。
芬斯特解释说,为了推动改进,他们制定了一些实践。这些实践包括系统的部分,应该可以独立部署,通过API进行协调。他们还规定了90%的测试覆盖率水平,但效果并不如预期。芬斯特表示,这导致了许多无意义的测试。他强调要避免这种情况。
为了实施持续交付(CD),芬斯特创建了一张描述书中所述实践的依赖图。这张图显示了应该采取哪些实践以启用其他实践。芬斯特提到,CD确实涉及一些自动化,但主要是关于行为。
他们采取的方法被称为“最小可行过程”。他们从没有过程开始,只添加增加了价值的内容,芬斯特提及。一些例子包括团队对工作的精细化改进、配对编程和同步的代码审查。他们停止了回顾。相反,他们进行了每日检查和改进。
芬斯特表示不要规定代码覆盖率。他们的测试“糟糕透了”,而测试覆盖率达到了90%。他们有一些无意义的单元测试,并且测试滞后于开发。他们在测试中遇到的主要问题是缺乏测试知识和模糊的需求。
他们从BDD开始,将需求定义为验收测试,这对于他们在需求方面遇到的问题非常有效。他们追求的是细小的工作片段,能够在两天内完成的工作。
芬斯特提到,他们为运营设计了他们的流程。CD存在的目的是响应事件并安全地解决运营中的问题,他说道。他们总是使用他们的应急流程。
采取的方法的一个结果是他们变得可靠,因为所有工作都很小。另一个结果是他们的工程师们再次热爱开发。
芬斯特提到了一些经验教训:
使用敏捷,但只使用有意义的内容
如果可以通过工程来完成,那就这样做
人才在那里;人们需要有正确的问题来解决
认真对待CD;从持续集成开始,使其发挥作用
李·雷温克尔(Lee Rehwinkel)和凯瑟琳·查亚卡(Katharine Chajka)在他们的演讲《利用人工智能识别和解决交付效率低下问题》中深入探讨了人工智能如何在软件开发过程中发挥作用,并将人工智能视为价值流代理。
查亚卡展示了一个价值流图,揭示了组织实际编写代码的时间只占很小一部分(8%)。她认为,即使人工智能将编写代码的时间最小化为零,也几乎不会对开发新软件功能的总时间产生影响。这是因为在软件交付过程中,大部分时间都花在了规划、设计、测试和发布任务上。
查亚卡展示了人工智能在管理价值流方面也可以发挥重要作用。她提出人工智能可以帮助识别工作进展不顺利的瓶颈,并采取措施简化交付过程。
雷温克尔详细阐述了人工智能如何消除价值流管理中的技术术语,使其在整个组织中更易理解。人工智能使团队成员能够用通俗的语言进行交流,避免只有在具备价值流管理背景的人才能理解的技术语言。
雷温克尔通过使用ChatGPT展示了人工智能价值流代理的一个功能性示例。示例从一个典型的主管查询开始,比如“我应该担心什么”。ChatGPT能够审查流程指标,识别趋势并生成分析结果。尽管这份分析非常详细,但其中充斥着技术术语。然后,雷温克尔使用了第二个ChatGPT步骤,创建了一个将信息转化为更易理解术语的主管摘要。他展示了ChatGPT如何充当“事实检查器”,确保所得出的结论与基础数据相符。
雷温克尔强调了使用这种方法开发生产应用程序时他的团队面临的一些挑战。其中问题包括耗时的ChatGPT响应链条,可能需要数分钟,从而导致用户体验下降。他还指出,这些人工智能模型容易受到“越狱”的影响,用户可以操纵查询以改变ChatGPT模型的指定角色。
来源:https://www.infoq.com/news/2023/07/descaling-AI-development/