因为离开了计算机软件领域,所以将之前的工作经验总结一下,写出来供大家参考。
我不喜欢整天板着脸的工作,我经常将软件的设计开发想象成一套软件从云里雾里诞生的情形,感觉很神奇。一套软件系统的开发会将我从一个外行变成业务专家,而且软件也随之诞生了。而我在这里将描述这个过程,我是如何想,如何做的。
下面我将假设自己是某公司的软件工程师和项目经理,负责一个客户的软件开发。我非常希望我的团队里能有出色的熟悉业务的专职系统分析人员,出色的软件工程师,聪明的助理,甚至高效率的美工人员以及充足的经费和无限的时间。但这些实在太奢侈了,我甚至不得不自己参与到设计过程当中。其实我时常都想喊:这不合理,这不是我该干的。但我想这可能是很多人真实的经历吧。
我所知道的信息也非常有限,实际上公司对于这个项目也是知之甚少,这对我们都是一个全新的挑战。我们只知道我们需要为一个股指期货投资者开发一套软件,除此之外我们基本什么都不知道,似乎老板希望能够开发这一市场。所以决定成立一个项目组开发这个项目,他希望能够生产出帮助期指投资者的软件,所以就找到了这样一个人。这个客户是专家,他的话可以代表其他的用户,就是说这个客户如果这样说了,那么其他人也会这样想。就这样,他希望知道这些人到底希望得到什么样的产品,还希望知道开发成本。决策是老板的事情,无论看起来多不合理,也和我无关,我需要做的是达成这个目的。
当然,场景是虚构的,但项目是确实存在的真实项目,需求也是真实存在的,客户嘛,自然就是我自己。至于整个过程,基本上就是我以往工作的总结。
1、第一次接触
我在接触客户之前恶补了一下股指期货的相关知识,应该可以说是对交易规则略知一二,谈话的时候对于对方的专业术语应该是可以理解了。随行人员是助理---他主要负责记录,还有我自己---一个经验丰富的软件工程师。
助理的要求是能够快速的记录以及将关键点整理出来。而我可以第一时间判断某个功能是否可行,尽量引导客户降低需求,并将需求的方向向对我们有利的方向发展。但这次因为知道的太少,所以最好还是先听听他怎么说吧。
第一次接触的目的就是先弄明白他到底想干什么。虚心的向客户学习,学习客户的业务领域。
第一轮:
见面寒暄之后开始座谈。我的第一个问题也很简单:您到底想要个什么东西?
他的回答是这样:我希望要一个工具,能把我每天的操作情况记录下来,包括仿真和实盘操作。也要把我盘后复盘的操作记录下来,自动帮我计算收益。而且需要以图形的方式显示。最好还能从以往记录的数据里发掘出有用的信息。
这个回答并不能带来多少有用的信息,我不能在脑袋中描绘一个软件的界面,也不能想象他会如何去操作。我们还需要更多的信息。上面的回答只是一个开始,剩下的需求需要发掘,慢慢的顺藤摸瓜,直到弄明白他想要做什么为止。
在对上面的回答进行进一步深入的发掘之前,还有几个问题是我所关心的。
第二个问题:谁会是这个工具的使用者?
回答:他自己,并不会有别人帮他用。
看起来他认为这应该是一个个人程序,我的脑海中已经出现了一个画面,这套软件将会被装进漂亮的包装盒中摆在货架上销售。
第三个问题:一般会什么时间使用这个工具?
回答:一般来说应该是非交易时段,大概都是在三点之后吧,因为交易的时候太忙,没时间做这些事情。
看来是可以悠闲的完成的某种工作,这是个好消息,因为就算慢一些的话似乎也不是什么大问题。
第四个问题:都会在哪里使用这个软件?
回答:可能会在很多地方,家里、机场、宾馆等地方,现在不是有平板电脑吗,那个很方便。现在的手机也可以在很多地方用。
晕,网页应用?我们是不做网页应用的啊……那这个程序估计要跨平台了,这可不是什么好消息。我需要更多信息来否决这个需求
第五个问题:为什么希望有这样一个软件?
回答:我希望能够将自己的交易情况记录下来,包括当时怎样想的,操作的依据等等。这些都是经验,这对我们很重要,将经验总结下来会对以后的操作也有帮助。其实我尝试过微博啊,博客之类的工具,这些工具虽然能够记录,但却不能总结。比如说一段时间总是失败,会不会有相同的原因?比如开仓依据有问题?这些微博什么的做不到。另外网上的其他工具没有图形界面,不直观,或者操作起来不方便,比如excel虽然可以做简单的统计,也可以划线,不过更复杂的工作就会很麻烦。所以我希望有一个能够针对我的要求设计的软件,不要网页的,那个很麻烦。
这次他回答了两个问题,为什么和怎样做。看来我不用担心网页应用的问题了,他不要网页应用。
第六个问题:按照我的理解,您是将操作的情况如实记录到这个软件中对吧,手机可能会比较麻烦一些吧,而且这些是不是需要交易软件做参考呢?那必须在交易软件可以运行的机器中进行吧。
回答:有时候来回切换软件麻烦,手机可能也很麻烦,不过现在平板电脑挺方便的,另外我还有个苹果的air,这个很好。
看来躲不过跨平台了,还好这个问题不是很大,我用的工具还是做的到的。另外,iPad啊Air这类东西,计算能力比起普通手机来说算是相当不错了,但问题是这些东西得操作方法貌似很独特,需要在设计时考虑周全。另外还想到一个关于环境的问题。
第七个问题:那么您是不是想在网络上保存和交流这些经验呢,另外您想通过网络或者是U盘同步您记录到软件里的数据呢?
回答:不要通过网络,我不需要和别人交流,只有我自己知道就好,用U盘就可以了。
应该不是网络应用,文件形式保存数据
第一轮询问基本可以结束了,似乎不是什么很大的系统,但却要跨平台,更像一个工具软件。接下来看一下记录的结果。
上方是功能性需求,下方是非功能性需求
每一轮询问为了更完整的了解所面对的问题,可以尝试从一下几个方面进行询问:What Who When Where Why How
在不同情况下,含义可能会不同,但这样问下来通常会得到一个相对完整的描述。
不建议采用追踪一个问题快速跟进的方法询问,这样很容易遗漏掉重要的信息。另外Where还包含可能使用的设备信息,比如程序将来会被部署到什么样的设备当中去。
从上面的记录看,这似乎应该是个小型的工具软件,毕竟是个人使用,规模似乎不会很大。不过现在仍然很模糊,无法勾勒出一个软件的情况。接下来需要针对每一点详细的询问一下。