通过巧妙运用敏捷原则,实现数据效率和适应性。
译自 Agile Data Management Explained and Demystified,作者 Daniel Quadros。
借鉴软件开发领域,在那里“敏捷”已经成为几十年的流行词,如今的数据工程师们越来越多地谈论敏捷数据管理。理论上,敏捷的数据管理方法能够提高效率和可靠性,从而为负责数据管理的工程师和寻求从数据中获取价值的企业带来更好的结果。
然而,在实践中,敏捷数据管理并不总是按计划进行,因此采用现实的、适应性强的敏捷方法非常重要。敏捷是一个值得努力追求的目标,但它也是团队经常达不到目标的领域。
让我解释一下敏捷数据管理包含什么内容,现实情况与理论通常有何不同,以及组织应该采用哪些实践才能确保他们充分利用敏捷,同时控制其缺点。
敏捷数据管理是一种收集、处理、分析和报告数据的方法,它强调灵活性和迭代变化。
至少,这是敏捷数据管理的基本定义。对敏捷在此上下文中确切含义的具体理解可能会有所不同,因为敏捷是一个高级概念,将其转化为实际实践的方法有很多种。但总的来说,当您以敏捷的方式管理数据时,您通常会专注于将复杂的项目分解成更小、更容易处理的部分,同时优先考虑灵活性和适应性。
例如,假设您想分析销售数据以预测未来的趋势。在敏捷方法下,您会将流程的每个部分——收集数据、转换和重组数据、分析数据以及生成结果报告——视为一个不同的阶段。您还可以在每个阶段迭代多次以改进每次迭代的结果。
这与在开始时没有系统、协调的策略就随意处理和分析数据不同——这与敏捷方法正好相反。
这些敏捷数据管理实践与敏捷软件开发的核心概念密切相关,敏捷软件开发将软件项目分解成多个阶段,同时优先考虑灵活性和协作。
理论上,敏捷数据管理听起来很棒。它承诺为可能变得复杂、混乱、冗长的项目带来秩序和效率。
然而,在实践中,将敏捷原则应用于数据管理可能很困难。主要有两个挑战:
- 不可预测的时间表:您可以为您的数据管理项目规划路线图,列出每个任务以及您认为需要多长时间。但是您不能保证您的预计时间表将是您的实际时间表。诸如构建数据基础设施或配置业务智能 (BI) 报告等任务非常复杂,通常不可能准确预测它们需要多长时间。
- 不可预测的数据质量:如果您管理的数据质量低或难以访问,您将需要投入更多的时间和精力来转换和分析它。但是,因为您无法在数据管理流程进行之前确定正在处理的数据质量,所以无法提前确定数据质量问题可能会在多大程度上破坏您实施一致的敏捷流程的尝试。
第二个挑战尤其值得注意,因为它是一个从根本上区分敏捷数据管理与敏捷软件开发的因素。当您构建软件时,您从一开始就知道您正在处理什么,并且通常可以控制所有重要的变量(例如您使用的编码语言和您设置的IT基础设施类型)。
然而,在分析数据时,数据质量是一个你常常无法控制的未知变量。除非你从一开始就设计和管理了数据生成过程——这种情况很少见,因为企业想要探索的数据通常是在很长一段时间内收集的,开始于他们还不完全知道自己想用它做什么之前——你必须使用现有的数据,而不是你希望拥有的数据。
这些挑战并不意味着团队应该放弃敏捷数据管理。尽管它有缺陷,敏捷仍然值得去做,因为它可以帮助提高复杂项目的效率和一致性。
然而,这意味着工程师应该预料到他们的项目并不总是会按计划进行,并且应该积极主动地应对敏捷方法处理数据时固有的挑战。
例如,在我的公司Indicium,我们优先采用敏捷方法进行数据管理,但我们也实践以下方法来帮助管理风险。
- 谨慎对待路线图: 我们创建路线图来构建项目,但我们假设它们非常不确定。例如,仅仅因为我们安排了两周时间来设置数据基础设施,并不意味着我们假设它会正好需要两周时间。它可能更长或更短。
- 预留时间余量: 同样,我们倾向于高估任务以预留一些额外的 时间余量。例如,如果我们预计一项任务需要两天半,我们将把它安排为三天。比预期少用时间远比进度延误要好。
- 并行任务: 在规划项目时,我们的目标是尽可能多地并行执行任务。例如,如果我们可以在评估数据质量的同时设置数据基础设施,我们将同时进行这两项工作。有些流程,例如BI报告,必须等到其他流程完成后才能进行,因此并行处理的程度是有限制的。但是,当同时执行多个任务时,即使某些领域存在延迟,你也可以加快整个项目的进度。
- 清晰的利益相关者沟通: 在规划项目时,我们努力与业务利益相关者进行清晰透明的沟通。我们强调暂定的时间表就是这样——暂定的——并且我们会随时向他们更新项目进展中的变化。那些依赖数据管理和分析来做出业务决策的人需要了解分析何时完成,而让他们蒙在鼓里——或者用你无法保证的时间表承诺误导他们——对任何人都没有好处。
这些实践使数据管理策略既敏捷又务实。它们使我们能够尽可能地在数据管理中提高效率,同时避免那些无法实现的目标或承诺,至少不是每次都能实现。
敏捷数据管理最终应该关注的是:透明度和实用性。正如我上面提到的,你无法像在软件开发中那样控制数据管理中的变量,因此,在应用敏捷原则时,数据工程师需要比软件工程领域的同行采取不同的操作方式。追求完美,但也要为无法实现完美做好计划。