沟通往往是功能失调的表现,意味着人们在协同合作时并没有形成紧密的联系。
杰夫贝索斯,亚马逊执行主席
传统组织强调优化效率,致力于专业化和资源的最大化使用。相较之下,现代敏捷组织则首先注重有效性和速度,优化效率放在第二位。在优化速度的过程中,尤其重视减少组织单元之间的依赖关系。有些组织甚至将这种依赖性划分为缺陷。
这种转变标志着大型组织在组织结构方面的根本变化,要求对团队结构、协作模型和系统架构进行重新评估。
在大型组织复杂的软件开发生态系统中,通常存在两种常见的依赖:技术依赖和组织依赖。技术依赖在遗留系统中最为常见,这些系统中单体架构形成了紧密相连的模块网络。即使是最小的更改,也可能导致系统内需要进行一系列调整,从而延长开发周期,并增加错误风险。
组织依赖通常源于组织结构和文化的良好意图。部门之间的孤岛效应,加之僵化的流程,可能造成决策过程中的瓶颈,抑制创新。这些依赖关系常常表现为延迟的审批、跨部门协调问题和缺乏一致性。
技术依赖和组织依赖之间存在相互关系。技术依赖会加剧组织面临的挑战,团队在管理遗留系统的复杂度时可能陷入困境。另一方面,僵化的组织结构可能阻碍更灵活和模块化技术架构的采用,例如自包含系统,这些系统包含自己的用户界面、逻辑、数据,甚至基础设施。解决这些依赖关系,对于希望提高软件开发灵活性、快速响应市场需求和技术进步的组织至关重要。
面对大型企业中的技术依赖,通常需要战略性地从单体架构转向更加模块化的方法,如微服务和小型单体Micromonoliths。单体架构,因其庞大而单一的代码库,常常导致复杂的相互依赖关系,某一领域的变化会不可预测地在整个系统中引发连锁反应。这种紧密耦合的结构不仅妨碍快速开发,还会因小的代码修改而导致整个系统的失败风险增加。
转向微服务架构,可以通过将应用程序分割为各个独立的模块来减少技术依赖,每个模块具有独特的功能和特定的API。这一转型虽然导致微服务之间产生依赖关系,但这些依赖更加清晰可见。依赖关系的清晰性促进了松耦合的架构,使团队能够独立开发、测试和部署服务。这种方法大大提升了敏捷性并降低了协调复杂性,转化为一种结构化、可管理的架构,使系统整体更加稳健和灵活。
向这种架构范式迈出的一个中间步骤便是采用小型单体架构。在保留某些单体架构特征的同时,这一方法开始通过模块化某些应用程序方面来进行分解。对许多组织而言,这是接纳微服务的实际第一步,也逐步适应新的结构和流程。
这些模块化架构不仅便于建立更灵活和可扩展的系统,还赋予开发团队足够的自主权,使其能够快速创新和调整。这在当今快速变化的技术环境中至关重要。
解决大型企业中的组织依赖,需要有意识地重组团队和流程,以促进更大的自主权和灵活性。关键在于全方位、整体地审视软件价值链,从始至终。
在与AWS客户讨论其软件开发流程时,我常常要求他们展示Scrum或看板Kanban板,特别关注最后一列。绝大多数情况下,这一列标记为“完成”。之后的对话通常如下:
我询问,“‘完成’是什么意思?用户是否能有效使用这个软件?”
“没有。我们只是完成了开发,软件仍需整合。”
“那整合后会有人使用吗?”
“不会。接着还需要测试和发布前提是修复所有的错误,或者至少优先处理部分错误。”
“那到时候所有用户都能使用了吗?”
“不是。它还需要在生产环境中安装、负载测试、认可和发布。但之后用户就可以使用软件了。”
“每个过程步骤的执行频率有多高?”
“整合每月进行一次测试和发布也是。但通常需要更长时间。我们每季度发布一次到生产环境,除了第四季度由于圣诞节的原因,因此每年实际上发布三次。”
遗憾的是,当我询问软件开发开始前的上游环节时,板上的第一列通常被标记为“待办”或“待处理”。你会认为这是团队用来收集、评估、优先排序以及处理所有意见的地方,但在大型组织中,即便是采用敏捷软件开发,这往往并非如此。
工程师首先会明确新想法的需求,以便创新或指导委员会能够进行优先排序。然后,商业分析师编写商业计划,为此需要请求、审查、谈判、调整和获得批准预算。一位解决方案架构师则基于需求和商业计划制定IT设计,开发团队随后对其进行实施。优先级每季度安排一次。商业案例的撰写是持续进行的,只在资源可用时进行,并在每季度获得批准。预算则是年度制定,IT路线图的决策则是每月做出的这一切都在一个“完全敏捷的组织”中进行。
从软件开发的视角来看,尽管组织看似灵活迅速,因为团队每两周发布一次软件,但从终端客户的角度,实施 urgent 的请求可能需一年时间。
简化大型企业的生命周期超越了开发和部署,涵盖了对所有阶段的全面改善,包括创新、验证、预算、需求工程和规范的上游流程。这种全面的方法对于缩短从想法到影响的整体时间至关重要。可以通过以下几个步骤来实现这一目标。
首先,自动化重复且耗时的任务,特别是在测试和部署环节。自动化这些流程不仅加快了开发周期,还提高了准确性,减少人为错误。CI/CD管道就是这一方法的典型例子,使团队能够频繁可靠地进行集成和部署。
其次,寻找实际软件开发上游的低效和延误。简化从改善创意和验证阶段开始,敏捷方法如精益创业Lean Startup可以发挥重要作用。这种方法倡导快速原型和迭代测试,确保只有经过验证的创意才能进入开发阶段。
第三,注意预算和需求工程。传统的年度预算周期和冗长的需求收集阶段通常会显著延误项目启动。引入更加敏捷的预算实践,根据变化的优先级分配资金,并将需求收集融入实际软件开发阶段,可以大幅缩短前置时间。
最后,简化规范过程,可能通过授权开发团队在解决方案设计中扮演更积极的角色,也可以进一步减少瓶颈。通过实施这些战略,企业可以实现从最初的想法到最终部署等生命周期的无缝高效运行,显著提高其灵活性和市场需求反应能力。
AWS资深首席传播官Gregor Hope曾写道:“每个人都按照自己认为最佳的方式行事并不是自治,那是混乱。”
提升组织的表现和速度的关键在于赋予团队自治权,并确保他们独立运作。团队拥有做出自己决策的自由,能够缩短周期。这种模式提升了绩效,增强了组织的整体效率。
然而,自治的好处是有一定限度的。超过某一程度,团队可能继续改进,却可能导致组织整体绩效的下降,尤其是在客户的眼中。
例如,过度自治的案例便是当团队能够选择自己的技术工具和编程语言时。这种选择显著影响团队的合作和代码共享。例如,如果两个团队使用相同的编程语言,他们可以更轻松地通过拉取请求或共同代码所有权等方式共享代码。这种方式促成了灵活的互动。然而,若团队选择不同的编程语言,则推动了一种僵硬、相互依赖的协作方式。
在解开组织的复杂性、提升组织灵活性和审速度方面,关键在于在地方自治与整体对齐之间取得平衡。向微服务转型并优化整个软件开发生命周期,有助于打破技术和组织依赖,促进快速创新。这一策略确保在极大加速软件开发过程的同时,保持竞争优势,从而提高市场响应能力。
[1] Blank Steve “Why the Lean StartUp Changes Everything” 哈佛商业评论,2022年1月3日。https//hbrorg/2013/05/whytheleanstartupchangeseverything
标签: 敏捷,变革管理,文化,领导力,组织灵活性,团队建设
Matthias于2023年初加入企业战略团队,此前曾担任AWS解决方案架构的首席顾问。在此角色中,Matthias与高管团队协作,探讨云计算如何帮助提升创新速度、IT效率,以及技术所带来的商业价值。在加入AWS之前,Matthias曾在AutoScout24担任IT副总裁和在Home Shopping Europe担任董事总经理。他在这两家公司规模内引入精益敏捷运营模型,并推动成功的云转型,实现更短的交付时间、提升的业务价值和更高的公司估值。