這個系列有兩篇文章,這是第一部分。
明天的軟件會是什么樣?它們將會有四大要素:互聯(lián)網(wǎng),開源,可移動設(shè)備和Web2.0。每個要素的是非都存在爭議,但作為整體,它們塑造了未來的成功的應(yīng)用軟件的基因藍(lán)圖--從現(xiàn)在開始。
最近我很關(guān)注進(jìn)化和全球變暖,但是今天我們要探索這些宏大的事件預(yù)示著什么:突變。我們原始的軟件領(lǐng)域的大人物(leviathans)正忙著勾畫他們的下一代解決方案。但是雖然到目前為止規(guī)模是很有利的因素,四個主要的事件已經(jīng)引發(fā)一連串不可逆轉(zhuǎn)的事件。在新的環(huán)境中,靈活性將再次被重視,而規(guī)模將成為劣勢。實際上,良善之人的將繼承的世界又多了一個缺陷(the meek have just gotten another crack at inheriting the earth.這一句很難譯,原文來自于圣經(jīng)“Blessed are the meek: for they shall inherit the earth”,被作者用在此我覺得純屬拽文)。
互聯(lián)網(wǎng)是一個釋放無限可能的彗星撞擊;開源是一股清新空氣;移動設(shè)備開創(chuàng)了從桌面電腦的遷徙;Web2.0是的所有一切更加人性。我們可以辨析它們的價值--互聯(lián)網(wǎng)是個巨變,而Web2.0更像是天氣變化--但作為一個整體,它們將塑造未來的成功的應(yīng)用軟件的基因藍(lán)圖,從現(xiàn)在開始。
互聯(lián)網(wǎng)
互聯(lián)網(wǎng)融入我們的日常生活已經(jīng)到了怎么樣的程度?曾經(jīng)我的親戚們問我--一個“玩電腦的人”(computer guy)--怎樣給他們的微軟word文檔排版, 現(xiàn)在他們在線購買電腦并連入寬帶網(wǎng)。我曾經(jīng)很有前途的家庭電腦技術(shù)支持工作現(xiàn)在正式的被廢除了。
每個人都知道互聯(lián)網(wǎng)的優(yōu)點,甚至可以糾正溢美之詞。結(jié)合上述的寬帶連接,互聯(lián)網(wǎng)達(dá)到了這樣一種狀況:無處不在,可靠,更重要的是,被視為理所當(dāng)然。建立一個連接所有家庭的穩(wěn)定的電網(wǎng)系統(tǒng)需要很多年,讓扳動電燈開關(guān)的新鮮感消失需要更多年頭。終于,當(dāng)墻上的電源很可靠時,我們開始擁有很酷的東西,比如說收音機和電視。最后出現(xiàn)的是那些不可缺少的電冰箱,吸塵器,洗衣機等日常電器。
互聯(lián)網(wǎng)已經(jīng)建立起來了,人們也早就經(jīng)歷過網(wǎng)站所帶來的新鮮感,我們現(xiàn)在有iTunes(蘋果在線音樂商店)和YouTube(在線視頻網(wǎng)站)。現(xiàn)在是產(chǎn)生真正重要的東西的時候了。我們需要多等一會才知道一個互聯(lián)網(wǎng)驅(qū)動的吸塵器是什么樣的,或者它是怎樣運行的,但我們知道它跟互聯(lián)網(wǎng)是密不可分的。
保護(hù)樹木,在線購物
除了每季度推進(jìn)我們辦公室的大量的微軟系列軟件包,我記不得我上一次購買的盒裝軟件是什么。同樣,自從我擁有了iPod,我的CD都變得滿是灰塵,并且我上次購買CD的那家店已經(jīng)關(guān)門了。你想不到的是,我的軟件公司從來不用考慮包裝的事,至少是那種需要木材的紙質(zhì)包裝。
一切都是在線。如果明天網(wǎng)絡(luò)崩潰了并且故障持續(xù)了一個月,或者長到足夠使人們重新認(rèn)識到物理媒介的重要性,我們很可能破產(chǎn)。網(wǎng)絡(luò)崩潰對譯言YEEYAN也不一定有利。 實際上,我們的競爭對手所要做的就是摧毀網(wǎng)絡(luò)。
也就是說,曾經(jīng)只有網(wǎng)絡(luò)應(yīng)用軟件才把它們事業(yè)存活的賭注押在互聯(lián)網(wǎng)上,但是,現(xiàn)在這種風(fēng)險只比把賭注押在電網(wǎng)上高一點點。那些曾經(jīng)依靠物理媒介(出版物及軟件公司)或是現(xiàn)實和網(wǎng)絡(luò)都涉及的實體,都正在轉(zhuǎn)向純粹的在線領(lǐng)域。這對那些想要獲得幾百萬美元印刷機投資的報紙來說是個困難的驟變。但如果你只是寫日志,編軟件,做醫(yī)學(xué)筆錄,制作音樂或?qū)а蓦娪埃敲茨阒恍枰粋€東西去運送你的產(chǎn)品:一根寬帶。
無處不在,可靠并且易用?,F(xiàn)在我們需要互聯(lián)網(wǎng)哲學(xué)。
開源
提到開源,第一個浮現(xiàn)在腦中就是Linux,公共的代碼和年輕的理想主義者。軟件巨頭的基層競爭者是不可抵擋的;從知識產(chǎn)權(quán)的外衣中剝?nèi)ゲ环匀坏姆▌t的確很大膽;誰會不喜歡年輕的理想主義者呢?但是盡管開源哲學(xué)已經(jīng)做了很多有意義的工作,但它還沒完成它真正的內(nèi)在需求。的確,一個年輕的乖戾之人沒有善心,一個年老的理想主義者沒有頭腦。給開源代碼一個合法手段是很好的,不過更重要的是把開源理念應(yīng)用到數(shù)據(jù)上。
事實上,我只想說(如果有機會的話)我更希望數(shù)據(jù)能夠被公開而不是代碼。代碼可以,經(jīng)常也應(yīng)該,被一次又一次的重寫,重構(gòu),但是只有合適的數(shù)據(jù)才能使系統(tǒng)運轉(zhuǎn)。當(dāng)我們,以及我們的計算設(shè)備,互相聯(lián)系的越來越緊密,我的日程安排軟件的代碼是開源還是的私有的變得越來越不重要;使用微軟的或是Apache的互聯(lián)網(wǎng)服務(wù)器,由.NET(微軟最新的開發(fā)平臺)或X.org(提供Xwindow系統(tǒng)的開源應(yīng)用軟件,是freedesktop.org社區(qū)的一部分,他們最著名的桌面系統(tǒng)是Xdesktops,GNOME和KDE)的界面進(jìn)行顯示。真正重要的是我的日程數(shù)據(jù)是不是符合(譬如說)iCalendar 格式。當(dāng)數(shù)據(jù)的重要性明確以后,應(yīng)用軟件的來源,是開源的還是私有的,都無關(guān)緊要了。
一切都是數(shù)據(jù)
Jeff Atwood最近指責(zé)Joel Spolsky失去了吸引力(jump the shark,詳細(xì))。盡管在那個帖子里有一些可疑的地方,但實際上Joel提到了很多文章外的東西--其中有一點跟我產(chǎn)生了共鳴,那就是Excel可以讀寫Lotus123數(shù)據(jù)文件是Excel成功的關(guān)鍵(tipping point)。(這里陳述一下背景,當(dāng)微軟開發(fā)出Excel是, Lotus123幾乎占據(jù)電子表格軟件的全部市場,但Excel成功的打敗Lotus123占據(jù)市場,其中主要一條就是兼容Lotus123數(shù)據(jù)文件)
最直接的目標(biāo)是移除障礙,這些都阻礙你從競爭對手那贏得市場份額的。但實際的意義更大:如果所有的電子表格軟件都可以讀寫任何其他同類軟件的數(shù)據(jù)文件,那么我們就可以通過它們的實際表現(xiàn)來評價它們,而不是它們的用戶群有多大。公司必須不斷的提高它們的產(chǎn)品,而不是一直吃老本,設(shè)置種種障礙。你可以選擇吃什么,去哪里購物,開什么樣的車。難道我們不應(yīng)該更靈活的選擇我們的電子表格軟件,日程軟件和視頻會議么?你買的軟件代碼并不是你的--僅僅是借給你使用。但你的數(shù)據(jù)完全是你的;由你自己創(chuàng)建,編輯和存檔。
市場,市場
開源獲得了很多優(yōu)秀程序員的關(guān)注和時間投入;也因此向世界展示了什么是可以完成的。但開源運動需要很多市場營銷人員的關(guān)注和時間,需要營銷人員去解釋這個運動的重要意義。典型的工程方式把營銷作為事后的輔助。但如果把投入寫操作系統(tǒng)的精力用來推行數(shù)據(jù)標(biāo)準(zhǔn),那些理想主義者應(yīng)該會離他們的理想更接近。
說實話,盡管過分樂觀的非商業(yè)的開源模式僅僅是過去。今天那些最顯著的開源項目--Linux(操作系統(tǒng)),Apache(服務(wù)器)和Mozilla(瀏覽器)--背后都有巨頭的支持(IBM和Google)。你認(rèn)為Firefox(Monzilla瀏覽器)營銷得這么好僅僅是偶然么?激勵支持者關(guān)注結(jié)果需要些比夢想更切實的東西。需要一個新的催化劑。
移動設(shè)備
移動設(shè)備的銷售超過個人電腦很久后才得到人們的關(guān)注。結(jié)果是什么?個人電腦是一個由復(fù)雜軟件驅(qū)動的通用設(shè)備,差不多可以做任何事情, 然而移動設(shè)備是用來運行簡單軟件--結(jié)合一個明確的配置(form factor),可以很好的完成一些功能。
當(dāng)前的臺式機,甚至筆記本,與類固醇過度的運動員更相像,而不是一個整潔的計算設(shè)備。我上文提過的我親戚剛買的電腦,有250G的硬盤。那得需要很多小孩子的照片才能把那塊硬盤填滿。實際上,如果每星期存入100張100k的相片,孩子們要到480歲才能使奶奶的硬盤存滿。
綠色計算
移動設(shè)備的計算能力并不是很強。它們必須經(jīng)過嚴(yán)格的測試變得輕巧,小到足夠放到你的口袋,小到顯得造型別致。的確,單一功能的移動設(shè)備像iPod也擁有大硬盤--但程序員還想要無線網(wǎng)絡(luò)連接,更多的小工具,以及開發(fā)平臺。這跟早期的桌面計算很相似,當(dāng)時人們使用的內(nèi)存最大才640k。因為運行在臺式機和筆記本上的數(shù)據(jù)量太大了,它們不能運行在移動設(shè)備上。
移動設(shè)備所要做的就是僅僅處理需要的數(shù)據(jù)。也就是說,你不需要全部的數(shù)據(jù)庫(dataset),如果你有獨特的標(biāo)識,每一部分都可以正確的運行。這不僅使數(shù)據(jù)更便于移動,也可以使改進(jìn)和限定數(shù)據(jù)交互更容易。
醒來并感受數(shù)據(jù)
回到iCalendar的例子,我們可以想象一個圓形的頭上有兩個鈴的支持WiMax無線寬帶的報時移動設(shè)備--我們叫它iAlarmClock。雖然完整的說明書規(guī)定了ICalendar對所有的日期有關(guān)的事件都管用,我們最關(guān)心的只是:鬧鈴什么時候會響? 一個合適的,格式良好的iCalendar條目可能包括4頁UML那么多的信息。我們的IAlarmClock僅需要第四頁的信息--鬧鐘零件屬性。更好的是,如果我使用手動控制--后邊的圓形旋鈕--來調(diào)整鬧鐘時間,那么iCalendar源文件的條目,以及任何依賴該源文件的設(shè)備,都應(yīng)該自動更新那段數(shù)據(jù)。這樣的話,不管我在哪,我所有的iAlarmClock都會允許我睡懶覺。
我們程序員應(yīng)該習(xí)慣使用一部分而不是全部數(shù)據(jù)。有時候沒有所有的數(shù)據(jù)也沒有關(guān)系,我們只需要于我們手頭工作相關(guān)的那部分。我們的目標(biāo)不是完整數(shù)據(jù),而是有用的數(shù)據(jù)--足夠運行鬧鐘,電冰箱,吸塵器和洗衣機這樣的普通機器就可以了。