我犯过的 5 个敏捷错误以及如何解决它们

将敏捷引入您的组织,不要害怕为了让您的团队变得更好而忍受一些错误。
6 位读者喜欢这篇文章。
Brick wall between two people, a developer and an operations manager

敏捷曾经被认为是“只适用于小型团队和小型项目管理”。 现在它已成为全球软件开发团队广泛使用的学科,并取得了巨大的成功。 但是,敏捷真的能带来价值吗? 这取决于你如何使用它。

自从我进入科技行业以来,我的团队和我一直在使用敏捷。 这并非一帆风顺,一路走来学到了很多东西。 学习的最佳方式是犯错误,所以为了帮助你进行自己的敏捷之旅,这里有我犯过的五个敏捷错误。

1. 错误:敏捷只发生在开发团队中

以下是将敏捷限制为仅限开发团队时会发生的情况。 您的业务团队编写项目的需求,然后将其发送给开发团队,并设定截止日期。 在这种情况下,开发团队不直接负责业务目标。

团队之间的沟通很少,更不用说谈判了。 没有人质疑业务团队提出的要求,或者是否有更好的方法来实现相同的业务目标。

这也会让开发团队感到沮丧。 当开发人员只负责填写代码以使机器工作时,他们与业务脱节。

最终产品变成了一个怪物,缺乏合理的抽象和设计。

解决方案:在您的组织中传播敏捷。 让每个人都从它中受益,无论哪种方式适合他们的部门,但最重要的是让它统一每个人的目标。

2. 错误:自动化测试的设置工作量太大

自动化测试(尤其是测试驱动开发 (TDD))的作用经常被 IT 行业低估。 我认为,自动化测试是可维护和高质量软件的基石,甚至比生产代码更重要。

但是,如今大多数团队都没有能力进行自动化测试,或者有能力但由于时间限制而拒绝这样做。 如果没有自动化测试的保护,程序员就无法持续重构糟糕的代码。

这是因为没有人可以预测更改几行代码是否会导致新的错误。 如果没有持续的重构,您会增加您的技术债务,这会降低您对业务部门需求的响应能力。

手动测试速度慢,并且迫使您牺牲质量,只测试更改的部分(这可能很困难),或者延长回归测试时间。 如果测试时间太长,您必须分批测试以减少执行的测试数量。

突然间,你不再敏捷了。 你已经转换为瀑布模式。

解决方案:自动化测试的关键是让开发人员运行测试,而不是雇用更多的测试人员来编写脚本。 这就是为什么(由测试人员编写的)测试运行缓慢,并且只能缓慢地向程序员提供反馈。

提高代码质量所需的是对程序的快速反馈。 自动化测试编写得越早,运行速度越快,越有利于程序员及时获得反馈。

编写自动化测试的最快方法是 TDD。 在编写生产代码之前编写测试。 运行自动化测试的最快方法是单元测试。

3. 错误:只要它能工作,你就可以忽略代码质量

人们经常说:“我们时间不多了,快点完成吧。”

他们不关心质量。 许多人认为质量可以为效率而牺牲。 所以你最终会编写低质量的代码,因为你没有时间做其他事情。 此外,低质量的代码不会带来高性能。

除非你的程序像几行代码一样简单,否则随着代码复杂性的增加,低质量的代码会阻碍你。 软件被称为“软”,因为我们期望它易于更改。 低质量的代码变得越来越难以更改,因为一个小的更改可能导致数千个新错误。

解决方案:提高代码质量的唯一方法是提高你的技能。 大多数人无法一次性编写高质量的代码。 这就是为什么你需要不断地重构! (并且您必须实施自动化测试来支持持续的重构)。

4. 错误:员工应该只专注于一件事

将人员划分为专业团队感觉很自然。 一名员工可能属于 Android 组,另一名属于 iOS 组,另一名属于后台组,等等。 危险在于,频繁更改的团队意味着专业化难以维持。

解决方案:敏捷中的许多实践都基于团队,例如团队速度、回顾性改进和员工流动率。 敏捷实践围绕团队和人员展开。 帮助您的团队成员多样化、学习新技能并分享知识。

5. 错误:编写需求花费的时间太长

正如俗话所说“垃圾进,垃圾出”,正式的软件需求是软件开发的“输入”。 没有明确的需求,就无法产生好的软件。

在科技行业,我发现优秀的产品负责人比优秀的程序员更稀缺。 毕竟,无论程序员编写的代码多么糟糕,它通常至少会运行(否则它就不会发布)。

对于大多数产品经理来说,没有标准来衡量其产品定义和需求的有效性。 以下是我多年来看到的一些问题

  • 一些产品负责人专注于设计解决方案,而忽略了用户价值。

这导致了一堆代价高昂但无用的功能。

  • 一些产品经理只能讲大故事,无法将需求分解为小的、可管理的部分,导致交付批量大,敏捷性降低。

  • 一些产品负责人对需求分析不完整,导致出现一个又一个的错误。

  • 有时,产品负责人不会对需求进行优先级排序,这导致团队将大量时间浪费在低价值的项目上。

解决方案:创建清晰、简洁且易于管理的需求,以帮助指导开发。

犯错误

我为您提供了五个避免犯错的技巧。 不过别担心,还有很多错误可以犯! 将敏捷引入您的组织,不要害怕为了让您的团队变得更好而忍受一些错误。

一旦你采取了不可避免的错误步骤,你就会知道下次该怎么做。 敏捷旨在应对错误。 这是它的优势之一:它可以适应。 所以开始使用敏捷,准备好适应,并制作更好的软件!

接下来阅读什么
标签
Kelsea is running...
Kelsea Zhang 是 ZenTao 团队的成员之一。 ZenTao 是一款项目管理工具,涵盖了整个软件开发生命周期,并连续七年获得“最常用的测试管理工具”的第一名。

3 条评论

感谢分享,你的文章很有趣!我对你提到的 ZenTao 很感兴趣,希望能了解更多。

不错的文章,顺便说一句,ZenTao 是一个有趣的工具,我们会尝试一下。

敏捷方法论主要来自过去 30 年的面向对象设计和分析系统。 这些系统深深植根于以下原则,例如

* 非纯粹的功能
* 突变
* 副作用

这是各种错误、复杂性和安全漏洞的根本原因。 我不仅仅是在谈论代码,这些原则也影响了组织中的人员和流程。 那么,我们有什么与之相反的呢? 也许是时候在学术界经历了 40 多年后尝试纯粹的函数式语言,看看它们在当今的软件行业需求中有多么适用。

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 授权。
© . All rights reserved.