星期四, 4月 03, 2008

修改還是重來?

寫程式的人在maintain或是接收他人的project的時候,如果遇到目前需求與原先design出入頗多的時候,如何順利地完成工作就會讓人很頭疼。

以前在狐狸公司進行的一個計畫,也遇過類似的狀況;當時的老闆認為,自己重新寫一個新的module不見得是一個好的solution,因為該module的功能複雜,結構也複雜,自己重寫反而可能要花上更多的時間才能具備所有的功能、包含所有該考慮到的情形。

目前的工作,又遇到了類似的狀況。這次,我選擇將『一部份』拉出來重寫。

因為一方面,這code是我們自己開發的(在前面的case裡,code是別人的),整個module要做的工作的流程易懂(不懂可以隨時問module的owner);另一方面,這個module處理的是CLI(command-line interface),因此command functions都是各自獨立,只有少數的小functions會有共用的現象,不算太難處理。因為owners很多(這module已經流轉過很多人的手),使得整個程式顯得雜亂、疊床架屋;讓我感到困擾的主要有同樣的工作有好幾個functions在處理、coding style混亂(總是有人不遵守coding rules...)。

我support這個module的目標卻是要『斧底抽薪』,把原先儲存在XML的資料轉而存進data base。因此,除了要新加使用data base的sub module之外,原先的code存取到XML的地方都得改。所以,我由CLI的角度下手,將他們拉出來重寫,並且用compiler option來隔開新、舊CLI命令。雖然我還是得看過舊的部分,但是卻可以將新的部分寫的簡單明瞭。

(以下是抱怨。。。。)

這件事讓我做得非常火大,一方面是太瑣碎了(好吧,我實在不太有耐性),一方面在我的認知裡,這不是我的工作範圍。

當初老大要我support時是說,幫忙做database的部分;所以我認為是,我只要完成DB access的submodule、提供API供上層使用,工作即告完成,但是為了測試我的code,我試著找出原先XML access的地方來做替換,才發現原來這module這麼混亂;與現在的owner討論,他卻認為我應該『由上到下』全包了(由CLI到DB的access);我自己負責的module已經因為support這個,而delay了好幾個預計要加強的部分和要解的bug,聽到這位仁兄如是說,讓我瞬間非常不耐煩(我想,口氣大概也不是太好)。但是,我們是同一個team的,而這位先生的工作loading也很高,再基於事情應該做得有頭有尾,我也只好一定程度的『全包』了。

不過,經過這次與這位仁兄一定程度的合作,我非常希望不要再有與他合作的機會啊~~雖然他很厲害也很熱心,但有時跟他溝通,都讓我覺得夾纏不清,瑣瑣碎碎;偏偏,他又兼具宅男性格,有時不斷追根究底,有時則熱心提供經驗分享;讓我頗感吃不消,因為我本就不大有耐性,而且工作情緒也會不時被打斷。

沒有留言: