通常来说,软件开发团队经常会遇到障碍。但障碍可能是伪装的浪费,而且很难识别和解决。我发现,数据科学可以成为一个有趣的工具,帮助团队与障碍和浪费作斗争。
在我攻读硕士学位期间,我开展了关于如何利用精益浪费概念和数据科学发现价值流中的浪费和障碍的研究。这篇文章介绍了我使用数据科学检测浪费和障碍的方式,以及一些概念和相关信息,帮助团队弄清他们努力摆脱的障碍从根本上讲是如何产生的。我在研究过程中发现的知识包括扩大了的浪费分类,以及使用趋势来发现意外情况,如隐藏的延期积压项目和缺陷趋势。
理解软件开发行业中的浪费
在我的职业生涯中,我观察到一些事情,比如团队试图在几天内收集所有的需求,并在产品开发过程中取消了许多需求。这些团队关心的是收集尽可能多的需求,而没有考虑对客户有什么价值。通常,几周后,客户会取消一些需求。考虑到浪费的主要含义,即对客户没有价值的活动,这些取消的需求就成了浪费。问题是:这些取消的需求存在的主要原因是什么?这些团队是否知道如何在他们所处的语境中定义价值?
在这种情况下,团队把取消需求当作正常的事情来处理(我们是敏捷的,需求变化是正常的)。另一方面,我看到了团队如何理解价值的含义,并不断向客户提供价值。发现过程也是持续的。因此,我了解到,浪费不只是不能给客户带来价值,而且会影响价值流,甚至会终止公司之间的关系。
浪费的概念是由大野泰一在研究丰田生产系统时提出的,是指那些不能给客户带来价值的活动。在研究过程中,我发现这个概念在应用于软件开发行业时受到了一些批评,因为它来自制造业,而这个行业有自己的知识领域,与软件开发领域并不相同。
我发现了一个更适合我们行业的关于浪费的概念:浪费是对价值创造造成某种障碍的东西。这个概念来自于 Power 和 Conboy(2014),并在他们关于浪费的研究《流程障碍:重新思考现代软件开发中的精益概念“浪费”》中对浪费进行了定义。他们的研究是在软件开发行业内进行的。
障碍和浪费有以下关系:浪费可能是障碍,也可能导致障碍。例如,过期的手册本身并不是障碍,但它可能会导致因误导而返工。另一方面,等待管理层的批准也是一种障碍和浪费。
在书目审核过程中,我对 40 篇科学论文进行了分析,这些论文调查了公司和软件开发人员所面临的浪费、障碍和挑战。该分析让我可以识别出每个公司(或一系列公司)内发生的一系列浪费,并创建一张地图,展示两种浪费同时出现的可能性。
其结果是一个包含 22 种浪费的浪费模型,分为 6 个类别,以及一张显示浪费之间关系的地图。这些类别是:产品、过程、信息与通信、产品、过程和组织。接下来提供的是帮助检测浪费的方法和软件。根据软件提供的信息,可以了解发生了什么,发现了哪些浪费,并调查产生浪费的根本原因。
消除障碍
下一步是创建一个方法,包括一个算法和实现该算法的软件。该软件读取问题并检测有关缺陷、被卡住问题(延迟浪费)、交付的上升趋势,并将有关流程情况的全部信息汇总成一个指标,通过下面的仪表呈现。这个指标回答了以下问题:我们的情况正在变好还是变坏?根据检测到的浪费和之前创建的浪费关系图,这组趋势让我们可以进一步探讨浪费和障碍。
在这项调查中首先要了解什么浪费趋势在上升(延迟、缺陷或两者兼而有之)。在此基础上,可以寻找相关的浪费以及所发现的浪费之间的因果关系,以确定根本原因是什么。
我联系了一些公司做试验,但只有一家公司同意这样做。我发现,评估整个方法是否有效的方法是,计算四个月内交付的波动以及缺陷和其余交付之间的比率。通过这个比率可以看出缺陷是在增加还是在减少。之所以选择这样一个时间段,是因为这项试验是为了评估试验前后的缺陷情况。在参与研究的公司里,这两个指标都降低了。我给其他公司做了一些演示,但他们没有兴趣继续进行试验。
每个试验都使用了从公司 Jira 系统中收集的信息。我创建的软件对收集到的信息进行了分析,它可能会发现浪费和浪费发生的根本原因。我在公司的联系人做了必要的工作来消除根本原因,之后,我重新对流程进行了分析,以验证解决方案是否有效。
对于发现的浪费,其中一些根本原因是:对就绪的定义模糊,以及开发人员在测试方面没有足够的专业知识。该软件检测到延期浪费有上升趋势。根据浪费关联图,可以发现测试时间长于预期,而其根本原因是开发人员缺乏足够的测试知识。得出这个结论后,公司采取的行动是对团队中所有开发人员进行自动化测试培训。
探索趋势
我意识到,趋势分析是一种无需评判就能影响人们的工具。例如,趋势分析可以告诉团队,某些浪费有上升趋势,而不是某个问题被卡了 149 天。当我们把这种信息显性化以后,它似乎是一种不得要领的窘境。通常,图表的斜率可以反映出未来 10 天内交付和浪费的情况。这些趋势会引发人们的好奇心,非常有助于进一步弄清楚团队中正在发生的事情。
我与其他公司保持着联系,希望他们能加入我的研究,但没有人同意这样做。我向他们演示了这个方法和软件。我向第一家公司的 CTO 展示的缺陷趋势让他感到很害怕,但延期趋势更糟糕。当我指出存在的延期趋势时,他开始对进一步调查这一趋势表现出兴趣。在调查过程中,我们发现了延期的根本原因,那是因为公司高管经常改变优先级。遗憾的是,我不知道该公司是否消除了这个根本原因。
另一家与我与之保持联系的公司也出现了类似的情况。我从他们的 Jira 系统收到了一些数据,运行了软件,并开会讨论了结果。这些数据有个标签:最差团队的数据。之所以有这个标签是因为敏捷教练认为那是表现最差的团队。软件检测到一个与延期趋势有关的问题。我发现根本原因是,公司高管给整个公司定义了一个零缺陷的目标。这导致了人们加班和离职。之后,公司招来了新员工,而培训需要时间。因此,积压工作项花费时间太多,这给其中一个团队带来了“最差团队”的名声。当该公司的敏捷教练意识到这一现实时,他们叫停了我的演示。
重点关注
在该公司做试验的过程中,根据为软件开发而设计的概念应对浪费,有助于了解环境中存在的问题、在研究阶段定义的浪费模型以及开发出的软件。例如,像信息过时、信息分散、认知负荷和缺乏共同理解这样的浪费,非常有助于理解该公司内部出现了什么问题。这些浪费超出了不能给客户带来价值的活动的概念。
此外,处理事实而不是对趋势的看法,随着试验的进行降低了交付的波动。例如,对延期浪费的研究使我们意识到开发人员缺乏自动化测试知识。这是一个很好的机会,通过提供培训来提高开发人员的专业知识和团队精神。
最后,团队基于趋势的分析使得调查过程不需要专注于原始数字和判断。它为流程的改进带来了必要的心理安全。一组趋势可以让我们从总体上了解正在发生的事情,而其中展示的一些指标如产量则有助于加深我们的理解。
作者简介:
Everton Lucas 自 1998 年以来一直从事软件开发工作,他见证了这个行业的发展变化。从 2008 年开始,他接触了敏捷方法,并成为这种工作形式的爱好者。他的目标是消除环境中不必要的工作和浪费,帮助开发人员提高效率。
原文链接:
Getting Rid of Wastes and Impediments in Software Development Using Data Science
评论