无需客户参与就能实现敏捷吗?


23

我无法写有关敏捷的书。我曾在几家称为敏捷流程的商店工作过。敏捷开发的要点之一是定期的客户参与。经过冲刺,可以将作品演示给客户以获取他们的反馈。冲洗并重复。

我遇到的问题是,许多客户不想参与其中。他们将更喜欢瀑布方法。预先收集需求,然后在完成后再回来。以我的经验,瀑布不起作用。客户直到看到他们才知道他们想要什么。瀑布式的困境由希望提前满足所有要求的大量开发人员进一步传播。这样,他们便知道要构建的内容,可以相应地进行架构设计,而客户应对此负责,因为他们“拒绝”了上述要求。

我不正确吗?无需客户参与就能敏捷工作吗?如果是这样,您如何以及如何克服我所讨论的问题?


12
不要让“敏捷”成为您的锤子,以使其他所有东西看起来都像钉子一样需要打到您身上。
Patrick Hughes

1
以我的经验,偏爱瀑布方法通常是由于缺乏对软件或设计工作原理的了解。好消息是,敏捷不是大问题,而是客户的态度/理解。坏消息是客户的态度。
Ben Brocka

@BenBrocka:考虑到瀑布是专门为瀑布设计的,这并不令人惊讶。作者想写一篇关于不了解软件开发的人所创建的开发过程的外观,以及为什么这样的过程可能行不通的论文。因此,他专门发明了Waterfall作为示例,该过程是由不了解软件开发并且可能行不通的人设计的。显然,这是毫不奇怪,它呼吁人们谁不明白的软件开发也不是一个惊喜......
约尔格W¯¯米塔格

@BenBrocka:…那是行不通的。令人惊讶的是,为什么有人甚至想要使用专门设计为无法正常工作的流程。我想没人会真正读这篇论文。
W Mittag '02

1
@JörgWMittag实际采用Waterfall(无论他们是否意识到它是瀑布)主要是因为它是业务决策的标准模型。老板想要东西,这是基础,顾客很高兴,对吗?当然它不工作,但它是很好的头脑简单:)一个不错的简单模型
奔Brocka

Answers:


17

怎么可能 该技术的本质决定了客户与开发人员之间的某种反馈回路。

但是,您团队中的某些成员可以充当“代理”客户(类似于“吃自己的狗粮”的过程),以便您可以“假装”敏捷,尽管这并不像获得实际客户那样令人满意反馈。

不管喜欢与否,客户将参与设计过程。这只是他们希望返工花费多少的问题(延迟时间越长,成本就越高)。

由于客户希望“大批量设计”,因此可以帮助他们理解,第一时间就需要正确的设计,这需要花费更多的时间和精力。


5
但是,您团队中的某些成员可以充当“代理”客户 -根据我的经验,测试人员做了您提到的那种非常有效的“代理”。当我自己是一名测试员时,有时我也假装穿着一套西服。但是,这样的代理有局限性-例如,质量检查人员抱怨安装产品需要多少时间,因为他们每天做一次,而客户每年做一次或
两年一次

it's just a matter of how much they want the rework to cost (the longer it is delayed, the more expensive it is).谁真的更昂贵?大多数客户并不认为这会花费您宝贵的时间来实现他们对解决方案的最新愿景。有时,他们只是有问题,无法知道解决方案,除非您告诉他们解决方案是什么。到那时,如果您告诉他们的内容并不能真正解决他们的问题,那么那是您的错而不是他们的错。首先,您误解了他们的实际问题是他们的错吗?续...
maple_shaft

续...他们为什么要为此付费?只是为了与客户面对面,而不是完全抓住任何机会重复经营业务,您必须转身免费进行返工,因为他们首先要求的是固定价格合同。这是更为普遍的态度,而这正是P.Brian.Mackey所经历的。客户为这些谈判提供了强有力的支持,当您只是试图获得合同的100家初创公司之一时,那么拥有切合实际且基于敏捷的公平合同的家伙就必须在生产线后面等待。现在那里很困难。
maple_shaft

