有点晚来参加这个聚会,但根据你的描述,这是我的看法。
现在,Scrum 是一个项目管理方法,不是一个开发方法。但我认为,建立开发流程非常重要。 如果没有流程,你会花费大部分的时间应对问题而不是构建产品。
我是一个测试驱动开发的支持者。在我的开发流程中,我首先编写测试以强制执行需求和设计决策。 你们的团队是如何实施这些要求的呢? 我想说的是,你不能仅仅“把东西扔过去”并期望成功。 这种失败可能是由测试团队(未能很好地测试,从而让问题溜走)或由开发人员(未建造解决问题的产品)引起。 我并不是说你必须先编写测试 - 我不是一个狂热者或者测试驱动开发的鼓吹者 - 但我想说的是,在达到迭代结束时,你必须拥有一套生产质量、经过测试的、可以直接使用的代码流程。
我曾经处于你现在所处的状态,这种开发方法我称之为死亡螺旋法则。我曾经在美国政府为多年使用这种模型构建软件。 这种方法不好用,花费大量的金钱,产生延迟的代码、低质量的代码,对士气没有任何帮助。 当你花费所有时间纠正本可以一开始就避免的错误时,你无法取得任何进展。 我被这个过程彻底打败了。
你不想让 QA 发现你的问题。 你真的想让他们失业。我的目标是让 QA 大吃一惊,因为一切都正常工作。当然,这只是一个目标。实际上,他们还是会发现问题的。我不是超人,我也会犯错。
回到日程安排...
我现在的工作采用Scrum方法,但我们不这样称呼它。我们不注重标签,但我们注重按时生成高质量的代码。所有人都明白该做什么。我们会告诉QA何时测试我们准备好的内容。如果他们提前两周来要求测试,我们将拒绝。每个人都了解时间表,每个人都知道发布中将包含哪些内容,并且每个人都知道产品必须像广告宣传的那样正常工作才能交给QA进行测试。所以这意味着什么?你告诉QA“不要测XYZ - 它是坏的,直到发布C才会修复”,如果他们去测试,你可以指向这个声明并告诉他们不要浪费你的时间。有时可能有些严厉,但有时候是必要的。我不是想粗鲁,但所有人都需要知道“规则”,什么应该被测试和什么是“已知问题”。
你的管理层必须同意。如果他们不同意,你会遇到麻烦。QA不能主导,开发组也不能完全主导。所有小组(即使这些小组只有一个人或一个同时扮演多个角色的人)都需要在同一页上:客户、测试团队、开发人员、管理层和其他人。常常,沟通是超过一半的战斗。
也许你在一个迭代中尝试了太多,这可能是原因。为什么会这样?为了满足时间表吗?如果是这样,管理层需要介入解决问题。如果你给QA有问题的代码,他们会把它扔回来。最好给他们三个可以运行的东西而不是八个没完成的东西。目标是在每个迭代中生成完全实现的某些功能,而不是随意拼凑一堆未完成的东西。
我希望这篇文章被理解为一种鼓励而不是抱怨。就像我提到的,我曾经也处于你所处的位置,那并不好玩。但是还有希望。你可以在一个或两个迭代中扭转局面。也许你下一个迭代不会添加任何新功能,只是修复问题。这需要团队决定。
再提一下撰写测试代码的好处:自从采用“先编写测试然后编写代码”的方法后,我发现自己更加放松和自信地开发产品。当所有测试都通过时,我拥有一种信心,如果没有测试则无法达到。
祝您好运!