【每日一学 20261014】《程序员生存手册》——敏捷开发

2026-10-14 11:01:00
蓉蓉
原创
18


1.Scrum:迭代式增量软件开发

Scrum是一个轻量级的框架,它帮助个人、团队和组织,通过对复杂问题提供适应性解决方案来产生价值。

2.编程:软件开发工程实践

极限编程是基于简单、沟通、反馈、勇气和尊重5类价值观构建的软件开发行为准则。它的工作方式是将整个团队聚集在一起,通过践行一系列简单的实践和足够的反馈,使团队能够感知目前的状态,并根据自身独特的情况对实践进行调整。


(1)核心实践:整个团队

在极限编程中,项目的每个贡献者都是“整个团队”的组成部分。团队围绕着一个叫作“客户”的业务代表,客户和团队坐在一起,每天和他们一起工作。

(2)核心实践:规划机制,小型发布,客户测试

极限编程团队采用一种简明扼要的计划和追踪机制,以明确下一步的行动,并预估项目的完成时间。该团队专注于快速实现业务价值,通过一系列小型、高度集成的软件发布来开发软件系统,并确保每次软件发布都能通过客户定义的所有测试。

(3)核心实践:

简单设计,结对编程,测试驱动开发,重构极限编程实践者结对或组成小组工作,采用简单的设计和经过严格测试的代码,不断地重构,使其始终符合当前的需要。

(4)核心实践:持续集成,集体代码所有权,编码标准

极限编程团队采用结对编程的方式紧密合作,共同编写代码。他们遵循统一的编码标准,以确保每个人都能理解代码并能对代码进行必要的改进,从而保证系统始终处于可运行和可集成的状态。

(5)核心实践:隐喻、可持续的步调

极限编程团队共同拥有一个简单而共识的整体视图,对系统的形态有清晰的认识。每个团队成员都以可持续的、无限期的步调工作,确保项目的持续进行。

3.看板:可视化管理

什么是看板?简单来说,看板是一种可视化管理工作的方法(也称知识工作)。通过看板,工作流程和任务状态可以清晰地展现在团队成员面前,以便团队成员更好地管理和跟踪工作进度。


应用看板方法意味着应用一种综合的思维方式来思考我们的服务,着重于从客户的角度出发,不断改善服务的质量和价值。

(1)可视化

合理的可视化是有效合作和识别改进机会的关键。在许多情况下,组织中的工作是不可见的。将这些工作和流程可视化,可以极大地提高透明度。从进化的角度来看,人类的视觉感知是非常古老的,它使我们能够在短时间内吸收和处理大量的信息。此外,可视化通过信息共享使所有人看到相同的画面,对团队合作来说更加友好。

(2)限制在制品

在制品(orkin Progress,WIP)指的是在某一时刻正在进行的工作项目的数量。通过应用看板我们发现,有效的系统更注重工作的流动,而不是员工的利用率。当资源被充分利用时,系统中就不会有任何松弛的部分,结果就是工作的流动会受到影响,就像公路上的拥堵。


在知识工作中,我们也会面临上下文切换的问题,这可能会大大降低员工的效率。在看板中,我们限制WIP的数量,可以平衡员工的利用率,并确保工作的流动。

(3)管理流动

管理工作流动的目标是尽可能顺利、可预测地完成工作,同时保持一个可持续的速度。如前文所述,限制WIP是确保流程顺畅和可预测的关键方法之一。对工作流动的监控或测量会产生重要的信息,这些信息对于管理客户的期望值、预测和改进都非常有用。

(4)明确决策

我们每天都会面临无数关于工作安排的决策,无论是个人独立决策还是群体的共同决策。


所以工作安排的决策应该由所有相关方共同商定,包括客户、利益相关者和负责看板上工作的员工。这些决策应该被放置在一个清晰可见的地方,最好是在看板旁边。这样,所有参与者都可以随时查看并了解这些决策。透明度和可见性对于确保共享理解和一致性非常重要。此外,定期检视和调整这些决策也是必要的。随着时间的推移和经验的积累,我们可能会发现一些需要修改或改进的方面。通过定期回顾,我们可以及时发现问题并进行必要的调整,以确保决策的持续有效性和适应性。

(5)实施反馈环路

反馈环路是协调交付和改善服务交付的必要条件。一套适用于特定环境的反馈环路可以加强组织的学习能力,并通过管理和检验来实现组织的发展。


在看板系统中,一些常用的反馈环路手段包括看板、衡量指标以及一套定期的会议和评审(这被称为“节奏”)。

(6)协同改进,通过试验进行演进

在看板方法中,我们主张从现有的工作方式开始,认同通过渐进的变革来追求改进,激发各级领导力。


看板方法是一种持续改进的方法,它鼓励使用基于模型和科学方法的设计试验来推动变革。看板和衡量指标起着至关重要的作用,通过结合看板和衡量指标,我们可以更好地指导变革和演进的道路,并基于实证数据做出决策。

4.规模化敏捷:大型敏捷实施

(1)SAFe

SAFe是一个经过验证的集成原则、实践和能力的知识库,用于使用精益、敏捷和DevOps实现业务敏捷性。

(2)LeSS

LeSS (Large-Scale Scrum)是一种大规模的Scrum方法论。它并不是对Scrum的新定义或改进,也不是通过在底层添加额外层级来处理多个Scrum团队的方法。


LeSS的核心理念是在大规模环境下以简单的方式应用Scrum的原则、目的、元素和优雅性。它强调保持Scrum的本质和简洁性,同时提供适应大规模需求的指导和实践。


与Scrum和其他真正的敏捷框架一样,LeSS是一种“恰好够用的方法论”,即它提供了必要的指导和结构,但也鼓励团队根据自身情况进行适应和调整。LeSS不是一种僵化的框架,而是一种敏捷方法,鼓励团队在实践中学习和不断改进。


LeSS的目标是在大规模环境中实现敏捷的价值交付,并促进协作、透明度和自组织。它提供了些实践和原则,以帮助团队和组织处理规模化带来的挑战,并在保持Scrum简单性的同时实现良好的协同工作。


总而言之,LeSS是一种关于如何在大规模环境下简化应用Scrum的方法论,它强调保持敏捷原则和简洁性,并鼓励团队根据实际情况进行调整和改进。

(3) Nexus

Nexus是一个由3~9个Scrum团队组成的大组,旨在合作交付同一个产品。在Nexus框架中:
  • 所有团队共享同一个产品待办事项列表,并由一位产品负责人进行管理;
  • 框架明确定义了团队的责任、事件和工件,有效连接不同Scrum团队的工作;
  • Nexus在Scrum的基础上建立并扩展,满足大规模团队协作需求;
  • 通过共享产品待办事项、定义责任与事件等,NeXus帮助团队在大规模环境中协同工作,实现共同目标。

(4)Scrum@Scale

Scrum@Scale是一种框架,旨在帮助组织有效地整合多个团队,让组织能够专注于高优先级的目标。它通过构建一个最小可行官僚(Minimum Viable Bureaucracy,MVB)架构来实现这一目标,该架构能够自然地将单个Scrum团队的工作方式扩展到整个团队网络。


团队网络一旦实现线性可扩展性,那么即便在增加资源或负载的情况下依旧能保持相对稳定的性能和效率。如果以此为目标设计、协调团队网络,团队网络的规模可以实现自由扩大。线性可扩展性允许团队网络根据其独特需求,以可持续的变革速度有机地发展,这使得参与的每个人都能够更好地适应团队网络。

来源:《程序员生存手册》
发表评论
通过审核后显示您的意见