来源:https://www.netsolutions.com/insights/7-principles-of-lean-software-development/
精益开发是一种方法论,最初应用于制造业,但现在正被应用于管理、用户体验、初创企业和软件开发。精益软件开发是通过减少浪费优化价值创造的过程。在一个公开的例子中,利用Scrum(敏捷)团队的[生产率是传统团队的两倍,缺陷比传统团队少40%。通过关注大局和减少开发中的浪费,精益项目更有可能成功并加快上市时间。
在本指南中,我们将明确定义精益开发的概念,包括概述精益软件开发的七项精益原则以及如何将它们应用于软件开发。最后,我们将研究精益初创企业的概念以及精益方法论是如何在商业世界掀起波澜的。
什么是精益软件开发(LSD)?
精益发展方法论大量借鉴了制造业,在制造业中,“精益”成为消除“浪费”的过程——更少的人力、更少的设备、更少的时间和更少的空间。这一概念最早由丰田引入由日本工程师大野泰一和丰田荣二开发的丰田生产系统。“精益”一词直到20世纪90年代才被创造或正确定义。
精益方法论刚刚开始应用于服务业和信息技术,在这些行业,“浪费”可能是手工、低效和重复的流程或程序、现场支持、软件或技术蔓延、重复性任务和其他非附加值任务。这里的关键概念是价值——通过消除浪费,一个人只能保留创造价值的东西。
精益软件开发(LSD)通过七项关键原则表达了这些精益制造概念,这些原则的重点是在优化客户价值的同时最大限度地减少浪费和风险。
什么是精益创业?
本指南介绍了精益的概念,并解释了为什么以及如何将这些概念应用于精益软件开发。但是,如前所述,精益正在许多行业和多种形式中掀起波澜,最引人注目的是初创企业。初创企业的失败率高达90%,其中35%的失败是由于误读市场需求,另有20%是由于意外竞争。其他常见的失败包括资金耗尽或没有合适的团队。
定期退后一步,思考你是否在快速变化的市场中追求正确的增长机会。不要陷入“沉没成本谬误”,在这种谬误中,你无法超越最初的想法和投资。——拉杰·古拉蒂和瓦桑达拉·索瓦尼,《哈佛商业评论》
精益创业公司对新业务采取基于数据的方法,应用精益方法论来确保产品市场的正确契合度,并确保资源得到优化,以加快上市时间。精益创业公司倾向于:
对冗长的商业计划进行试验
客户反馈(验证学习)优于直觉
迭代开发优于前期开发
最小可行产品超过完整产品
试验胜过坚持不懈
精益创业公司可能会将新产品(实物、服务或软件)引入现有品牌,也可能是围绕一个想法涌现的新业务。
精益创业公司通过预先和定期的研究降低风险,确定对新想法/产品的需求,以及产品的开发是为了尽可能快速有效地满足这些需求。通过这个过程,精益创业公司可能会“失败”,但会很快失败,因为方法论会很快将好想法从坏想法中分离出来。
通过持续反馈的过程,精益创业公司能够灵活地支持持续创新。
精益软件开发的7个关键原则
崩溃
在制造业和丰田生产系统中,基本原则被称为丰田之路。在2003年出版的《精益软件开发》一书中,作者玛丽·波本迪克和汤姆·波本迪克围绕软件开发组织并阐明了这些原则,创造了精益软件开发的七项基本原则。这七项原则至今仍被广泛接受。
1.消除浪费
精益哲学认为,没有为成品提供价值的一切都是浪费。在软件开发中,精益在开发的每个阶段寻找浪费,从概念到完成。根据波本迪克的说法,这种浪费可以包括:
部分完成工作/开始太多
不必要的代码或功能
要求不明确或不断变化
任务切换
等待、延迟或无效移交
不必要的会议或无效的沟通
缺陷或质量问题
重新学习(当糟糕的协作或沟通导致知识孤岛、长时间延迟、任务交换时)
管理活动,或者直白地说,不必要的官僚主义
为了消除浪费,精益倡导者审视每一个活动或过程,然后问:“没有它,我们能达到预期的结果吗?”如果是,应该消除它。价值流映射有助于可视化步骤或流向未来状态的流程,帮助发现哪些步骤为产品增加了价值。就管理负担而言,持续价值流管理过程(对流程改进进行小规模、频繁的检查)通常发现的浪费比它产生的要多。
价值流有助于确保正在开发的软件和服务为员工或客户提供价值。-Eveline Oehrlich,企业家项目
有几个可用的价值流映射工具,包括Ludichart、Plandek和Smart Draw。许多组织还利用项目管理软件来消除浪费。
2.增强学习
上面提到的浪费之一简要地涉及了再学习的问题,指出了知识的重要性。第二个精益原则建立在这个概念之上。“放大学习”是创造和保留知识——以避免代价高昂的再学习,但也是收集和测试新想法,以避免构建错误的功能或导致缺陷。当学习发生时,通常是在三个领域之一:新技术、新技能,或者更好地理解用户想要什么和需要什么。
知识是如何创造和保留的?
用户故事开发
代码审查/对编程
持续学习,包括指导、社区活动、提升技能
重构和集成测试
将知识记录到维基或代码存储库(GitHub)
注释代码
知识共享/协作/培训
在精益中,学习过程由短迭代周期支持,以持续提供关于客户需求、问题和潜在解决方案的反馈。例如,精益包含测试小实验的概念,如改变设计元素的颜色或添加不同的图像。通过测试(如A/B测试),我们为持续改进提供基础。
有许多工具可以帮助放大学习,包括用户故事映射工具,如Featmap或Avion,自动化测试工具或团队维基工具,如Slab或Tettra。
3.尽可能晚地作出决定
推迟承诺的概念建立在需求根据客户、竞争市场或新兴技术的反馈而变化的前提之上。简而言之,精益的目标是通过反复测试和实验来消除尽可能多的不确定性,以便能够在变化被进一步的开发锁定之前适应变化或纠正错误。
尽可能晚地决定意味着:
不要计划太多细节(粗略的笔画很好)
不过度计划(乐于改变)
不断地实验、测试和整合反馈
几乎我们所知道的关于良好软件架构的一切都与使软件易于更改有关。――玛丽·波本迪克,《实施精益软件开发:从概念到现金》
有许多技术可以[验证你的产品想法。关键不仅仅是收集用户反馈,还要欢迎新的变化。
4.尽快交付
精益的总体目标是通过减少浪费来优化价值,这一过程最终旨在交付正确的产品并开发正确的产品。换句话说,精益有助于确保正在构建的产品(在这种情况下是软件)满足客户需求,同时确保交付时没有重大缺陷。这是精益产品开发的基础。
精益项目如何优先考虑速度?
专注于短迭代和持续集成
支持有效的沟通和协作
考虑MoSCoW方法,明确定义功能,以避免过度交付
在不增加延迟的情况下支持客户反馈和测试的系统
每日站立会议,以确定需求和障碍
有几种实用的方法可以优先考虑速度,包括实时软件开发、测试驱动开发甚至团队设计的概念,以减少任务交换和避免昂贵的重新学习。
5.赋予团队权力
精益原则有时被称为“尊重他人”,这是一个经常被忽视的原则——不幸的损失。目前软件开发中的倦怠水平高达80%,部分是受2019年冠状病毒病的影响,但也受整体工作量水平的影响。在软件开发中,尤其是在初创企业或游戏中,倦怠是工作中几乎意料之中的一部分。精益将人作为一种宝贵的资源重新排序。
精益发展通过以下方式授权和尊重团队成员:
鼓励团队之间公开和定期的沟通
确保有团队领导或项目负责人定期与客户互动
确保领导人看到正在做的工作
赋予每个团队成员责任和自我管理的能力
每个具有精益思想的人至少有一个共同的症状:我们喜欢观察工作。我们喜欢去现场看创造价值的工作,企业的真正工作。
说到健康的团队发展,有很多资源可以用来提高领导技能或进行团队沟通。
6.建立诚信
完整性指的是软件代码的质量,这就是为什么这个原则有时被称为“构建质量”产品有两种形式的完整性:感知和概念。
感知完整性——对最终用户来说显而易见的软件元素(可以看到或与之交互)。例如用户界面。这种形式的完整性优先考虑对客户需求的理解和需求的有效沟通。
概念完整性——用户从未见过或接触过的软件元素,确保产品的愿景反映了一个一致的整体,平衡了“灵活性、可运维性、效率和响应性”产品应该在一致的实体或操作上工作,以避免重复,并确保系统作为一个整体具有完整性。
精益在建立质量和制造浪费之间有一个微妙的平衡:你需要足够的测试来确保一个高质量的产品没有重大缺陷,但是太多的测试可能是浪费的来源。迭代测试和短迭代有助于确保有用信息的持续流动朝着创建一个满足客户需求的系统的方向发展。
精益软件开发依赖于重构、测试驱动开发、结对编程、增量开发和反馈等工具,并尽可能利用自动化。
7、优化整体
在前面的原则的暗示下,精益认识到软件不仅仅是各部分的总和,也是各部分之间的相互作用。优化整体着眼于依赖关系,构建协作,以确保每个员工都被激励为整体而不仅仅是他们的部分进行优化。
当衡量个人或组织的专业贡献而不是整体绩效时,可能会导致次优化。-Poppendieck
精益软件开发的利弊
下面的表格突出了精益软件开发模型的优缺点:
精益行动
让我们看看精益在行动,以及真正的公司是如何从精益创业思维和精益软件开发中受益的。
DropBox
DropBox采用了精益创业原则,通过在用户所在的地方接触用户来整合即时、高质量的反馈,帮助他们在发布后7个月内接触到1亿用户。
Buffer
Buffer在发布后2.5个月内达到了500名用户,付费客户的转化率为4%,方法是将精益的概念应用于构建一个“比你想象的要小得多”的最简化可实行产品最小的测试只是一个有两页的网站来测试这个想法是否引起共鸣。如今,Buffer在其社交媒体管理平台上拥有100万用户。
HubSpot
HubSpot利用精益思维创建其营销平台,以多种方式直接向客户学习——直接反馈、论坛、客户支持——并允许客户成为他们的主要支持者,不断迭代以满足客户日益增长的需求。HubSpot设法从0美元收入增长到2亿美元。
小结
精益软件开发方法论侧重于快速有效地交付价值。然而,要想精益有效,你需要拥有足够正确技能的合适人员来最大限度地减少浪费。如果存在信息技术技能差距,这是当今美国企业的一个主要问题,这可能是精益发展的障碍。
在网络解决方案公司,我们为每个客户和产品带来精益思维。当你给我们带来一个想法(或者更好的是,一个客户问题)时,我们收集洞察力。这个过程被称为发现。我们问:
你的用户面临的问题是什么?
你的产品或服务将如何解决这个问题?
问题是真实的吗?或者,你想解决一个不存在的问题?
用户为什么会购买你的产品或服务?