靈感與文件

我自己以前很喜歡寫程式,現在不年輕了就較懶惰,所以大家猜的出來這故事發生在很久很久以前... 一顆1MB的RAM要一千塊美金,而且要排隊一個月才買得到的時代 。

我當初為了一家forwarder/broker(海陸運)公司寫一些應用程式。幫他們架網路,再完成了會計系統、出入口系統等業務的東西,終於要幫Sales的人們開發他們的系統。花了一些時間,把基本需求完成,然後很雞婆的幫他們作了一個小工具。結果,那個小工具成為Sales的人們最喜歡用的功能。

為什麼說雞婆呢?因為這沒有在他們本來的需求裡,而是在某幾次吃飯或咖啡場合聊他們做事的方法,我自己去作一些prototype開發出來的。其實那個功能需要跨幾個資料庫撈一些資料再整合,只是我們當初所使用的資料庫系統會鎖住資料庫,沒辦法邊看邊編輯資料。其實是為了安全的考量,資料庫鎖住是很合理的事。可是為了這限制,我一直沒有辦法完成我想要的功能。最後,在某一次的嘗試中,動態跑到作業系統裡把lock挪掉,做完工作,再把lock搬回,竟然就完成了所期待的工作。雖然有些危險,但是我非常有把握在這些功能的使用範圍內,應該是不會發生任何問題。

事實上,這工具他們之後用了很久,而且沒有發生任何意外。直到有一天我接到越洋電話...

時間已過幾年,我也搬來台灣。原來他們要upgrade系統,再重建構系統,所以希望我說明當初到底用了什麼撇步完成那功能。 坦白說,我連什麼功能都忘了,哪裡記得什麼妙法?

不知道各位有類似的經驗嗎?很多時候拼命coding,不是trial-and-error,就是靠著一些靈感完成工作。然後,沒記下來,過幾天就忘光光了。 明明知道要加註解,可是怎麼可以停下這麼順的『手感』,就繼續code下去了。更不用講到文件了...

留言

  1. 我倒是想到另一件與文件無關的事。以前念高中的時候,是在丙組,後來班上很多的同學都成了醫生,懸壺濟世的幫助了很多人。我有時候在想,自己幫助了誰?一個軟體工程師幫助了誰?我想劉老師的經驗給了答案。其實一個好的工程做出好的功能可以幫助很多人,即便當初只是舉手之勞順道做做。

    在一個中型的軟體組織(約20人)有時很難去評斷每一個人的績效。主管常常會覺得為什麼系統開發的這麼慢?其實常常是被某一些雜事或技術絆住了,動彈不得。這時候如果有人跳出來寫一個小程式做自動化,整個組織的效率可以快上好幾倍。我覺得開發這類工具的人真的值得好好的犒賞一番。

    ps. 好像離題了...

    回覆刪除
  2. 事實上,任何行業在我的觀念裡都可幫助許多人,軟體工程師的功能也不比一位醫生差,因為軟體可以說無所不在,甚至影響人類的文化與文明,試想Microsoft那些軟體工程師所創造出來的軟體系統,其影響何其巨大,其他組織亦然,只不過台灣的環境似乎無視軟體的影響力,因此無法讓軟體工程師盡量發揮罷了,薛教授也不必洩氣,實非不為也。

    如果說,主管會常常覺得開發緩慢,事實上並不足為怪,所以最近有一些新的軟體發展方法與技術問世,如Agile Method或MDA等等,或許多少可以解決這種問題。

    劉教授當時發展的工具,對他服務的公司看樣子有相當用處,只不過未依軟工流程發展,以致多年後不易更新,有點可惜,如果要用CMMI的標準來看,可能屬level 1,也許當時只想很快解決身邊的小事,以致於‧‧‧(非常抱歉有點批評)。

    回覆刪除
  3. 謝謝黃教授的回應,我完全贊成兩位教授的看法,軟體工程師真可以以所做的為榮。感謝黃教授不吝指教,本人當初的行為的確是Level 1行為,這也是希望大家能分享看看如何把一些『靈感』正確的留下來。我一直都以programmer為榮,可是又知道SE的重要。假如是開發本來所規劃及設計好的東西,看來都可以乖乖的做一些SE規範中的行為,可是講到臨時加進來的東西,或者是自以為是的增加的東西,時常就沒有辦法乖乖的來做事。所以時間一過,『靈感』一起不見了,可是又沒有文件留下來,實在是矛盾…

    回覆刪除

張貼留言

這個網誌中的熱門文章

CMMI是什麼?

CRC cards - 非正規物件導向發展技術

課程改進