在屎堆中奮戰!

在這個 project 上開發真的是把我搞死!

我現在慢慢理解為什麼這個 project 會變得現在這副德性。如果東西本來就發臭,你真的不能怪別人繼續往裡面扔屎!這也就是為什麼我現在會在「屎堆」中前進,而且很有可能的是,我也正一邊前進一邊往旁邊扔屎…

所謂公司文化也許就是這樣慢慢形成的,當一開始的人不在乎這些小細節時,後來的人當然也就入境隨俗,不把這些細節當一回事。久而久之每個人都習以為常,認為這沒什麼大不了的,偶爾有一兩個熱血青年跳出來想要做一些改變,居然還被他們說「你吃飽沒事幹嗎?」

對於熱血青年最大的打擊,或說最讓人灰心的事情,就是當他提出什麼改善現狀的想法時,你當頭潑他一盆冷水,用各種聽起來好像很有道理的藉口,把他的想法批評成不切實際、多此一舉。慢慢的,熱血青年也不想再做任何改變,心裡只想著該如何找下一份工作…

我早就跟他們說這種寫法很容易出錯,以後如果要維護的話,必須要非常非常小心才有可能不產生新的bug,所以最好是現在就把整個寫法改掉,用一些重構來把程式好好整理,這樣以後會省事許多。結果那位據說是元老的傢伙告訴我說,你不能這樣做,因為以下這些理由:

  • 其他人會很難merge程式

第一次要去 merge 程式的人,當然會覺得意外,怎麼改了這麼多東西?但是我覺得這也只有第一次而已,咬咬牙就過了,而且重要的是,新的寫法一定會很容易就看懂,所以其實不會造成太多的困擾。

要把壞習慣改掉時,一開始難免會不適應,但我認為正是這種克服阻力的文化才能造就一個偉大的企業。顯然的,這種文化不存在於我現在的公司中。

  • 維護那段程式碼本來就必須要非常小心,所以不會有太多的overhead

這根本就是夠屁,如果從以前到現在修改這段程式碼的人都非常小心的話,我現在也不會坐在這裡和這個屎堆奮戰,然後只能在這裡發牢騷。(重點是我不到一個月前才警告過他們會發生這種事,沒想到立刻就發生了,然後還指派給我處理,是在懲罰我嗎?)

  • 這個project已經發展到尾聲,現在只能進行局部除錯,不可以進行大規模的結構修改

這一點大概是唯一我能認同的。木已成舟,現在只能看看怎麼東調西改,把東西弄的勉強可以用,然後閉著眼睛趕快賣一賣了。

但說實在我其實也沒有要大規模修改,我只是把程式改成比較可維護、可讀性高一點而已,我認為這種動作應該是不管在project的任何時期都要持續進行的。畢竟,現在花一小時重構一下,以後絕對可以幫你省下十小時的debug時間,所以才說越早進行越好,而且任何時期都要進行。一個產品通常花兩年進行開發,然後賣三年,再加上保固期的三年,你最起碼要和這些程式碼奮戰八年以上,現在東西都還沒出門,你就說不能再做這些改動,那我不敢想像之後這些程式碼會變成什麼樣的怪物?(附帶一提,微軟最近把Windows XP的技術支援政策延長至15年,再加上之前開發的時間,起碼18年以上,一個剛出生的嬰兒都高中畢業了,真的難以想像裡面的程式碼是怎樣的一個局面?)

  • 這些程式碼是很爛沒錯,但看久就習慣了

是啊,和糞堆搞在一起久了,你也不覺得它臭就是了…

  • 我的想法可以留待下一個新的project時再派上用場

這個聽起來有道理,但是稍微了解我們公司現況,或者說了解產業文化的人就知道這其實也是夠屁。一般而言,高科技公司的主力產品通常兩年就要問世,最多不會超過三年(像蘋果這樣一年發一支iPhone或是iPad,只能說神乎其技),而通常同樣一批工程師要同時開發新的產品並且維護舊的產品(少數公司是兩組人馬切開,各作各的)。在這種情況下,公司不會允許你花太多的時間重新打造已有的功能,換句話說,他們會希望你能儘量把舊有的東西轉移到新的產品上,然後只花時間去做以前沒有的功能。在這樣的一個前提下,你叫我把我的idea留到下一個project根本就是B.S.我,因為你現在不讓我做,百分之一百二十以後你也不會讓我做。

  • 你想在這公司待多久?有必要花這麼大功夫來搞這個程式嗎?

我想這應該是他自己的心裡話,只是他不好意思說而已。但想想他其實也沒有錯,在這樣的環境下,你期待一個有熱血的人會想要待多久?昨天我和另一位也是新來的同事講到這件事,我說我覺得好像公司的人都不是很在乎程式有多髒?他告訴我說,「也許在乎的人都走了!」是啊!只要有一點點在乎的自己工作品質的人應該都看不下去吧?當然啦,如果他覺得這已經是他所能達到的最高品質的話,我也無話可說就是。

廣告

About Weicheng Chu

創業中,微碧愛普科技 (www.weibyapp.com) 已婚, 有一對雙胞胎兒子, 現居住在美國加州、台灣台中
本篇發表於 軟體工程, 心情記事 並標籤為 , 。將永久鏈結加入書籤。

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s