据调查报告(见文末链接),在 GitHub Copilot 发布的头 6 个月,在美国的开发人员有 92%拥抱采用了它或者同类生成式 AI 工具进行编码开发。可见码农天然的人皆有“偷懒”之心 - 如果更快、更高质量的炮制出一些代码,少掉几根头发,有什么不好呢?
迄今为止,这些“AI 降神”,只是赋能了工程师个人做一些局部的工作。接下来,该轮到在团队协作层面、在整个 SDLC(Software Development Lifecycle - 软件开发生命全周期)产生影响了。在 12 月份 Google Cloud 宣告发布 Duet AI For Developers,而著名开发协同工具 JIRA、Confluence Wiki 的提供商 Atlassian,则推出 Atlassian Intelligence,把生成式 AI 的能力内置于这些产品中。
是时候动软件开发组织的奶酪。有很多岗位可能被消灭、有很多事情应该被自动化、有很多技能不再重要、有很多沟通协作成本也许被清零。新的技术带来新的技能,新的技能带来新的分工,在整个软件开发生命周期里,组织结构与协作方式,都将发生巨变。
软件开发,并不只是写写代码。在一套软件的开发过程中,实质上大部分的工作都不是编码,而是交流对话、团队会议、邮件来回、白板讨论、设计论证、新团队成员上手代码(Onboarding)、工作任务交接(Context sharing)... 正如 Google Duet AI For Developers 的专家所说,在软件开发全生命周期里,最容易的部分,可能就是在 IDE 里写那几行代码了。
软件工程,不仅是在 IDE 里面,更加是在 IDE 外面、在打开 IDE 之前、在关闭 IDE 之后。
所谓“台上一分钟,台下十年功” - IDE 里写十行有效、最终成为投产软件一部分的代码,那前前后后得做多少功夫?
对于企业 IT 来说,恐怕最迫切需要解决的还不是工程师个人 IDE 里的事情,而是在 IDE 外的那些团队沟通协作的事情 - 那往往是软件开发过程中低效的根源、软件产品里很多 bug 的根源。
说到组织、沟通、协作,又不得不把康威定律挖出来讲一下。事实上,每个技术更迭的世代,貌似都要把康威定律又挖出来讲讲。最近的一次,应该是在移动互联网、云计算、大数据各类技术栈涌现的近十年吧。
移动互联网时代,开发人员的“技术栈”、分工,基本上就是写 HTML5 的前端岗位、写 Objective-C/Swift 的 iOS 端岗位、写 Java/Kotlin 的 Android 端岗位、写 Flutter 或者 React-Native 的移动端岗位、写 REST 服务和数据库增删改查的后端岗位,此外可能还有数据库管理岗位(DBA),还有搞大数据的岗位,还有做分布式架构或者中间件的岗位,可能还有得懂点容器技术又写点脚本语言的 DevOps 岗位...
这些岗位所依赖的技术工具、开发框架、甚至一定程度上的知识结构,都很不一样。形成很细很专门的分工。
岗位之间,“隔行如隔山”,都是写代码,但彼此不能打替补互相救援。码农日益像工业时代工厂流水线上的机械工人:专职拧一个螺丝或者专职锤一个钉子。iOS 开发忙的人仰马翻,写 JavaScript 的,过来帮一下忙?门都没有 - 需要重新学习培训,每个一年半载没戏,还不说这些人是否有动力和意愿去学。甚至在 HTML5 的编写工作里还要细分,得专门有人写 CSS(负责给前端“技术工程师”嫌弃做的页面外观“涂脂抹粉” )。
反正,IT 部门不得不“被动”的把员工按技能形成组织,但往往又非常不满意于这种被动形成的组织的协作、交流方式之下的效率。总是想基于业务线、产品线的维度去改良更高效敏捷的组织。究竟应该按码农的专业技能来组织成“资源池”?还是按所支持的业务职能来组织成“攻坚小组”?这个“专业技能 - 业务职能”的“矩阵”,哪个为主、哪个为次?哪条汇报线是实线、哪条是虚线?永远在反复的纠结、来回的摆动中。
屁股决定脑袋 - 康威定律本质上讲的其实是这个事情,一个软件开发组织所设计的系统的架构,受制于产生这些设计的组织的沟通协作的结构。而这些组织的架构,又被带时代烙印的技术栈所导致的技术分工、技能隔离所深刻影响,往往并不能让组织的领导者随心所欲的去构建出真正符合业务发展需要的组织。
开发过程的沟通成本,就在这些令业务部门无法理解的 CSS 开发、JavaScript 开发、iOS 开发、Android 开发、REST 服务开发、数据库开发、数据库管理、系统运维等等各色人等、各种岗位之间消耗。每一个岗位都不能缺、忙不过来其他岗位也无法替补...
生成式 AI 加持下,各种代码生成工具纷呈。在大部分的应用场景下,用什么计算机语言编程日益不重要 - 不都是用自然语言给大模型写提示生成代码吗?下一代软件工程师的知识结构、所掌握的技术栈,将截然不同。
一个全新的技术世代在开启,这个时代下的软件开发组织该是怎样的呢?
都是学计算机的,都接受过“离散数学”、“数据结构与算法”、“编程语言与编译器”、“操作系统”、“软件工程”、“计算机网络”的训练,为啥懂 Java 的就不能写 C、写“前端”的就搞不定“后端”?这是让业务部门搞不懂、而 IT 部门解释不清的“悬疑”。
“用任何可能的最佳技术手段,完整解决一个实际问题” - 虽然这是作为软件开发者最本来的使命与职责,遗憾的是,这个世界上大部分的开发人员只考虑如何用现实问题去匹配他们狭隘的知识 - “我只负责前端,后端我不懂”、“我只写 Golang,JavaScript 别找我”。所以大多数时间里,任何一个种类的开发人员,都无法独自开发出一个“端到端”能跑的软件...
软件工程确实是一个众多角色、各种技能、丰富知识下的协同大生产。但令人头疼的是,不同领域的程序员,知识技能不仅无法共享、交换,他们甚至令人怀疑是不是同一个物种:就像智人和尼安德特人虽然都是“人属”,却是两个有“生殖隔离”的物种。后端开发看不懂前端开发的代码,Android 工程师不明白 iOS 工程师的算法逻辑...
所以,生成式 AI 进入软件开发领域,第一件事情是消除一部分隔离(虽然完全抹平恐怕是短期内不太现实的事情)。
其次,IT 组织一直纠结的治理架构:团队人员按技术栈决定的技能来分组?还是按所参与的业务条线分组?也许接下来的“革新”,既不取决于“技能”,也不完全取决于“职能”,因为“智能”将带来颠覆。
上述“生殖隔离”般的问题,已经引起业界的思考。团队拓扑(Team topologies ),可以说是近年来出现的一种试图作出的改变,而且其本质上也践行了康威定律的理论。它是 Matthew Skelton 和 Manuel Pais 在 2017 年出版的《Team Topologies: Organizing Business and Technology Teams for Fast Flow》一书中提出的一种团队组织结构模型。该模型认为,团队组织结构应该根据团队的职责和业务流来设计,而不是根据技术或领域来划分。
Team topologies 将团队分为四种类型:
本质上,Team Topologies 提供了具体可行的实践指南,优化组织沟通结构,使软件系统更好地满足业务需求。它可能是 20 年来试图突破以技术栈和技能为组织分工的制约,对 IT 组织分工协同模式的一次重新变革。
生成式 AI 与相关系列技术的出现,和 Team Toplogies 的模型似乎能形成非常自然的结合,在此我们不妨“畅想”一下。
平台团队将承担起建立、提供和维护以大语言模型为核心的“自然语言计算机”系统的重任 - 这套系统把冯诺依曼架构深深隐藏,统一管理与输出:
为其他团队的 开发工作提供基础 AI 设施与服务。
赋能团队将负责对业务流团队提供 AI 赋能。他们将培训开发团队如何妥善运用提示(Prompting)、检索增强生成(RAG)、精调(Fine-tuning)、对齐(Alignment )等方法去获得所需的结果,像过去的“敏捷教练”那样,扮演“AI 教练”的角色,帮助业务应用团队更好地整体理解和使用 AI 技术,从而让整个企业的基因 AI 的软件开发最佳实践得以横向复制、规模化。
复杂子系统团队将由企业内某些领域的专家组成,他们将负责领域模型的训练、微调和知识库的建设。这些领域模型将为企业的 AI 开发工作提供有力的支持。
业务流团队将是整个组织中最贴近各类业务与市场的多支团队。他们将利用平台团队、赋能团队和复杂子系统团队提供的支持,持续高效地基于市场、客户需要,以极小的时间单位为交付周期,在平台团队所提供的 AI 基础设施上,在赋能团队的辅导下,交付软件产品。
有理由相信,业务流团队甚至不再归属于传统 IT 部门 - 因为以自然语言为基础、业务语言为核心的开发工作,可能不再需要传统意义上的软件开发工程师去负责,而是由既懂得业务、又贴近客户与市场、并接受 AI 赋能团队指导的业务部门人员去承担。
在软件开发生命周期中,一直存在许许多多的“摩擦”(Friction),如果能消除这些摩擦,让协作过程变得无缝、丝滑,让软件开发者本身获得良好的开发体验(Developer Experience),他们才有可能高效的开发出有优良用户体验的软件。
除了谈宏大缥缈的什么组织结构、定律,我们也可以更加务实的去看,AI 具体在哪些场景下有助于让软件开发团队的协作更加“无摩擦”(Frictionless)。
过去的开发团队,对自己的项目尤其是大型项目的代码库,是做不到“了如指掌”的,因此也无法“随心所欲”的修复缺陷、增加功能、敏捷发布。在大语言模型和无数的 RAG、ChatBot、Agent 工具协助下,这方面将得到极大的改观。
但在这整个软件开发生命周期中,有多少人类开发工程师还能继续存在于新一代的开发组织中呢?只有实践才能回答了。
注:本文所引用材料,Survey reveals AI’s impact on the developer experience
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。