2007年2月9日

專案小故事

許多想法在心裡待了好一陣子,把他們寫下來後,會整理得比較清楚,並且正好以此檢驗自己。

之前提到過,我參與過高鐵的票務系統開發,此事還有後續。案子結束後一陣子,原案主找上門來,希望能機動支援同系統相關工作。之前我已經向案主表明過,不太願意再接類似性質的案,但基於我對此系統已有一定了解,還有想賺錢,仍答應去瞧瞧。這次主要內容為 UI 的改寫,整個皮要換過一通,而當然,由於 view/ control 切得並不好,換皮絕對不好換。主要的工作已經由一位 M 開頭的工程師在執行,但案主認為人力不足,無法如期完成,我大概了解情況後,這位工程師抵達,我們進去開會。

會議中我表達意見,認為原系統雖然寫得不好,但已經通過各種測試,所以若要修改,建議以原有程式為基礎,盡量用換圖片,改位置等等方法改正。不過 M 很有自己想法,已經用 wicket (那時我第一次聽到) framework 而非原先的 struts 加以重寫 / 重整,對此我表達反對,連 framework 都換,勢必重測、修正,案子時程趕,不宜。案主則表示,希望 M 先提出需要幫忙的部份,看看 John (就是我) 有什麼能做的。 M 提出的是,請我幫忙把要翻譯的字串從網頁中標記抽出,拉到文字檔中即可。這是相當單純的工作。

我沒什麼意見,總之如果案子需要的是這樣,我們就做這樣吧,只是不要期待我花自己的時間下去做就是了。不過既然案主的意思是希望我能幫就盡量幫,基於敬業,就算這麼簡單,我還是希望了解一下目前情況,讀讀程式碼,最好是架個環境,抽完字串後能自行先檢查一次。所料未及的是,此舉卻遭到 M 的反對,他不願釋出程式碼,也不願其他人有更多參與,並表示我只負責抽字串算不上什麼寫程式,不需要知道。

嗯,整件事由我的角度看到的是這樣,檯面下有什麼其他東西我或許不知。例如案主告訴我,如果 M 一定時間搞不定,希望由我全部接手,我相信這件事情他就不知道。相反地,或許不釋出程式碼是案主的意思,或是 M 只是想自我保護,都有可能。不過結果是,我被 M 的傲慢徹底激怒了。

有個專案的執行原則是,盡量把所有資訊公開,並鼓勵成員對於 the whole picture 有一定了解。當每個人都清楚自己在做的是什麼、以及為何而做,對專案就是正面的。此事無涉保密原則,因為我已擁有全部(包括UI以外)的程式碼備份,對我保密毫無意義。M 那種認定我很強可以一人搞定,你們小雜兵只要幹一些我給的幼稚園雜務就好,其他事情不需知道的想法,對專案絕對是負面的,也不利 teamwork。更別提我們初次見面,他甚至連我的底細都還摸不清,便直接採取了這種態度。

嗯,這是第一個故事。接下來是第二個。

話說我們之後做的一個大案子,搞得很慘,規模完全超乎能力之外,當初講義氣答應的時候,實在太天真。無可避免的上網找幫手,一間公司派了工程師以及專案經理過來。此工程師姑且稱之為 L 吧,開場白就告訴我他在某雜誌開了 Java 專欄,並且表示對各種 opensource 的 framework 「都很熟」,「不熟的看一下就會了」。接下來開始討論,他沒兩句就要教育我一下,例如說他會用 Maven,可以拿來幹麼很好用之類的,我只好打斷說,這我已經知道。再過一會他又說起 xxx 如何如何,結果我又只好再度說,這我也知道。

大致談完後,決定過幾天我會收到 demo。果然,我在指定日期準時收到,demo 內容相當完整,還有 screencast 以及文字說明,清晰易懂。

我對 L 的印象,比對 M 好很多,在專業方面他的確有足夠能力執行工作,雖說他的專欄都是介紹性質,難稱 hacker,但我們可視為自我宣傳,無可厚非。

最後是故事三。

我們曾與大陸方面的一些工程師合作。對方的聯絡人我們稱 A,他一開頭並沒對自己介紹很多,只說會做 Java,先問我專案內容、採取的技術等等。我大概簡報了一下用的技術還有系統性質,對於某些不熟悉的技術,他問了些大概,表示他會一些相關的東西,應該可以試著了解看看,並拿了程式碼回去參考。過幾天他開始問我一些關於他原本不熟悉技術的內部問題,很明顯是 survey 過以後才會有的疑惑,我盡我所能告知,並且提供他一些網路文件位置以及 example code 下載。由於大陸方面網路常會被擋,看得出他花了功夫收集資料,收集不到的才來找我要。

接下來開始執行。初期他被不熟悉的東西狠狠擋了一陣子,進度 delay,他一再表達歉意,並且說之後一定趕上。之後他們速度明顯一直增加,隨著熟悉度增進,改的速度也越來越快。問的系統問題有時很深,是自己仔細想過後才問得出來的。

在過程中我們慢慢混熟,他慢慢了解一些我的技術背景,開始問我一些他不熟悉的領域。看得出來他對 Java 的功力其實頗厚,不過他都不講,似乎把自己會的東西看成理所當然,看了他們寫出來的程式碼才感覺到實力。他問的問題,都是集中在我會而他不會的東西,例如 Embedded system/ Linux 等等,甚至一些商業、公司上的事情。最後他在指定的時間達成了專案目標。

第三個故事說完了。現在進入尾聲。

前些天看到某活動網站,赫然發覺 M 也自行申請為講者,講題看來是「介紹」Maven 還有 Wicket,自我介紹說「興趣為 OOA/OOD/OOP、軟體工程以及專案管理領域」,見此心中不無感慨。或許我想表達什麼,或許沒有,就讓他只可意會,不能言傳吧。

沒有留言 :

張貼留言