@maple_shaft:显然,您已经为此感到烦恼。但是,与所有事物一样,它取决于选择。敏捷之所以存在,是因为瀑布有问题,人们并不完美。如果客户已被告知风险,并且仍然想要瀑布,那是他们的选择。决定是否值得在不了解风险的客户身上冒瀑布,还是否认这些风险的有效性,也是软件商店的选择。
罗伯特·哈维

@RobertHarvey即使在经济不景气的情况下,一个糟糕的客户仍然是一个客户,他们仍然需要几个月的时间。在我提到的案例中,对客户的风险是最小的,并且要控制他们是否按时收到了承诺的解决方案。在这种情况下,软件商店的风险是,如果这个痛苦的客户要让我们干dry。
maple_shaft

7

您问题的简短答案是“否”。以下是对您问题的某些部分的评论。准确地说,大多数答案是根据我的个人经验和观察得出的。

以我的经验,瀑布不起作用。

Waterfall是交付复杂程度各异的系统的可靠方法。不幸的是,它没有很好地呈现或理解。原因之一是,它无法与不断涌现的当今方法论竞争而赚到足够的钱。您可能会惊讶地发现,许多银行,保险和制造系统仅使用Waterfall方法构建,而其中许多仍在生产中。可悲的是,软件行业更多地基于炒作而不是科学。

客户直到看到他们才知道他们想要什么。

这是一个神话。也很大。在网页设计/布局中可能会出现这种情况,但是对于业务数据处理,大多数用户都希望有一些有用的东西。这些用户中有些仍然使用RGB的AS / 400屏幕和3270 CICS监视器,他们可以使用这些工具来完成业务。同样,那些相同的用户接受SAP和ORACLE ERP系统,而无需在界面设计(功能有时)上有发言权。如果系统产生正确的功能,大多数业务用户甚至会适应他们的工作习惯和流程。这里的重点是功能上的外观。商界人士了解90%的时间他们做得很好。

瀑布式的困境由希望提前满足所有要求的大量开发人员进一步传播。这样,他们便知道要构建的内容,可以相应地进行架构设计,而客户应对此负责,因为他们“拒绝”了上述要求。

您不能责怪开发人员想知道他们正在建造什么,因为这些开发人员要花3个小时左右的时间学习下一项技术,然后回家做饭并按衬衫做另一个练习。那将取代他们目前的技能!怪罪游戏没有人赢。考虑各方的角色和责任,情况将非常清晰。

总之,项目经理,程序员和Web设计人员不能替代业务分析师,而业务分析师应该知道如何从最终用户那里收集需求,而无论采用哪种方法。


3
+1-争辩“客户不知道”。这是不同的域具有不同类型的客户端的问题。这就是为什么敏捷专家无法理解瀑布人的原因。他们认为,只有看到您想说的话,您才能说出来。这不是真的,但这就是他们从客户那里看到的一切。尽管瀑布支持者无法理解为什么不能事先了解绝大多数需求,所以设计可以考虑所有问题。可能是因为瀑布人不太愿意与那些随意的客户打交道。
Dunk 2012年

1
@Dunk,感谢您的评论。我喜欢您的措辞“”随意的客户“!
NoChance 2012年

2

他们不想花时间,如果有选择,他们宁愿免费获得软件,但您仍然要向他们收费,对吗?如果您正在为公司内部开发软件,则这会变得模糊。他们认为IT部门已被购买并付钱(受薪的员工),因此他们可能会从自己身上得到尽可能多的工作。

您可能会变得敏捷。获取所有规格并开始编码。一旦客户因为他们只是想过一些事情而中断工作,而您不得不进行更改和返工,您就会变得更加敏捷。您也可以在团队内部进行批准。让您的团队之一穿西装打领带,假装成为客户。

提前做出大量时间承诺可能会吓跑他们。建议进行冲刺以尝试一下。然后给他们选择退出的机会。在项目的其余部分,您始终可以切换到瀑布。还建议如果时间限制写支票的人,则团队中的其他人可以进行审核和批准。

在某些时候,您必须告诉他们您认为瀑布不会起作用。问他们对这种方法是否满意,如果这样,为什么他们没有最后一个人来做这个项目?


2

没有客户的参与,任何方法都无法奏效。正如我在参与的项目中所看到的那样,批准需求毫无意义。您的问题不仅仅在于敏捷,还需要教育您的客户,并确保他们了解客户参与的重要性。


