当我们写一个软件的时候, 都知道要为用户考虑, 但是用户在哪里nbsp; 有同学写 “图书馆管理系统” – 说来图书馆的同学都是我的用户, 但是他们有没有区别呢nbsp; 有同学写“自动柜员机系统”, 那到底有多少类型的用户来到柜员机前呢nbsp; 这些都是团队成员在需求分析和设计阶段要反复琢磨的问题。
有同学说, 我把用户的愿望百分之百地实现了, 这不就行了么nbsp; 不要搞那么多分析啊, 故事啊, 心理啊, 讨论啊, 文档啊… 请看这个笑话:
在长时间一丝不苟的实现之后…
得到了和用户要求一模一样的产品!
但是用户满意吗/strong>
光看用户的表面语言或行动还是不够的。我们还要找到用户语言行动背后的动机!
有同学会说, 我只要把产品做得可扩展性特别好, 一般用户到超级用户都能搞定就行了! 且不论这是否能覆盖所有用户, 一味追求“最大的扩展性”也有很多副作用。
几年前有一款www 浏览器有不少安全性的问题, 安全专家在忙于补救各种安全漏洞之时, 发现它的 “ 站地址栏”允许的最长输入是 4兆个字符! 4百万个字符啊, 多适合做缓冲区溢出的攻击啊! 但是有哪个正常的 站或用户要输入这么长的 址呢nbsp;
[讨论]
Visual Studio 是一个非常成功的软件开发集成环境 (IDE), 它支持VB/C/C++/C#/ASP.net/WPF/… 等等不同的开发语言和套件, 用户可以写几行的 hello world 程序, 也可以写几万行的多线程软件, 它还支持项目管理, 测试工具, 以及第三方的插件… 它的众多用户分布在全世界大大小小的国家, 各行各业的公司, 大大小小的团队, 有些是业余爱好编程, 有些是老师和学生, 有些是专业开发人员… 很多用户对它也有很多改进意见, 那我们到底为哪些用户服务呢nbsp; 同时, VS 的微软团队也有很多开发人员, 他们也是用户, 只听取他们的意见是不是就够了呢nbsp; 在开发一个新版本的Visual Studio 时候,如果你来主持需求分析工作, 你的工作结果会指导上千名工程师, UI 设计师, PM, 市场推广人员未来两年的工作。 你怎么办
[给大家10分钟讨论]
下面是微软在Visual Studio 2005 设计阶段使用的几个 典型用户 (persona):
典型用户 | 造型 | Persona details | 特点 |
Mort |
Mort, the opportunistic developer, likes to create quick-working solutions for immediate problems and focuses on productivity and learn as needed.
Mort is someone who doesn’t consider programming their main job. Maybe they are a statistician, biologist, or construction estimator, who also knows quite a bit about programming. They are opportunistic, using whatever tool comes to hand that will get the job done. |
不一定是专业出身的程序员, 他们有自己的主业, 编程只是一个工具, 他们的主要目的就是用工具把事情搞定就行了。他们很喜欢代码示例, 也不特别关心程序效能。 (例如许多 VB 用户, 偶尔用VS 写程序处理数据的研究人员等) | |
Elvis | Elvis the pragmatic programmer, likes to create long-lasting solutions addressing the problem domain, and learning while working on the solution. Elvis: journeyman developer. You can scope out a job and give it to them, and the job will get done. In general, Morts don’t become Elvises. Morts want to do their main job; they don’t WANT to become a professional developer. Elvises go to school and get CS degrees. |
以编程为生的程序员, 他们大多是CS 专业出身。 各种IT 公司的开发人员应该是在这一类中。 | |
Einstein | Einstein, the paranoid programmer, likes to create the most efficient solution to a given problem, and typically learn in advance before working on the solution. Einstein is a smart Elvis who has lots of experience. Einstein can see the big picture. An Einstein often is in a position of responsibility, choosing technologies and designing large software systems. |
在行业里战斗了很多年的程序员, 架构师, 项目经理。 他们能决定项目用什么样的技术以及发展路线。 |
这里有一些 上关于VS 各种典型用户的评论。
我在移山之道里也举了一些和中国程序员较接近的例子 [移山之道 第14章]
14.1 典型用户
大牛和小飞在讨论 站界面的时候吵了起来。
大牛:这个界面对于一般用户来说太复杂了。一般人根本搞不懂。
小飞:我们这个界面是针对有很多经验的用户,就像卖石头的吴石头,他搞石头生意有那么些年了,他应该对我们用的术语比较熟悉,而且会用电脑,我们并不针对初次使用我们系统的用户,或者对奇石生意有了解,但是对电脑一窍不通的人,就像石头他爹。
大牛:不对,我们要针对那些对奇石生意有了解,但是对电脑一窍不通的人,我们有一些功能是为这些用户设计的。
小飞:不对,我们主要的用户是对石头生意很了解,并且对电脑的使用很熟悉的人。而且这也符合所谓“Persona”的要求。
大牛:我不管你的“Person-a”,我们要分析用户的需求,在把需求搞清楚之前,管他“Person-a”还是“Person-b”,都没有用。我们还是不要用这些名词忽悠我们自己。
他们俩一起来到阿超面前,把事情原委说了一遍。
阿超:所谓“Persona”,就是典型用户,吴石头/石头他爹就是我们系统的两个典型用户。我们的确要了解我们软件系统的用户(不是公司的商业客户),那么,什么是典型用户/span>
在产品开发的过程中,我们经常需要描述一组典型的用户。以前大家通常是以一些抽象的名词来表示,如“家用电脑初学者”,“经验丰富的系统管理员”,现在我们建议用一个“典型用户”来代表。典型用户不再是一个抽象的概念,而应该是一个活生生的人物。
典型用户有哪些特性/span>
一个典型用户描述了一组用户的典型技巧、能力、需要、想法、工作习惯和工作环境。
大牛:以前我们管台风叫1 、2 ,现在都起了名字,叫云娜、海棠、卡特丽娜、桑迪,等等,是不是跟MSF-Agile学的/span>
阿超:这你得问气象部门,至少台风“海棠”比单纯的数字好记。但是我们的Persona还包括了更多的特性,不光光只是一个代 ,一个典型用户描述了一组用户的典型技巧、能力、需要、想法、工作习惯和工作环境。
在别的行业中可以用到Persona的设计方法。我今天去银行开账户。开完账户后,服务生在窗口后低着头,过一会看我还坐着,就说,没事了,你可以走了。我还想了解一些其他的服务,比如信用卡/理财账户,等等,她好像对此没有兴趣。看起来银行把我的“开户”处理成一个单独的事件,开了账户就完了。如果银行分析开户人的Persona,它可能了解一些典型用户的典型心理,比如小企业主崔大智来开户,他就是来开个户就完了然不是!他有不少钱,可能申请信用卡、建立理财计划、贷款、联系代发工资,等等。如果银行仅仅帮他开个户就把他打发走了,那样失去了多少商机
在设计软件的过程中,我们(设计/开发者)往往会以我们使用产品的习惯和我们对产品的熟悉程度出发设计,忘了我们的软件是给千千万万个不那么会用电脑的人使用的。在这种情况下,搞一个“典型用户”会强迫我们在考虑问题时从用户的角度出发。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!