草庐IT

透过现象看本质,如何针对用户做好需求分析

OldCat先生 2023-03-28 原文

对于刚入门的产品经理而言,很容易出现设计出来的产品功能不达用户预期的情况。这里面一部分原因是由于需求分析没做到位,忽略了事情背后的本质。那么下面我们看看如何做好需求分析。 

 

透过现象看本质

我们只有透过现象看本质,了解用户的真实需求之后才能更好地提供解决方案满足用户需求。

什么是现象,事物所表现出来的外部形态或结果。

我们在接收需求时,通过从用户那描述过来的内容往往就只是现象,他是表面的。因为在产品方面用户的认知程度跟我们是有偏差的不全面的,所以提出的需求更多时候只是从自己所认知的角度提出来的需求。如果仅仅依据表象就开始设计产品功能,那么最终结果很有可能就不达预期或者说很难做得更好。

比如用户提出的需求是“需要一匹更快的马”,从表面现象来看我们为满足用户需求需要去找马,找更快的马。

什么是本质,对事物的性质、特点以及发生、发展产生影响的事物本身固有的属性。当我们通过对现象的分析与进一步了解到事务的本质之后,再去处理问题就可能超预期给用户带来惊喜。比如用户提出的需求是“需要一匹更快的马”,我们通过进一步了解,用户目的是从A点更快的到达B点,那么重点跟马可能就没啥关系了。

那么我们如何快速地透过现象看本质,从而做好需求分析呢?我们可以从用户角色、所在场景、用户行为与目的 几个因素来探知用户需求背后真正的目的或动机。

用户角色(是谁?什么人?)

角色可以是个体用户,可以是某一类用户群体、一个组织团体,即用户的身份、角色。

我们继续结合上面的例子进行发散,需要从A点更快的到达B点,提供一辆汽车真的就是最好的方案了吗?不一定,我们将服务对象扩展成不同的用户群体时,我们最终可能得出针对不同用户群体的多个方案。这里需要注意的是我们面向的角色是一个用户群体,还是角色中的个例或个人,这将决定我们得到的是通用需求还是个性化需求。

比如:

针对“需要从A点更快的到达B点”比较在意费用成本的用户群体,更需要的解决方案可能是叫出租车(比如城市外来游客)。

针对“需要从A点更快的到达B点”不在意费用成本更在意舒适度的用户群体,更需要的解决方案可能就是一辆汽车(比如企业领导)。

由此我们可以看出,我们得出什么样的方案跟不同的用户群体有很大的关系,所以我们需要确定面对的是什么样的用户群体也就是角色。

所在场景(什么条件、环境下?)

场景包含具体时间、地点,即用户所处环境及条件。我们确定用户角色之后还不够,用户所在场景中的相关因素依旧可能会影响我们提供的方案是否完善。

继续结合上面的例子:

针对“需要从A点更快地到达B点”,我们确定了用户角色为企业领导。

针对城市交通拥堵的情况,更需要的方案可能就乘坐直升机。

针对需要出省距离较远的情况,更需要的方案可能是一张机票。

不同的场景因素决定我们开展行动的规则与前提条件,所以我们需要了解用户需求所相关的场景及不同场景中出现的限制条件。

行为与目的(做什么?为什么做?)

行为与目的,行为主体根据自身的需要,借助意识,观念的中介作用,预先设想的行为目标和结果。我们根据不同的用户群体/角色、根据相应场景提供的方案就是最好的方案了吗?依旧不一定,我们还需要弄清楚用户的行为与目的。行为是用户为达到目的而表现出来的行动,是我们探知动机或目的的切入点。

继续结合上面的例子:

我们确定了用户角色为企业领导,在城市交通拥堵的场景中。

针对需要从A点更快地到达B点这一行为,目的是为了参加一场会议,那么更需要的方案可能就是远程视频会议。

针对需要从A点更快地到达B点这一行为,目的是接快放学了的儿子,那么更需要的方案可能就是打电话给老婆,让老婆帮忙去接。

到此我除了需要确定用户角色与了解场景之外,我们还需要弄清楚用户行为与行为背后的动机。

我们掌握了角色、场景、行为与目的之后再去看事物本质是不是变得更容易了呢?

 

案例分析

例如:用户需求“我需要买个电钻”,我们将这个需求代入到我们的公式中。

角色:是谁需要买电钻——家庭丈夫

行为目的:买电钻做什么,为什么买电钻——买电钻、钻孔装挂钩,用来挂衣服

场景:在什么环境下及条件下——在书房、光滑的墙壁上

那么最终的真实需求是帮家庭丈夫解决在书房挂衣服的问题。我们除了可以提供电钻,或许更简单有效的方案就可以是提供带吸盘式的挂钩。用户提出买电钻的需求很有可能只是不知道有吸盘式挂钩的存在。

 

再举个我在产品工作中遇到的例子:

用户需求是“我需要把历史数据删除掉”,最终通过了解分析得到的结果是:某某企业,需要定期把后台历史数据删除,避免敏感数据被员工泄露。那么用户的真实需求是避免敏感数据被员工泄露,而不是删除历史数据。而我们提供的方案是对历史数据中的敏感信息做隐藏,只针对指定权限开放显示。

 

需求分析就是一个需要透过现象看到事务本质的过程,期间我们需要确定我们的面向的用户角色、用户所在的场景、表现出来的行为以及背后的目的与动机,最终我们将各个因素结合起来得出更完善的解决方案

有关透过现象看本质,如何针对用户做好需求分析的更多相关文章

  1. ruby - 如何使用 Nokogiri 的 xpath 和 at_xpath 方法 - 2

    我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div

  2. ruby - 如何从 ruby​​ 中的字符串运行任意对象方法? - 2

    总的来说,我对ruby​​还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用

  3. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  4. ruby-on-rails - 如何验证 update_all 是否实际在 Rails 中更新 - 2

    给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru

  5. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  6. ruby - 如何将脚本文件的末尾读取为数据文件(Perl 或任何其他语言) - 2

    我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚

  7. ruby - 如何指定 Rack 处理程序 - 2

    Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack

  8. ruby - 如何每月在 Heroku 运行一次 Scheduler 插件? - 2

    在选择我想要运行操作的频率时,唯一的选项是“每天”、“每小时”和“每10分钟”。谢谢!我想为我的Rails3.1应用程序运行调度程序。 最佳答案 这不是一个优雅的解决方案,但您可以安排它每天运行,并在实际开始工作之前检查日期是否为当月的第一天。 关于ruby-如何每月在Heroku运行一次Scheduler插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8692687/

  9. ruby-on-rails - 如何从 format.xml 中删除 <hash></hash> - 2

    我有一个对象has_many应呈现为xml的子对象。这不是问题。我的问题是我创建了一个Hash包含此数据,就像解析器需要它一样。但是rails自动将整个文件包含在.........我需要摆脱type="array"和我该如何处理?我没有在文档中找到任何内容。 最佳答案 我遇到了同样的问题;这是我的XML:我在用这个:entries.to_xml将散列数据转换为XML,但这会将条目的数据包装到中所以我修改了:entries.to_xml(root:"Contacts")但这仍然将转换后的XML包装在“联系人”中,将我的XML代码修改为

  10. ruby - 如何使用文字标量样式在 YAML 中转储字符串? - 2

    我有一大串格式化数据(例如JSON),我想使用Psychinruby​​同时保留格式转储到YAML。基本上,我希望JSON使用literalstyle出现在YAML中:---json:|{"page":1,"results":["item","another"],"total_pages":0}但是,当我使用YAML.dump时,它不使用文字样式。我得到这样的东西:---json:!"{\n\"page\":1,\n\"results\":[\n\"item\",\"another\"\n],\n\"total_pages\":0\n}\n"我如何告诉Psych以想要的样式转储标量?解

随机推荐