哄骗商务人士?


27

哪种方法似乎最能哄骗非技术业务人员的需求? 我正在与一个团队一起努力为项目制定规格。每次我们见面时,都达到下次会议的期望,我们要求业务人员重新提出他们的要求。他们通常会这样回答:“好吧,您认为你们可以提出一个原型,以便我们下周看到我们喜欢的东西吗……您知道,因为它是一个原型,所以没有任何数据或任何东西,只有功能。”这是一个耗时6个月的项目,因此这显然是不可行的(我们将不得不开发整个产品!),而且,如果没有某种规范,我们甚至不知道要原型制作什么。坦率地说,我认为像大多数人一样,他们对自己想要的东西有所了解,只是他们没有以收集真正需求所必需的集中方式进行思考。除了简单地告诉他们,“给我们您想要的东西,或者我们不能/不会做任何工作”(我们希望他们对结果满意),有没有办法帮助他们决定他们想要什么?例如,我们可以告诉他们:

“绘制一些屏幕(在Powerpoint中,在餐巾纸上,等等),显示想要的用户界面以及所有要查看的数据,并在页边空白处描述功能。由此,我们将完善它,并根据这组行为要求构建后端。”

要么

“不必担心它现在的外观(数字1会挂断)。只要给我们列出您想要的有关程序跟踪的每件事的所有数据的列表。因此,对于“客户”,您可以列出:名称,地址,电话号码,订单等。它不一定是完美的数据库结构,但是我们可以从中得出一些信息,并了解您的需求”

这些替代方法中的任何一种都可以使业务人员专注于他们想要的东西是否有意义?您在行动中是否有其他选择?


18
我以前常常幻想从有​​组织犯罪中招聘需求分析师。“您是要告诉我谁应该访问会计数据,还是我会变得粗鲁?”
David Thornley

7
“真理比错误要早出于错误。” (弗朗西斯·布鲁克斯(Fred Brooks)引用弗朗西斯·培根爵士的话)告诉/显示他们在特定条件下想要的东西,即使您的生活基础很差。他们会纠正你的。重复几次,直到您了解为止。

Answers:


22

在过去的3个月中,我经历了一个大型项目的详尽,详尽的需求收集阶段,并且最重要的还没有一种千篇一律的万能解决方案。在任何情况下都没有有效的过程和秘密。需求分析是一种真正的技能,而当您认为自己终于明白了这一切时,您就会与一群完全不同的人接触,并且必须将您所知道的一切扔到窗外。

我学到的一些教训:

  • 不同的利益相关者对抽象的层次有所不同。

    这是很容易 “谈话在业务层面,而不是技术”,但它并不一定那么容易做到。您正在设计的系统是一头大象,而您的涉众是检查它盲人。有些人是如此深深地沉浸在制造工艺和常规,他们甚至不知道有一个企业。其他人可能会在您想要的抽象级别上工作,但容易做出夸大甚至错误的主张,或者会进行如意算盘的思考。

    不幸的是,您只需要以个人的身份认识所有个体并了解他们的想法,学习如何解释他们所说的话,甚至决定忽略什么。

  • 分而治之

    如果您不想做某事,请将其发送给委员会。

    不要见委员会。保持这些会议尽可能小。YMMV,但以我的经验,理想的人数是公开会议为3-4人(包括您自己),闭幕会议为2-3人(即当您需要回答特定问题时)。

    我尝试与在业务中具有类似职能的人员会面。与Bean柜台在房间里扔给市场营销人员,实际上没有什么好处,也有很多损失。寻找一个领域的专家,让他们谈论这个主题。

  • 没有准备的会议就是没有目的的会议。

    其他一些答案/评论也提到了稻草人技术,对于那些似乎无法从中得到答案的麻烦人士来说,这是一个极好的方法。但是,不要过分依赖稻草人,否则人们会开始觉得自己像在铁路运输。您必须轻轻地朝着正确的方向推动人们,让他们自己提出细节,以便他们感觉自己拥有它们(从某种意义上说,他们确实拥有它们)。

    你做什么,需要的是某种你是怎么想的商业作品的心智模式,以及如何系统工作。 即使您不是特定公司的专家,也需要成为一名领域专家。对您的业务,竞争对手,市场上现有的系统以及可能与远程相关的任何其他事项进行尽可能多的研究。

    到了那时,我发现使用高层结构(例如用例)最有效,这种结构通常使每个人都可以接受,但是提出特定问题仍然很关键。如果您从“如何为客户收费?”开始 ,您参加了很长的会议。提出暗示流程的问题,而不是一开始就提出流程:订单项是什么?如何计算?他们多久更改一次?有多少种不同类型的销售或合同?它们在哪里印刷? 你明白了。

    如果您错过了一步,通常会有人告诉您。如果没有人抱怨,那就拍拍自己,因为您已经隐式地确认了此过程。

  • 推迟主题外的讨论

    作为需求分析员,您还扮演着促进者的角色,除非您真的很喜欢花所有的时间在会议上,否则您需要找到一种使事情保持正轨的方法。讽刺的是,这个问题成为最致命的,当你终于让人们谈论。如果您不小心,它会使您花费大量时间铺设铁轨的火车脱轨。

    但是-而且我很久以前很难学到了- 你不能仅仅告诉人们一个问题无关紧要。这显然与他们有关,否则他们不会谈论它。您的工作是让人们尽可能多地说“是”,并设置类似的障碍,这只会使您陷入“否”的境地。

    这是许多人可以通过“行动项”保持的微妙平衡,基本上就是您已承诺可以回到某个时候的一般性讨论队列,通常以那些认为确实很重要的利益相关者的名字来标记。这不仅出于外交的考虑,它还是一种有用的工具,可帮助您记住会议期间发生的事情以及以后需要澄清时与谁进行交谈。

    不同的分析师以不同的方式处理此问题。有些像非常公开的白板或活动挂图,有些则无声地将其插入笔记本电脑,然后轻轻地搜索其他主题。无论您觉得满意如何。

  • 你需要一个议程

    几乎对于任何类型的会议都是如此,但对于需求会议则是双重事实。随着讨论的进行,人们的思想开始徘徊,他们开始想知道何时才可以开始真正关心的事情。如上所述,制定议程可以提供一些结构,并且还可以帮助您确定何时需要推迟正题之外的讨论。

    不要在不清楚要覆盖什么以及什么时候进入那里的时候。否则,您将无法评估自己的进度,并且用户会因为长时间运行而讨厌您(假设他们尚未出于其他原因而讨厌您)。

  • 模拟它

    如果将PowerPoint或Visio用作模型工具,则可能会显得过于精致。这几乎是一个用户界面的诡异谷。人们会对餐巾纸绘图(或使用BalsamiqSketchflow之类的工具,看起来像餐巾纸绘图的计算机生成的绘图)感到满意,因为他们知道这不是真实的东西,这也是人们能够观看卡通人物的原因。但是,它开始看起来像真实的UI越多,就会有更多的人想要选择它并对其进行掌控,并且他们将花费更多的时间来讨论最终无关紧要的细节。

    因此,一定要进行模拟测试(初始分析阶段之后),以测试您对需求的理解-这是获取非常快速且详细的反馈的好方法-但请保持低调,不要急于嘲笑,直到您完成。非常确定您正在与用户保持一致。

    请记住,模拟不是可交付的,它是帮助理解的工具。就像您在执行UI设计时不会被模拟束缚一样,您不能仅仅因为它们给了您的模型以赞许,就不能认为设计是可以的。我已经看到模拟被用作拐杖,或更糟糕的是,它们成为完全绕过需求的借口;确保您没有这样做。返回并将该模拟转换为一组实际需求。

  • 耐心一点。

    许多程序员很难相信这一点,但是对于大多数非同寻常的项目,您不能只坐下来一次制定完整的功能规范。我不仅在一次会议上谈论耐心,需求分析与代码的迭代方式相同。A组说些什么,然后B组说些什么,这与您从A组听到的完全矛盾。然后A组解释了不一致之处,事实证明这是C组忘记提及的事情。重复500次,你有什么大致类似的真理

    除非您正在开发一些小型的CRUD应用程序(在这种情况下为什么要完全满足需求?),否则不要指望一次,两,五次会议就能获得所需的一切。您将要经常听,说很多话,并经常重复自己。请注意,这不是一件可怕的事。这是与那些不可避免地要在您的交付物上签字的人们建立融洽关系的机会。

  • 不要害怕改变技术或即兴创作。

    项目的不同方面实际上可能要求使用不同的分析技术。在某些情况下,经典的UML(用例/活动图)效果很好。在其他情况下,尽管有我之前的警告,您可能还是从业务KSI入手,或者通过思维导图集思广益,或者直接进入模型。

    最重要的是,您需要自己了解域,并在浪费他人时间之前做作业。如果您知道一个特定的部门或组件只有一个用例,但是它是一个非常复杂的用例,那么请跳过用例分析,然后开始谈论工作流或数据流。如果您不对应用程序实现的每个部分使用相同的工具,那么为什么要对需求的每个部分使用相同的工具?

  • 注意地面。

    在我阅读的用于需求分析的所有提示和技巧中,这可能是最常被忽视的提示和技巧。老实说,我认为与预定的会议相比,我偷听和闲聊的次数更多。

    如果您习惯于孤立地工作,请尝试找出操作的位置,以便您可以听到the不休的声音。如果做不到,那就经常去厨房,卫生间或任何地方。通过聆听人们在喝咖啡和抽烟休息期间吹嘘或抱怨的内容,您会发现有关企业真正运作方式的各种有趣的事情。

  • 最后,在两行之间阅读

    过去我最大的错误之一是过于专注于最终结果,以致我没有花时间真正听到人们在说什么。有时-在很多时候-听起来人们似乎什么都没做,或者对某种听起来毫无意义的程序procedure之以鼻,但是如果您真正专注于他们在说什么,您会意识到确实存在埋在里面的需求-或几个。

    尽管听起来很老套和平淡无奇,但“ 五个为什么”在这里确实是一种有用的技术。每当您有那种下意识的“愚蠢”反应(不是您会大声说出来)时,就停下来,把它变成一个问题:为什么?为什么要重新键入此信息四次,然后进行打印,影印,扫描,再次打印,固定在刨花板上,用数码相机拍摄并最终通过电子邮件发送给销售经理? 有原因的,他们可能不知道这是什么,但是找出它是您的工作。祝你好运。;)


4
+1是我在Programmers SE上看到的最有力的答案之一!
Morgan Herlocker 2011年

19

如果您不能从中得到帮助,请写下并获得批准。对于非技术人员来说,说“不,我不喜欢”要比“这是您应该怎么做”容易得多。

通常,他们想要的东西和他们告诉您的东西是两种截然不同的事情。花一些时间用您当前知道的信息来编写规范的初稿。要求利益相关者阅读并批准。当他们阅读时,他们很可能会看到自己不喜欢或不同意的东西。得到他们的反馈,然后进行修改。

如果您可以选择一种或多种方式,请同时在线选择两个选项,然后让决策者做出选择。在他们离开之前,不要让他们独自一人。

至于原型,请制作屏幕模型,并解释如何工作。同样,看到一些东西可以帮助他们可视化正在发生的事情。随身携带新的屏幕模型参加会议并获得答案。

过去,我实际上已经打开了FireBug,并添加了客户在他们面前要求的更改,以便他们可以看到它的外观。他们提供了反馈,我进行了截屏然后实施了更改。他们真的很喜欢能够看到更改的样子,而且我喜欢它很快,并且在那次会议上得到了我的答案……而不是下一次。


2
+1。稻草人技术通常是让最终用户考虑他们所做的事情的唯一方法-他们的工作对他们来说是如此自动化,以至于他们实际上很难考虑它。
DaveE

老实说,我认为任何人(包括程序员)都可以更轻松地提出要求,因为“不,我不喜欢那样。我想要改变”而不是“我想要这样”。我认为它有助于将重点放在眼前的任务上,而不是试图立即考虑整个项目
Earlz 2011年

+1,让他们说“不,我不喜欢那个”而不是“我想要这个”。如果公司不完全知道他们想要什么,这就是我尝试采用的方法。
雷切尔

11

让他们更多地谈论他们的业务,而不是关于应用程序。找出真正的问题是:月末报告花费的时间太长,数据输入错误,它们已经超出了当前应用程序的范围,公司的增长正在失控。

我猜想这些会议的对象是进行采购的人员,而不是实际从事涉及应用程序工作的人员。询问您是否可以与其中一些人见面。他们可以告诉您事情是如何真正完成的。确保与正在预算时间和成本的客户打交道。

