为了用新的framework,老印老板又交给了我一个新任务,就是做一个proof-of-concept (POC)来证明我们可以用这个新framework开发新功能。之前我们已经修改了程序结构,让这个新framework和老framework可以共存,现在要证明能用它来开发具体功能。
我把新framework的specs下载下来读了一遍,就开始做POC了。因为我在上一个公司用过一个类似的framework,所以不算太难。花了两三个星期,把各个技术细节都解决了。证明可以用了之后,我就演示给老板和两个lead看,他们都兴奋不已。
过了不久,老板跟我说上面决定让我来领导一个新的project,开发一个新的模块,就用这个新framework。而且我既是technical lead又是project lead。我既兴奋又忐忑,因为我才来了一年多,上面就愿意把这个相对大的project交给我,而且还是project lead (我以前只做过technical lead), 是对我极大的信任。老板说是他特别为我争取的。我因为很想用这个新framework开发程序,就答应了。
这个project成员有三个BA和三个developer(包括我)。我们原来的director作为subject matter expert给我们写了几页纸的requirement。我拿来一看傻眼了,因为我大部分都看不懂。这个requirement既包括新增加的功能,又包括对很多现有功能的修改。可是每一项都只有两三句话,没有具体细节。我想既然我不懂,可能别人也有不懂的,那就开会吧。反正老美都喜欢communicate and stay on the same page.
没想到这个会一开就开了一个星期,因为涉及到对很多business process的修改,要一一搞清楚。我利用这段时间去library借了一本关于Agile Estimation方面的书来看,了解了如何用story point计算project的进度,很有收获。
下一步就是要BA写use case。 我找了别的项目的use case来看,都不太满意。那些不是太简单笼统,就是太细节到每修改一个field就是一个use case,都不符合我的要求。我还是喜欢我以前工作中用的use case,一个use case针对一个screen,或者一个screen上某个大的完整的function。并且要有足够的细节可以交给developer做,这样就减少后期在实现上的扯皮,因为后期修改的cost更高。我手头没有好的use case样板,只好上网去找,还真找到一个好的,还有详细的说明。我把打下来的厚厚的资料拿给三个BA,给他们讲解了一遍,他们都很认真地听。我又说让他们每人先挑一个use case写,然后我们再讨论修改。经过一两次修改,他们就能写得很像样了。他们中有两人在这个系统上有多年的经验,具体写起来很容易。我就把这部分全权交给他们了。
然后我就和director, QA manager和我的manager开会来讨论各个use case的必要性和优先级。在这个过程中砍掉了大概有四分之一的use case。
作为technical lead,我又和两个developer和一个DBA讨论technical 和database design。然后就把use case分下去给他们做。其中一个developer是contractor,老印女,二十多岁,学东西很快,而且干活很勤快。我就把用新framework开发的部分交给她做。另一个developer是个五六十岁的东南亚人,在这个组里工作了多年,我就把对现有功能的修改交给他做。我自己虽然没什么时间写程序,但还是承担了和银行接口的程序,因为涉及到钱,我想自己做更稳妥些。
项目就这样按部就班地进行。过了两个月,我根据现在的速度和剩下的story point,计算出项目要到十一月才能做完,离要求的八月份差了不少。我找到老板,他听了我的解释后,说我们要找director和 QA manager谈。因为我是第一个用这种方法计算的,她们花了点时间听明白了。director说一定要八月份完成,那就只能加developer。
会后不久他们决定加一个senior,但条件是他要学怎么用这个新的framework。我立刻答应了,我来教他。后来证明他的加入确实缩短了项目的进程。但后来有一个重要部分的use case还是没法按时完成,老板们又决定把最懂这一部分的lead加进来做。
测试也进行地很顺利。因为采用了use case的方法,每个use case做完后都可以测试。所以测试,开发,和错误修改同时进行,在程序写完两个月之后,测试就完成了。
在大家的齐心合力下,这个项目终于在八月份准备上production了。Release那天,我的心脏还是有一个小惊吓。和银行的接口不工作,后来还是admin发现他把certificate设错了,虚惊了一场。最后成功地release了。上了production一个星期后,我们居然没有听到用户的任何反馈。其中一个新的BA问我为什么会这样。我说,干我们这一行的,No news is good news!
再说我这个老印老板在这期间的表现。他除了参加一开始的一星期的会议,在看我有把握掌握项目的进程之后,就问我他能不能不参加会议了。我当然不能反对。他就此从这个项目上消失了。当然release那天他又出现了,并且和我们一起待到成功地release。期间有一次他跟我谈话,说他申请把两个lead提成supervisor,如果我把个项目完成得好的话,就把我提成lead。我不知道我是不是应该相信他的话,但我接受这个项目并且要把它做好,并不是因为我想当lead,而是出于我的责任心。
最不可思议的是,当我一力承担三个角色(project lead, technical lead, developer),忙得晕头转向的时候,他居然私下里跟我说, 你猜我挣多少钱,然后说了一个比我高得很多的数字。我心里很生气,我知道他想说的是,看你忙成这样,也比我这个干得轻松的挣得低很多。我心想有这么说话的吗?可是我又能说什么呢?