錢塘煙雨浙江潮

侯捷 1999.06.28


●讀者來函

侯老師您好:
我是一位剛工作滿六個月的程式設計師,公司剛草創也只有六個月的時間,
當初會進入這家公司的動機,是要發展CASE Tool以及學習Windows程式設計的技術,由於當時我們幾位程式設計師,並無任何大型應用程式的開發經驗,也沒有一位有開發經驗的人來帶,使得我們幾位程式設計師得自己做SA,再加上原本以為會有人來帶領我們學習Windows程式設計,卻沒想到是要自己翻書學習(也就因為這原因,所以才會對侯老師崇拜不已)。這些的種種我們幾位程式設計師都忍氣吞聲,自己扛下來,我覺得這對一位剛進入社會的程式設計師來說並不容易,且艱辛。

後來我們幾位程式設計師寫了幾個月的程式後(其中看了非常多的書籍,如:Windows95程式設計、多型與虛擬、深入Visual C++ 4.0、Delphi 學習筆記 Win32篇、Wn32 Programming、UML...書籍太多了),深深的發覺必須要有一套方法(如:UML)來好好的分析CASE Tool,除了功能的規劃外(目前該公司的上面人員祇有看到這層次而已),其內部的Class架構模型的規劃更是重要,如此在codeing時,才會更愉快、方便、好用,不知道這個想法對開發應用程式來說正不正確。公司卻往往因為進度或礙於經費問題,造成『你可以不需要這樣想,只要功能出來了就可以』,或者是『你這個想法可以等到下一版時再討論』等等的話語,我覺得這好像是趕鴨子上架,做CASE Tool都如此的草率,那誰還敢用這CASE Tool去分析、設計呢?更糟的是CASE Tool的方法論也一直變動,讓我們幾位程式設計師,不知該如何寫程式?

之所以會寫這封信的主因是,最近我們有幾位程式設計師,已經對這狀況待不下去,所以紛紛提出離職,而我也面臨了是否要離職的抉擇上,其實公司剛草創的確是很艱辛,但如果連做軟體的態度都因經濟問題而變質的話,那這種軟體公司還可不可以待下去,其實我們幾位程式設計師何嘗不希望把軟體寫完,但是上面的人一直增加新功能、要不修改功能等等,上面的人都不清楚為什麼加一個小小的按鈕功能後,會造成程式設計師很大的負擔。主因還是內部物件架構以及Win32基礎知識的不足,昨天才問過上面的人能不能做有關Win32的基礎知識的教育訓練,他們說不行,因為台灣找不到人會這方面的東西,就算有這種人也不知道在哪裡,也可能這是別人的商業機密所以請不到,聽到這個感覺有一點心灰意冷,Wn32基礎知識、開發應用軟體的方法,感覺是虛無飄渺、可遇不可求的東西,其實我們幾位程式設計師只不過想學這些東西後,能很快樂的寫程式而已。想請侯老師評定一下這家公司不知可否?寫了一大堆,希望侯老師的眼睛不會太酸祝 事事順心

一位很有雄心壯志的程式設計師 1999.06.24


●侯捷回覆

滿懷理想與熱誠的年輕學子進入職場,遇到一大堆令人心灰意冷的事情。難過的心情我可以想像。

不過首先,請你收拾灰心的情緒,接受一個事實,人生不順遂的事情是很多很多的,這個社會距離美好還差一大截。我看過許多不滿意現實狀況的「很有雄心壯志的程式設計師」,有人繼續堅持理想,或體制內改革,或良禽另擇木,用光明的方式來進行他的奮鬥,昂昂如千里之駒;有人同樣是繼續堅持理想,卻逃進陰暗的一面,開始用憤世忌俗的眼光與心靈看整個世界與所有別人,如一頭受傷的獸,難以親近;有人則是選擇放棄,泛泛如水上之鳧,與波浮沉。

要怎麼做,要把自己的人生導向怎樣的方向,往往只在一念間。