查看他们是否有当前正在使用或想要使用的报告。显然,如果您未正确收集数据,则无法创建报告。他们必须做些事情,除非这是他们尚未开始的业务。

许多人都认为您是程序员,所以知道如何构建所有程序。电子商务网站都一样,对吗?

从小开始。不幸的是,直到您掌握了一些建议,该过程才开始注册。如果您无所事事,那就假装。


杰夫是对的。让他们谈论他们需要解决的实际业务问题。然后想出可以快速而廉价地完成的工作。如果您做到这一点,您将永远不会饿。
Christopher Mahan

+1表示“让他们更多地谈论他们的业务,而更少地谈论应用程序。” 那是一条黄金法则。
DPD

8

其中很多与通用的人际交往技巧以及您与客户的沟通方式有关。除此以外,我对此无话可说-确保您以交互的方式说明该过程,并希望在此方面得到客户的反馈和努力。

专门针对您描述的场景,这里提供了一些更多建议:从描述您认为有用的内容开始,并提供不需要专门技术或知识的术语描述工具:

  • 用户案例/用例要求详细描述用户期望做的事情,他们需要做些什么信息以及您应该并且可以期望用户输入什么。获得这些信息后,请与他们一起仔细检查并确保所有内容都包含故事-在应用程序中不应包含任何内容,而在该应用程序中您将没有涉及用户将要执行的操作的故事。

  • 引人注目的示范为了赢得客户,更重要的是什么?程序或功能的哪些部分需要突出,并且必须完全完善?您可以使用想要使用的便笺,纸箱或其他替代产品为我提供样机演示吗?

  • 市场/竞争信息对于每个用户故事,我们在做什么与竞争对手类似?不同?我们的竞争对手讲什么故事,我们是否在试图复制/模仿/改善/创新/有目的地有所不同?

  • 悬而未决的问题在需求和设计中,您可以确定哪些信息是实验?我们在哪里尝试替代方案,看看哪个可行?如果您正在寻找多种选择,而您仅告诉我们一种选择,那么您正在考虑哪些选择?

然后,画出一些边界:

  • 请不要对我施加技术限制。业务人员不应该告诉您“使用Windows,因为它比linux更好”。但是,他们可以按照“我们的所有目标市场都使用Windows,我们的应用程序必须在Windows上运行才能成功”的方式提供说明。

  • 不必担心设计,特别是如果您要与面向销售或市场营销的人员打交道,他们往往会为设计问题所困扰。同样,将信息范围缩小到他们擅长的领域-“蓝色在这里更美丽”可能不合适。“我们的竞争对手使用蓝色主题,并且自80年代以来一直存在,对于我们计划中不进行创新的部分,我们应该使用蓝色方案来传达我们不是新事物”,这可能是适当的。“名称应该在屏幕顶部”可能不合适,但是“此页面上最重要的信息是用户名和银行帐户余额”可能是合适的。确保设计人员参与了将这些要求转换为UI的工作。

  • 写下决策最好将其纳入合同或您做出的其他承诺中。但是请记住,客户不理解的决定不值得写在上面。在“该应用程序将在自定义,可配置的端口上运行,但在部署时可能需要特殊配置的防火墙和安全性”的情况下,在“该应用程序将在端口1521上运行”的客户签收的价值不高。 ”

从您的角度来看,为了鼓励该过程继续进行:

  • 以相同的抽象级别提供反馈这是全面的,例如,对于单位-如果客户每月谈论用户数量,则不要以千兆字节的带宽响应。或者,对于用例-根据工作用例描述功能,而不是模块或错误修复或功能。

  • 提供有意义的沟通根据提供给您的信息,解决您的问题以及发现或正在寻找的其他信息。“我们要使用linux”可能是写得不好的反馈,而“我们的测试表明,将应用程序托管在linux计算机上并在Windows上使用IE进行访问时,应用程序运行更流畅”。

  • 快速迭代为保持客户的参与度,请提供快速,有意义的更新和迭代。在流程开始时尚无法获得或无法轻松获得的规格和信息可能需要您的客户付出很多努力,他们可能是在向您付款,而您却没有为他们的任何工作付费。当工作最终成为他们必须花费时间和精力的事情时,促使客户参与并在该过程中投入资金会有所帮助。


5

您的客户(业务人员)可能会遇到某种问题,需要某种技术解决方案,但对解决方案的工作原理一无所知,因此对如何指定任何潜在解决方案一无所知。如果是这样,那么所缺少的角色就是业务解决方案分析师,他们可以研究客户,他们的问题,他们的工作流程等,以及任何可能的解决方案如何适应他们的公司程序,文化等,以及是否有可能会在预算有限的情况下按时实施特定的解决方案。这可能是高度跨学科的角色,需要对业务实践(法律,会计,物流等),用户心理以及软件技术都有一定的了解。

听起来您想强迫客户成为他们自己的业务解决方案分析师。他们可能没有足够的专业知识来确保合理的规格。听起来您也不想担任这个角色。如果您和您的客户都不具备担任此职位的专业知识,那么您可能没有成功项目所需的全部人员。

有时,一堆客户可以使用的快速原型可能是实验地发现并融合某种可用解决方案以满足客户(清晰和清晰)需求的唯一方法。这可能适合也可能不适合任何类型的非开放式合同。

添加:如果您试图从没有必要专业知识的客户中强制要求文档,这可能是一个巨大的危险信号,表明即将来临的灾难。


3

不要要求UI或数据要求,而要功能要求。

向他们询问他们希望应用程序做什么。让他们逐步了解他们如何使用该应用程序。首先,将诸如UI,数据等详细信息排除在外。

我发现用户经常不知道他们想要的UI或数据,但是他们确实知道他们想要的功能。例如,他们会告诉我“我要登录并查看所有客户信息”。不必了解屏幕的外观或所需的数据,只需从屏幕上获得功能即可。

一旦有了这些,就做一个快速的模型(我喜欢Balsamiq)。只需假设UI /数据是什么,就不要花很多时间在上面。然后将该样机带回给客户。从那里,他们可以告诉您“我们不需要这些字段”或“我们实际上想要的是电话号码列表,而不仅仅是一个”或“这应该是一个下拉列表,而不是列表框”。

一旦有了起点,充实数据和UI就会容易得多,我发现确定功能性是最好的起点。


2

我建议您首先将他们放在业务流程上。让他们在文档或讨论中定义它们当前如何执行软件将处理的任务。然后关注他们希望看到过程的哪些部分发生了变化(他们想要您的软件的原因)。使用它作为讨论使用软件可以改进甚至完全删除过程中其他部分的起点。

如果您的客户不习惯提供软件需求,则您的团队应为他们起草需求。期望会经历多个修订,但是您至少应为他们提供一份初始文档,以帮助传达您所要查找的内容。

一旦对将要包含软件的最终结果流程的功能要求有了一个很好的了解,就可以开始草拟接口的模型了。如果您想让他们先尝试一下,可以这样做,但是通常最好提供最初的想法,然后让他们进行调整。您不需要为此使用功能代码。最初的UI讨论可以使用正在开发的UI的屏幕截图,使用静态填充文本的布局的HTML表示,甚至是图纸(如果您的工作人员中有体面的画家)。

一旦进行了几次修订,并且每个人都同意所提供的内容,则以书面形式获得客户的认可! 无论他们抵抗多少,这一步都是至关重要的。您可能需要向他们保证,签署需求并不意味着他们不能对项目有任何进一步的投入(取决于您与客户关系的性质),在这种情况下,您应该概述对需求的修订将被处理(例如,经过审核和批准,推出到后续版本,作为增强功能单独定价等)。


1

我会告诉他们您将逐个功能地开发程序。在下一次会议之前,假设您要在1-2周内使用X项功能。可以是1、2、3或更多。

假设您首先要开发最重要的功能。您需要从核心功能入手。假设您正在制造一台取款机(出于争论的目的)。告诉他们,好吧,最重要的功能列表中的第一个(或下一个)是在进行大笔提款时要求用户的出生日期作为确认(用项目上的功能代替,您知道这不是主要的核心功能之一)将在下一个实施)。

这种天真的断言应该引起客户的反应。当问到他们下一步该怎么做?什么是项目上尚未完成的最重要功能,并且比您提到的功能要好。

重用前面的示例,客户可能会告诉您正在验证用户的卡或进行存款等。然后请他们为您定义。不要害怕问很多问题,如果需要的话甚至可以是天真的问题。

与客户讨论了这一点之后,您应该对这一功能性有一些要求。您可以定义多个功能,但我会将此数字保持在非常低的水平。

在1-2周内,再次与客户见面,向他们介绍您的工作并获得他们的意见。将其呈现给客户端,并在需要更改或添加任何内容时获取他们的输入。

然后对下一组功能重复上一练习。在项目的其余部分中,以迭代方式继续执行此过程,确保您与客户保持联系并定期开会,以展示您的工作并计划下一步要做的事情(始终保持一小部分)。


1

根据我的经验,您是在谈论工程技术,而他们对此并不关心。他们也不想承诺做任何事情(尤其是书面形式),并且他们实际上也不想做任何工作,尽管这对业务类型不是很特别-没有人愿意在他们所从事的领域中做很多工作不知道也不在乎。那是你的工作(在他们心中)。

我要做的是:用他们的域语言与他们讨论他们想要什么。他们将无法或不愿意精确地按照您希望的方式使用(用例,按合同设计等),但是可以精确地将其模糊而轻巧的需求清单转化为实际设计,并且因此,是设计文件。如果他们可以预算您的时间来正式进行此操作,那就更好了。如果没有,请创建一个即兴的非正式版本,您可以对其进行迭代。

我知道,这不是一个超级高兴的答案,但是当我停止尝试让客户(或实际上是任何人)进入我的世界并讲我的语言时,我发现生活变得更轻松。尽管在讨论领域和需求时(尽管常常只有客户模糊地理解),我一遍又一遍地问同样的问题,但反直觉的是讨论并没有令人沮丧。实际上,我想与客户的关系会变得更牢固,因为人们喜欢谈论他们所知道的事情,并且比起采用更严格的设计方法,您最终会更加全面地了解他们的POV。


1

如果没有一个懂编程的经理,我将永远不会取得成功。相反,我发现唯一可行的方法是观察实际情况。


1

我想程序员有更好的能力来设想程序在构建之前会是什么样。纸质原型可能是克服这一问题的有效技术。纸制原型的构建相对“便宜”。通过引导客户完成一个简单的纸质原型,您将展示出“以收集真正需求所必需的集中方式”进行思考的必要性。它提供了一种特定的关注方式:实际尝试使用您脑海中的应用程序!

同样,您可以从对客户需求的最佳猜测中快速迭代到客户真正想要的应用程序,但是很难传达。查看原型并决定为什么它与您的理想应用不符,比列出该应用的所有要求要容易得多。


我在一个网站上工作,其他合作伙伴更注重业务。我一直以许多不同的方式要求特定的要求。他们的回答基本上是:“您是计算机专家,我们希望您能弄清楚这些东西。我们更喜欢从事商业工作。” 他们不关心具体细节... 直到发布第一个版本! 他们对发布后的需求更加热情,提供了各种反馈,这在我最初提出要求时可以节省很多时间

因此,我认为迭代是关键:构建最小可行版本并根据反馈进行改进。如果要求太含糊和笼统,请根据“最简单,最快的实现方法是什么?”进行决策。(除非基本系统设计/体系结构)。不要基于您认为“正确”的假设来权衡太多。最终只会浪费时间,因为机会很可能与您的客户不同。

例如:客户要求上传图片功能;不再详述任何具体要求。尽可能天真地构建它。即使您认为这是客户端想要的,也不要添加自动裁剪,调整大小和缩略图功能。让客户看到最小的可行版本(您可以开发出比非原始版本要快得多的版本),并且需求将以“这是当前版本的问题”的形式开始出现。将每个新需求记录为“错误”。您可以按优先顺序确定最容易/最有益的方式。

实际上发生在我身上:要求带有特殊邀请代码的注册表格。想法是创建一个病毒注册过程,每个新用户都收到一些邀请。我花了很多时间来确保代码是唯一的,并且只能使用一次。通过将名字和姓氏字段设置为可选,我还付出了很多努力来使过程尽可能地流畅。最后,合作伙伴要求进行以下更改:必须输入姓氏和名字,如果在字段中输入了任何内容,则注册“代码”有效...叹气〜

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.