2010年12月6日星期一

IDEA #330:揾笨方程式

最近,受到一個“機會”的驅使,檢討了一貫以來的想法,並似乎找到了我自己提出的問題(見http://soundpubby.blogspot.com/2010/02/idea-273detour.html)的答案。

在IT公司工作進入第五個年頭。產品依舊如五年前那樣的“不順眼”、“不順手”和“不順寫”,這些感覺有廣大客戶回饋支持,不容否認。問題是這個狀態是否必然?是否有改進的空間?其核心原因是什麼?

從前,我以為軟件生產是一項工程,只要標准化就可以做得又快又好,就如父親造電池一樣。所以我每次和老豆交待公司是如何造軟件的,他也覺得很奇怪,為何工業上是常識的,軟件業竟然不知道?最近看到的一篇文章,讓我重新思想這項假設。

文章說,軟件工程要處理的,是“離散系統(Descrete System)”,而建築業和工業處理的,是“連續系統(Continuous System)”。簡單說,前者需要滿足多個功能,後者只需滿足一個功能。

青馬大橋所有的零部件,都是為滿足“將汽車由這一邊運到那一邊”的目的而設;但軟件要滿足的,可能是三四百個需求(Requirement)。不難想像,更改軟件的一個部分,以滿足某個需求,隨時可令其他的需求得不到滿足。

例如,有的客戶希望上載壓縮檔到伺服器後檔案會自動解壓,但這又影響到希望以原始壓縮檔形式保存資料的客戶。如此這般的交互影響(Interdependency),遍地皆是。

由於交互影響太多,生產的不確定性和不可預測性高,所以軟件生產是一門藝術。左雕雕,右雕雕,刻好的一天之前,你不會知道完成品到底是是怎麼樣。

正如你不能預先准備“鬧交”的對白,不確定的東西是無法標准化的。邏輯上,能直接改善產品質素的方法,只有限制功能數量,以減少交互影響,進而降低不可預測性。功能少的系統,亦比較易掌握,減低下游支援的負擔。

某些新興軟件公司,如37Signals,便是使用“限制功能”的哲學生產。公司二十多人,但有三百多個客戶。我們公司90人,還支援不了幾百個客戶。

好了,既然有符合邏輯,看上來又容易做,又有人成功實行的生產方法,為什麼老板不做呢?除了不知道、“貪威水”等個人原因外,IT行業的固有運作方式,亦是一大因素。

根據個人經驗和訪問資深從業員結果所得,軟件工業是這樣運作的:

  1. 用多功能、價錢便宜、起貨快(起火快?)作招來。
  2. 制造一個問題很多的產品,高速推出市面。
  3. 在客戶沒有發現問題之前,偷偷修正問題。
  4. 多數情況下,沒有人發現的問題乾脆不改。
  5. 產品問題多,客戶多會購買維護計劃(Maintenance Plan)。
  6. 定期推出更新版本,只讓購買了維護計劃的客戶更新。
  7. 更新版本修正舊問題,但產生更多新問題。
  8. 重復以上步驟。
可見,IT是以“揾笨”和“Buy Time”的方法賺錢的。企圖改善產品質素,等於企圖打斷公司“米路”,有那位老板願意呢?

所以,在一次基督徒團契中,老板說他沒有不道德地從商。我不同意,因為整個經營模式本身就是不道德。只是這個不道德的行為讓同事有工作做罷了。

不道德的事,雖然制造了職位,但亦必有“報應”。所以公司每天都要救火、每星期開一次救火會,程序員忙個不停改正自己制造的問題,身心受創,多不能工作超過兩年...

不過話說回來,有這樣的顧客,就有這樣的公司。被別人“揾笨”,最笨的是“被揾”的那個人。不想變IT豬,我的建議是:
  • 盡可能不用IT解決你的問題。
  • 一定要用IT的話,用現成的產品,不要定制,以免跌下無底洞。
  • 用功能少的產品,改變你做事的方式去適應產品的限制。
又不過,當所有客戶都這樣想的話,IT公司的如意算盤也就打不下去,很多人也就沒工作做。所以,聖經說我們活在一個彎曲和荒謬的時代,實在沒錯!要思考的,是如何逃避參加不道德的游戲,make money by doing NO evil...

訂閱錄音室

沒有留言: