“約耳談軟體”節錄喜歡段落 III

1.
這些公司出色的創辦人應該都能適應新世界,畢竟他們都是有才能的電腦科學家,什麼東西都學得會。不過他們所建立的公司是變不了的,因為公司用規則手冊取替了才能,而規則手冊無法適應新時代。
這個故事的教訓是?小心方法論。

2.
這是一個明確的情報,顯示架構太空人正在攻擊你:數不盡的誇大言辭;史詩般理想化的豪言壯語;誇大;完全缺乏真實感。可是大家就是吃這套!商業報聞報導真是瘋了。

3.
狗。沒錯,彼得。Fargo的食物充足,連狗也一樣。

4.
有時候當你下載了某個軟體,卻發現它爛得無法置信,或是費盡工夫才能完成該軟體應該很簡單就能做好的事。這時候原因很可能就是開發人員並沒有用過該軟體。

5.
任何人只要有注意過去三十年間電腦程式設計的進展,就會知道重用是所有現代電腦系統的聖杯。

事實上最近的網路熱潮中,一堆裝內行的企業作家說未來的公司會完全虛擬化,公司變成只有幾個時髦的傢伙待在起居室裡喝著白葡萄酒,所有事情都外包出去做。
這些換氣過度的「夢想家」並沒有注意到市場機制是為所增加的價值而付錢的。一個客廳加上兩個雅痞,向A公司買一套電子商務引擎,拿B公司做的貨來賣,再找
C公司處理庫存和送貨,客戶服務則交給D公司,這種作法實在沒有增加什麼價值。事實上如果你曾經把很關鍵的業務拿去外包,就會瞭解外包其實是個地獄。不能
直接控制客戶服務,客服就會爛到不像話,爛到像某人在網誌上寫的,想在電話公司找個人(任何人都好)去做些最最簡單的事都辦不到。如果物流外包出去,你的
物流包商或許對即時送達會有不同的認知,而你的客戶就會不太高興,可是你一點辦法都沒有,因為重新找一個物流包商要花三個月。何況事實上你根本不會知道客戶不高興,因為他們找不到你,因為你設立了一個外包的客戶服務中心,宗旨就是不要
自己聽到客戶的聲音。至於你買的電子商務引擎?絕對不可能像Amazon用obidos做的那麼有彈性,obidos可是人家自己寫的(否則Amazon
跟買那種東西的競爭者相比就沒有優勢了)。另外也沒有現成的web伺服器在速度上比得過Google自己親手製作並最佳化的伺服器。

很不幸的這個原則似乎與「重用程式碼好,重新發明輪子壞」的想法直接衝突。

我能給的最好建議是:

如果是核心的事業功能,不管是什麼都要自己來做。

6.

最後是.NET所附的類別程式庫真的很好。事實上由資料存取到web開發再到GUI開發,每樣東西都重新設計過,所以由上到下到
難以置信的協調。舉例來說,當你檢視原本的Win32
API,就會驚訝由函數呼叫取得字串竟然有那麼多種方法。每隔兩年他們就會改變主意認為另一種方法比較好。.NET把這些問題全部清掉了。我很高興現在有
一個ASP.NET日曆構件(widget)可以用,它會產生由月曆選一個日期的HTML碼,而且可以放心那個東西傳回的日期類別(我相信是
System.DateTime)和SQL
Server類別所用的日期類別一樣。你大概不會相信,以前我們浪費了多少時間去針對SQL敘述調整日期格式,或是把COleDateTimes轉成其他
日期時間格式。再來終於出現了!一個到處都可以用的字串類別!我上星期才在寫一段ATL程式在BSTR、OLECHAR、char
*、LPSTR還有其他亂七八糟的型別間轉來轉去。真是大解脫啊。

好吧,我承認,.NET違反了絕不要從頭重寫 (http://www.joelonsoftware.com/articles/fog0000000069.html)的規則。微軟有兩個條件可以這樣做。首先他們有全世界最好的程式語言設計者,過去20年間軟體開發的生產力提升,有九成都是這個男人貢獻的。他是Anders Hejlsberg (http://windows.oreilly.com/news/hejlsberg_0800.html),賜予我們Turbo Pascal(謝謝你!)、Delphi(謝謝你!)、WFC(好嘗試!)和現在的.NET(把球打出場囉!)。其次是他們有本錢投入了無數工程師在這上面做三年,這期間他們的競爭力或多或少都會被延誤到。記住,微軟可以做並不表示你也能做。微軟創造他們自己的重力。正常的規則是對他們無效的。

註:這段文章給我的啟示是,去了解自己打算要用的工具的優缺點,不帶成見的去評估。

7.
Steve McConnell、Steve Maguire還有我都來自相同的小角落:一個在華盛頓州雷蒙撰寫客戶眾多的試算表應用程式的世界。因此我們對容易使用有很高的要求,同時要求問題的數目要少。

(註:Steve McConnell 就是 Code Complete 1/2 的作者)

8.

1. 大眾軟體- 使用者上千甚至數百萬人
– UI 要高於一般水平
– 在不同的機器、OS, browser會有不同問題

– open source: 在複製現有軟體會做得好很多
– 顧問軟體: crm, cms…
– web商業軟體: 像wordpress賣給yahoo的
2. 內部軟體- 開發速度要快
– 因為價值只適合一家公司,所以不能花太多錢,所以品質很不好
3. embedded software- 品質要求非常高(因為搭配硬體賣出去)
4. game- 比較像電影業而不是軟體業,有的會成功,有的不會成功
– 除了少數例外,否則一個遊戲只有一版的壽命
5. 用完即丟- 比如某一天你為了轉檔而寫的程式,以後不會再用到

Advertisements

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


%d bloggers like this: