??????程序是對數(shù)據(jù)流的處理,從這個角度來說,算法是程序的靈魂,特別是在搜索,語音識別等領(lǐng)域。但隨著程序規(guī)模越寫越大,我們發(fā)現(xiàn)我們的程序越來越難維護,于是出現(xiàn)了改進的編程語言,設(shè)計模式,軟件工程等從技術(shù)和管理角度改進的方案。我們照做了,如果做的好,我們看會到我們的程序越來越健壯,程序幾乎不需要增加更多的成本就可以一份一份的拷貝賣給更多的客戶,于是一幅美好的藍(lán)圖展現(xiàn)在我們面前。當(dāng)然這只是一個假設(shè),實際實施過程中因為各種各樣的原因,甚至無法將過程完成。 一個針對特定需求開發(fā)的應(yīng)用軟件開發(fā)完成后,很多情況下確實能滿足絕大多數(shù)客戶的需求。根據(jù)80-20原則,我們可以根據(jù)實際情況考慮是否一定要剩下20%的客戶,畢竟我們要的是實現(xiàn)利益最大化。
??????然而,在我這幾年在平臺項目的開發(fā)過程中,我發(fā)現(xiàn),平臺軟件和應(yīng)用軟件有很大的不同。首先,平臺軟件是針對特定領(lǐng)域而不是針對特定應(yīng)用開發(fā)的,這就決定了你開發(fā)的軟件不能是一套單純的軟件,而是一些軟件開發(fā)的基礎(chǔ)設(shè)施,有了這些設(shè)施,我們可以方便的開發(fā)出這一領(lǐng)域,甚至交叉領(lǐng)域的應(yīng)用軟件,這要求你的基礎(chǔ)設(shè)施要是細(xì)粒度的,相對通用的。為了開發(fā)方便,在開發(fā)接口上,要很好的體現(xiàn)出對象邏輯結(jié)構(gòu),層次結(jié)構(gòu)。其次,平臺軟件是應(yīng)用模糊的,同樣的一個輸入,根據(jù)應(yīng)用的不同,產(chǎn)生的輸出是迥異的,這是我們無法完全預(yù)測的。你的東西要是可以訂制的,可靈活配置的,對于一個固定輸入輸出的東西還能叫一個平臺嗎。配置太麻煩也不行,不能動輒要求開發(fā)人員來訂制。不能要求二次開發(fā)人員對你的東西要有深的了解,他只關(guān)心的是自己業(yè)務(wù)。比較好的做法是只有必要的時候才打開一個缺口。在STL中,我們就能獲得很多啟示,每個concept,iterator,container,algorithm,沒有那個東西是死的,雖然是很簡單的幾個東西,組織起來的威力讓人嘆為觀止.而在其中可以加入自己的東西卻又能很好的融合.?
?????????從這兩個角度來說,平臺軟件的團隊里必須有精通該領(lǐng)域的人,在他的眼里,只要是該領(lǐng)域的需求(當(dāng)然是理論上可以解決的問題),都能迅速轉(zhuǎn)化為一個可實施的模型.他胸中有"大略",所以能進行高層的抽象,作的東西才有普適性.同時,東西要轉(zhuǎn)化成解決方案,靠的卻是開發(fā)人員.開發(fā)人員能理解模型的深層意思嗎,我看很多情況下未必;即便開發(fā)人員理解了,他能把它轉(zhuǎn)化成良好的軟硬件模型嗎?同樣是困難重重!根據(jù)我這幾年的看到的東西,我認(rèn)為我們沒有那個環(huán)節(jié)做好了,可能這也是國內(nèi)的大氣候,大家都很浮躁,沒有人從深層次思考這些問題,因為大家都在向"前"看.雖然實際可能就看見前面三尺.?
?????????那些自以為很強的人或公司,其實未必有能力實現(xiàn)自己的目標(biāo),很多情況下是高估了自己的實力(包括技術(shù)水平,企業(yè)文化,創(chuàng)超力等)。雖然能做好很多項目,但在開始平臺開發(fā)項目之前一定要三思而行。