好久沒有寫文章了,最近有空回來瞎扯些怨念。正文開始:
我們的環境:皆因微軟而起,又因微軟而終。
第一章:.Net篇。
我們以一個寓言開頭: 莊周家境貧寒,於是向監河侯借糧。監河侯說:“行,我即將收取封邑之地的稅金,打算借給你三百金,好嗎?”莊周聽了臉色驟變忿忿地說:“我昨天來的時候,有誰在半道上呼喚我。我回頭看看路上車輪輾過的小坑窪處,有條鲫魚在那裡掙扎。我問它:‘鲫魚,你干什麼呢?’鲫魚回答:‘我是東海水族中的一員。你也許能用斗升之水使我活下來吧。’我對它說:‘行啊,我將到南方去游說吳王越王,引發西江之水來迎候你,可以嗎?’鲫魚變了臉色生氣地說:‘我失去我經常生活的環境,沒有安身之處。眼下我能得到斗升那樣多的水就活下來了,而你竟說出這樣的話,還不如早點到干魚店裡找我!’”
.Net發布有7年了,但是微軟有一點做得非常非常不好:在不斷發布新版本Framework的時候,卻沒有去實現.Net的大規模普及。套用微軟官方的術語:您可以選擇我們的Vista系統,已經內置了.Netframework3.0。Windows7則內置了3.51。如果你去相信這些與現實世界不著邊的鬼話,那麼你就是上面故事中的那條魚。現實世界是Vista的裝機率很不樂觀,而裝機量最大的XP則根本就沒有內置任何版本的.Net。2010年之前(也就是監河侯收稅之前),你仍然會面臨很多的XP客戶。
所以,至今仍然有一個最根本的問題擺在我們這些.NET程序員面前:客戶裝了.NetFramewok沒有?如果沒有裝,你的程序寫得再好再漂亮都是徒勞。你怎麼去讓他裝?怎麼和他解釋這個必要性?如果他不願意怎麼辦?能不能實現自動化安裝?從前我在一些朋友的博客裡也時常留言有這個觀點,無外乎歸納出這麼一種解決辦法:
在項目發布中把.Net集成封裝進去,讓它在客戶那裡實現自動安裝。
這種做法固然是可取並且是必須的,但是存在兩個缺陷:
面對客戶,你不能以程序員的觀念去和他們談問題,他之所以找你做程序,是因為你是程序員,而他不是
所以,“可靠性”、“易於開發”、“易於移植”、“穩定性好”等等這些字眼,對客戶來說,全是扯蛋,他們最關心的就是一點:“方便使用”。
我的解決方案,談不上能夠本質上得到解決,只能說是3個建議,本著上面提到的幾點:
如果你的程序是針對性的面向某些客戶群體,那麼可以使用3.0和3.5,但是一定要准備好各種各樣的台詞,以花言巧語、誘騙、欺詐、甚至是威脅來宣揚.Net的必要性(對於公司企業客戶,他們是可以接受的),因為你要時刻警惕來自Java、PHP、WIN32等競爭對手公司的商業性貶損。要怪就怪微軟把這種本來是他們該做的事情丟在我們頭上。
“ASP好還是JSP好,JSP好還是ASP.NET好,ASP.NET好還是PHP好,.Net好還是Java好……”,這樣的月經話題時常出現在各大程序員社區,並且已經被視位弱智議題。但是,面對現實情況,你必須有能力向客戶解釋清楚:為什麼要用.Net開發,它的好處在哪裡,為什麼別人用Java開發而你不用,為什麼別人用VB6,VC6而你不用,為什麼別人用PHP而你不用……,以客戶能夠理解的方式,以有利於客戶的觀點來闡述兼容性、穩定性、版本支持、易於二次開發等問題,而不要去談真泛型和假泛型、單一繼承和多重繼承、字符串操作效率等等客戶不關心的東西。