有关软件工程的一些问题
一、何为用户需求?真的要以满足用户需求为目标吗?
在《构建之法》第三版第一章P17中提到:研发出符合用户需求的软件说明:要通过实际的工作收集、推导、提炼需求,并在软件发布后通过实际数据验证需求的确被满足了。需求来自于实际,而不是自己想象出来的“需求”或者人云亦云的需求(例如:图书馆管理系统)。
自从接触软件开发的学习,就应该明白弄清用户需求是软件开发的第一步。然而,了解用户需求通常是比较困难的,所以现在的各种软件都有“用户体验调查”之类的反馈功能,这些功能的应用前提即是软件开发者事先实现了各种软件功能,然后通过用户的筛选去掉不需要的功能和改进现有功能。这说明了直到软件发布,软件开发者也不能确认用户的需求是否被满足或基本满足。
我认为自己想像的需求是非常重要的,特别针对一些开拓者类软件,因为用户也许根本不知道自己想要什么。在十几二十年前,我们大多数人都不曾想过用各种支付软件付款(而现在大部分人都是用户),因为这是一般群众无法想像的,它们只能被当时的精英们构想,这是他们自己想像出来的需求。
在游戏开发领域,用户就更难说出自己的需求了。可以想像某游戏公司在某论坛上公告:征集游戏设计建议......然后下面是各种回帖,有的要玩射击类的,有的要玩冒险类的,有的要玩比较休闲的,还有的要玩剧情有趣的......到头来什么回帖都有。也许还可以做现在流行游戏调查,然而这种模仿或跟风的项目往往是失败的。《愤怒的小鸟》是芬兰公司Rovio Entertainment推出的一款休闲游戏,玩家通过手机的滑动对捣蛋猪进行抛物线的射击。游戏氛围轻松,画面质感强,操作和题材新奇都是这游戏的特色。这游戏在几年前可是相当火爆,《愤怒的小鸟》可不是以满足用户需求为目标而成功的,它的成功靠的是游戏设计者的创意。
二、关于PSP的疑惑
在《构建之法》第三版第二章P36提到PSP(个人软件开发流程)的特点,于是我产生了疑问:
1、PSP数据是对一个软件开发者实现需求效率的评价,而书上的特点提到在小型、初创的团队中,很难找到高质量的项目需求,这意味着给程序员的输入质量不高。在这种情况下,程序员的输出(程序/软件)往往质量也不高,然而这并不能全部由程序员负责。这里提到了项目需求的质量问题,PSP的测试数据还与需求的质量有关吗?不是说PSP的目的是记录工程师如何实现需求的效率吗?
2、工程师有可能很高效地开发出一个顾客不喜欢的软件(例如用户界面很差,功能未能解决用户实际问题,等等),那么这位工程师还是一个优秀的工程师么?书中的这句话引起了我对PSP数据的疑惑,既然PSP数据是评价一个软件开发者的不充分条件,那么PSP数据的重要性有多大?(没有疑问的是PSP数据反映了一个开发者实现需求的能力,但是却没有把软件的用户满意度考虑进去)
三、关于创新的想法
在《构造之法》第三版的16章中,我的想法有些不同。
对于 迷思之二:大家都喜欢创新 ,作者的观点是"大家都不喜欢创新",为此还列了数条大家不喜欢创新的原因。而我的想法:
1、以游戏领域来说,创新是一个好游戏必备的品质,这一点在其他艺术领域也一样,没有人会喜欢“玩到吐”的模式或玩法。
2、创新代表着新事物替代旧事物,创新代表着发展。工业革命以来,社会生活发生了巨大的变化,直到现在还有人不喜欢工业革命的创新。但能够说大家都不喜欢创新吗?
对于迷思之四:创新者都是一马当先 大家听了很多创新者的故事,有些人想,他们真了不起,第一个想出了这些美妙的想法,要是我早生几十年,也第一个实现那些想法就好了。其实,大部分成功的创新者都不是先行者,我的想法:
创新者的确是一马当先,但不一定成功。他们有的虽然失败了,但是却起了个好头,是行业的楷模。在我的价值观里,创新的目的并不是为了成功,而是为了改变社会。(作者在这里考虑的是创新是否能使商业成功,我认为这有些狭隘,有些创新者虽然可能在以后的竞争中败下阵来,但他们的创新也会奠定他们在行业中的地位。)