軟體界有規模的公司,我想實在沒幾家(這裡所謂的規模,不是指營業額大小,是指咱們軟體工程師認為該有的軟體開發程序規模)。不止是臺灣,我想即使在全世界,有嚴格研發制度與規模並且確實落實的軟體公司比率也極低。我與任職 CA, Microsoft USA, IBM USA, 以及臺灣各公司與各研究單位的朋友見面時,最感興趣的話題就是他們對軟體開發的程序以及文件的保留整理,有怎麼樣的制度。大家聊聊之後,常常發出「錢塘煙雨浙江潮」的概嘆。

錢塘煙雨浙江潮,未到千般恨不消,到時原來無一物,錢塘煙雨浙江潮
-- 蘇軾

畢竟軟體業是個高度競爭、與時間高度賽跑的行業。為了趕 project,犧牲掉許多應有的程序…唔…滿能夠想像!『只要能夠 work 就好』成了project leader 口中的最高行動原則與最後仲裁標準,雖然他們也都說『下一版一定要循序漸進』。

我的意思並不是「事實如此,所以無條件地妥協吧」。我只是要告訴你,你所看到的,是軟體界的通病。離開了這家,到了那家,遇到相同情況的機率非常大,或許是五十步與百步之差而已。

這裡面陷入一種 dilemma(進退維谷)的情況:要做 project 或 product,當然你必須有市場優勢:或商機優勢、或佔有率優勢、或成本優勢…。然而如果商品遲遲出不來,一切成空!商品要既快又好,除非是體質已經十分健全、技術文件、軟體元件、高素質人員都已齊備的公司,否則難免要且戰且走。這是不得不然的事實。所以雖然侯捷時時強調要把根基紮得很穩,但是我也非常尊重這樣的聲音:『如果等到把 object model、framework infrastructure、Win32 programming model、OS foundation 都搞懂弄熟才開始開發產品,恐怕沒有一家公司能夠等』。

這裡面要考驗的是 leader 和 members 的尺寸拿捏功力。為了眼前的生機,某些東西必須犧牲;然而為了長遠的生存,固本培元的功夫不能省。那麼,公司是否願意花點小錢,購買一些資源(雜誌、期刊、書籍、技術文件)給工程師們閱讀?是否願意花點錢為工程師做技術培養?是否願意在project 與 project 之間給工程師們一些些生聚教養的時間與支援,讓我們能夠把過去為了趕 project 而矇矇懂懂得過且過的技術好好檢視一番?

我想,資源的供應以及必要的技術培養,是每一家軟體開發公司應該要有的。至於給工程師們一些生聚教養的時間與支援,則是相當理想化的目標。project 像浪潮一樣,波波相連,如何企盼大海無浪的那一天?

有些朋友在工作一陣子之後,毅然決定休養一段時期。我對這種人的勇氣與眼光極是佩服。休養的重點不在「休」,而在「養」。

你問我「這家公司還可不可以待」,我無法回答這樣的問題。這和問我「先服兵役好還是先考研究所好」一樣,不可能獲得我的具體答案。對我而言,這樣的問題資訊過少,責任過大。我只能夠鼓勵你,並為你分析一下當前的狀況。希望這對你有一點點幫助。

--- the end


From: "Lawrence Ho" <lawrence@inforian.com>

有關電腦公司在短視與遠景中掙扎,在Project進度與程式員培養兩者中奮戰的故事,我看了深有所感。

資迅人以前掙扎過,其實現在也是。我相信就算到微軟可能也都有,只是比例上越來越照它「應該」的樣子出現了。

一個公司創業/ 一個產品創始的時候,95% 趕工 5% 思考。後來等到人多了,資源夠了,也許就有機會朝向 30% 趕工70% 培養和思考來努力了吧。(也許比例每人的看法不同也說不定,不過也許我是總經理心態,learning by doing還是很重要的,只培養不磨練,會跟飼料雞一樣,還是不行的。誠所謂,人不趕工枉少年啊. :-)