Nov 9, 2010

軟體

軟體公司注重的不是科學, 是工程。

如何利用流程的最佳化與軟體架構, 在最短的時間內做出bug最少的產品,

並且減少未來維護的成本, 利用行銷技術銷售到全世界, 才是公司要注重的事情。



微軟的技術一直都不是最新的, 這也沒什麼好質疑的, 也不算什麼錯誤,

最新的技術不表示穩定, 採取保守作法以換取穩定, 是很合理的策略。


有一個很老的故事,

在一個房間裡發生火災, 數學家被火災警鈴驚醒, 動腦想了一想,

「用水就能解決這個問題了」, 然後他想完了, 很開心, 就回去睡覺了。

隔壁房間的科學家也被驚醒, 他衝過來搖醒數學家, 數學家告訴他用水就能解決,

然後科學家計算出如何用最少的水滅掉火災, 花了一個小時,

中間不斷進行修正, 最後順利把火給滅了, 而且床是乾的, 他回頭繼續睡。

再隔壁房的工程師的房間也起火了, 工程師也去問數學家要怎麼滅火,

然後他在三分鐘內, 用幾乎把房間淹沒的水把火給滅了,


然後收拾一下, 把能帶的東西都塞進濕掉的包包, 就跑到別的房間去睡了。


數學家做的一向是基礎工作, 能不能實作並不在他們的考量中,

科學家利用基礎, 研發出可以解決問題的最佳解,

而對於工程師, 我們相信他一定能解決問題。


軟體的好或不好, 對消費者而言看不太出來, 重點是好不好用,

消費者不關心背後的科學基礎是什麼。

我要連PTT, 那我用來連PTT的軟體只要能連上去, 基本上這個軟體就合格了,

我到去年都還是用Netterm 3.41, 後來是因為pcman可以拷貝彩色字串才換....

也許某個連BBS的軟體佔用的頻寬是最少使用量的兩倍, so what,

不要讓使用者知道就好了啊。



回到原問題, 微軟在很久以前就有研究院, 這並不表示微軟會拿研發成果應用在產品上,

第一, 實用性高不高?

在Office裡內建情書產生器有沒有搞頭?

在MSN裡內建地圖引擎有沒有搞頭?

第二, 實作的成本高不高?

做下去會不會托延到產品上市日期?

後續的bug會不會很難維護?

軟體的體積受影響的程度如何?

第三, 和合作廠商的合作關係?

什麼東西都給你做出來了是要怎樣, 別人還要不要活啊?



所以有些產品的功能是屬於夠用就好,

用excel的繪圖跟origin的繪圖來當例子, excel沒必要實作那麼多種繪圖模式,

有需要的人自然會去買別的軟體來用。方程式編輯器跟MathType也是一例.

反正別人做, 自己做, 都是based on windows.


Office系列基本上是有需求才有供給, 因為客戶需要, 所以我們提供這個功能,

而不是我們提供這個功能, 再去推銷給客戶。

是因為你要交報告你才去用Word, 而不是因為你用了Word, 老師才要你交報告。

(如果你的報告是「Word使用心得」....那另當別論....)

微軟沒必要在Word上套用最新科技, 客戶要客機, 沒必要去做一艘太空船。


遊戲剛好相反, 是先有遊戲才有玩家, 很少有遊戲是為玩家的需求或配備量身訂做的,


所以最新的3D引擎最快的render技術都可以用在遊戲上,

跑不動就不給你玩.


最好用的軟體, 最好賣的軟體, 應用最新科學理論的軟體,

為什麼會把這三種東西扯在一起看呢?


每一家公司都要注重電腦科學。懂了原理之後, 在最短時間內實作出來並且

讓客戶願意掏錢來買的那家公司, 就是成功。

不懂電腦科學, 只能土法鍊鋼拉長研發期, 還不一定做的出來,

不懂行銷你賣不出去, 只懂技術不適合開公司。


===============================================

電腦科學的價值在於發現未知的可能,

電腦工程的價值在於實現已知的可能.


基本上, 你買的到的軟體都是透過電腦工程來實現的.

DB2是以電腦工程實做出來的, 裡面的Data Mining功能是基於電腦科學的理論實做.


研究電腦科學的人只提出一個模型一個理論, 或是一支可以驗證其想法的小程式,

怎麼把這些模型應用在解決商業界的問題? 是MIS的事情, not CS.

怎麼把這些模型實作出來並上市? 是苦命工程師的事, not CS.

修改原始碼, 讓程式跑更快, 也不是CS的事。

在32bit的年代去思考64bit或128bit能帶來什麼樣的好處, 是CS.


研究在不考量成本時如何讓無線網路速度更快、傳輸距離更遠, 是CS.

新的加密方法, 癌症預測的模型, 是CS.

No comments: