為了用新的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),忙得暈頭轉向的時候,他居然私下裏跟我說, 你猜我掙多少錢,然後說了一個比我高得很多的數字。我心裏很生氣,我知道他想說的是,看你忙成這樣,也比我這個幹得輕鬆的掙得低很多。我心想有這麽說話的嗎?可是我又能說什麽呢?