2
这不是客户参与的数量和频率的问题,而不是全部或全部的问题吗?
JeffO 2012年

3
我认为经常拒绝参加的客户是需要教育的客户。客户的业务专家摆在一个位置,他们必须与软件开发公司进行交互并仍然执行他们的日常活动,这种情况并不少见,这需要通过与他们的高层交谈来解决。
奥塔维奥·德西奥

2

我认为,敏捷的主要优势之一是能够对每个功能总体获得更详细的要求。当客户预先提出所有要求时,每个功能往往都是一个模糊的想法,并定义了一些功能。敏捷强制客户端重新审视每一个特征,注重准确的功能将他们想要什么,以及如何融入更大的图片。为了将相同数量的细节(足够的细节来实现功能)纳入规格,瀑布实际上需要您执行以下两项操作之一:

  1. 猜测。实施,直到遇到模糊的问题,然后对如何最好地实施该功能做出判断。这显然是不理想的,因为它会导致“等等,这不是我要的!” 场景。

  2. 将更多的精力放在前期设计上。本质上,当客户在第一天向您扔下半熟的规格时,请计划在实施任何操作之前仔细检查每一分钟的细节。要求客户澄清所有恶作剧,直至了解整个项目的每个实施细节。尽管并不完美,但是它比方法1更好。您仍然可能遇到您未曾预料到的细节,它甚至可能使客户端在山丘上奔跑,但是如果他们真的不想在开发过程中与您交流不是通灵的,这是必须的。这基本上是瀑布,它具有所有相关的缺点,包括很难正确执行。

  3. 采取半生不熟的规格,但无论如何都要进行澄清。进行工作,直到达到规范的模糊部分,然后要求客户澄清。当然,这不是客户要求的,但是如果他们不希望应用程序像规范那样晦涩,并且拒绝预先定义规范,这是剩下的一个选择。它没有敏捷的所有优点(例如,定期获得客户的批准以确保每个人都在同一页面上),但是,它确实允许您获取需要开发的信息。由于选项1可能会给您带来次等的产品,因此选项2浪费了客户,让客户感到沮丧(如果您完全在前期进行设计和规格收集,则可能需要花费至少两倍以上的时间),这确实不是一个坏选择。这里的关键是要勤奋地随着每一个变化而修改时间表和价格。如果您做对了,即使客户不知道,大多数敏捷实践也可以与这种安排兼容。恕我直言,这确实符合敏捷的精神,因为您应该根据自己的特定安排调整方法。

如果客户真的不能忍受这三种选择中的任何一种或完全敏捷的后果,那么我很难想象这个客户如何真正值得您光顾。


省略了选项4。您选择了具有绝大多数需求的规范。使用客户评论进行设计(可能是迭代的)。实现和测试代码(可能是迭代的)。定期进行计划审查,以告知客户进度和决策。他们会提供反馈,您可以吸收他们的意见并继续前进。
Dunk 2012年

您上面描述的情况只会在不知道如何瀑布的团队中发生。是的,很难正确执行。敏捷也很难正确执行。每当有人在敏捷上失败时,一些敏捷主义者就会抛出一条未被遵循的新规则,并声称这是失败的原因。这绝不是敏捷的错。至少瀑布支持者承认,需要具备良好技能的优秀人才才能使瀑布起作用。
Dunk 2012年

你选择4正是我打算选项3来形容
摩根Herlocker

我怎样才能使答案更好?我无法说出您是否同意我所说的话。
Morgan Herlocker 2012年

您可以通过取消入门生词来改善它。删除关于这不是客户想要的部分。除去模糊的规范部分,等等。在瀑布中,捕获需求的重要部分是获得体系结构上的重要需求,而系统必须绝对要做这些才能首先有用。在那之后,更改通常没什么大不了的。信不信由你,瀑布开发中有正式的或非正式的迭代,而且一直存在。在敏捷出现之前很久。
Dunk

1

我认为这很困难,但仍然有可能。我认为罗伯特的代理人想法可行,但代理人有必要在“真实”客户身上花费尽可能多的时间,以便他们可以从自己的角度看待事情。通过这种方式,代理可以确定哪些功能真正重要,并获得客户期望/期望的用户体验。

但是在某些时候,您需要向“真实”客户端展示该软件...


0

有可能避开真正的客户,实际上有时是监管所需要的。通常,医疗软件的客户不参与其中。在那些情况下,其他实体可以代替客户角色,例如可以将营销团队视为客户。


0

敏捷确实需要紧密的循环来代替大型的前期设计,这是很难的-虽然很难,但实际上可以做到,敏捷不是唯一的方法。

您可能想要找到敏捷的一种修改形式-有很多而且可能解决了这个特定的问题,但是如果您认为可以的话,可以自己解决。

所有这些过程都是由聪明的人组成的-聪明的人可以使任何过程正常工作。您不认为发明瀑布是因为它从来没有对任何人起作用?它的发展是因为有些人可以使它工作,而另一些人则看着并说:“我必须改进它,并将其提供给似乎无法有效生产的我的团队” –那时,它可能比他们的工作更好确实这样做了,但是如果您不认识到并不是每个程序员都能解决所有问题,那真的会让您感到困惑,为什么两个使用相同流程的团队可能会得到不同的结果。

问题在于许多流程需要人才来实施它们-我们正在从参加过这项运动的每个人中说出像职业体育运动员这样罕见的人才-我们大多数人从未遇见过能够胜任某项工作的人瀑布之类的糟糕过程如此,这就是为什么许多人认为它无法成功的原因-他们从未见过它起作用。

使敏捷工作所需的人才少得多,但需要一些非常具体的投资,例如让客户了解您在不断做的事情,以使错误不会传播,并且进行无情的重构等工作,以使您不会积淀团队几个月无法解决的技术债务。


0

定义客户。

是另一家公司吗?另一个人?

是您公司内的另一个团队吗?

是您公司的产品冠军吗?

是你吗?

以上所有情况都是可能的,并且视情况而定是相当合理的。您不想在隧道中一目了然地了解敏捷的含义,因此说肯定的NO是不正确的。另一方面,“是”需要一些横向思考。

考虑一下敏捷一词。创造这个词的非常聪明的人无法为他们试图描述的概念选择更好的隐喻。当你说敏捷,您会想到什么?是步行者吗?反应快吗?快速适应?

现在考虑一下所有公认的敏捷实践,并问自己它们对被认为是敏捷的软件开发方法真正带来了什么。

我是个人项目的所有意图和目的的客户。当我真的想在客户角色方面做出与众不同的思维变化时,有时甚至戴上一顶真正的帽子。这使我不比工作时敏捷。就我所关心的,我的猫可以当经理。他确保我每隔一段时间休息一下,并提醒我避免过于沉迷于任何一项任务。您可能更喜欢使用奇特的“ Pomadoro技术”,但我更喜欢“ Rascal”计时器!事实是,每当我为自己编写代码时,我都会在严格的敏捷过程中工作。我不是那种像黑客一样的牛仔,他过着无休止的发展高峰,却一无所获。我喜欢设计软件,安排工作和个人生活的开发进度,并按照我为真正的客户工作时的期望完成它。当事情中断我的日程安排时,我会相应地调整项目工作并确定其优先级。我使用所有可以单独应用的标准敏捷实践和技术,然后“交付” 尽我所能向自己(或朋友或同事进行测试)编写代码。如果这不是敏捷的,我问你是什么?

所以我的答案是肯定的,您可以成为一名敏捷软件开发人员,并且可以应用一种敏捷方法论,并且不一定需要客户甚至经理。您可以自己完成一个项目,也可以戴多顶帽子。但是,取消其他角色不一定是理想的选择,因为与他人合作以实现目标非常有帮助。它们充当了您的想法的发声板,并且满足了您的需求,否则您可能会发现很难独自产生这些想法。客户和经理要满足的另一个非常重要的角色是,使您始终专注于目标,而不是无休止地添加功能和完善代码,而这超出了必要的范围。

但是,如果您以纪律严明的方式工作,请严格遵循选择的方法论,并采用敏捷实践,并且当您被旁听时,或者您改变了主意(戴着客户的帽子时)以及产品设计或方向轮到您了,如果您可以调整自己的日程安排并按照您的客户所期望的那样调整优先级,那么您就是敏捷的。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.