StackExchange.com上有一個(gè)貼子在評(píng)論著最近20年來(lái)被炒作過(guò)度的技術(shù),對(duì)于出現(xiàn)的結(jié)果,大多數(shù)贊同,也有一些不贊同。下面我從前15名挑了10個(gè)(Java的WORE我去掉了,TDD我也去掉了,因?yàn)槲矣X(jué)得他們應(yīng)該沒(méi)有炒作過(guò)度,而且都不錯(cuò)),按原貼的順序羅列如下:(后面的一些評(píng)論是我加的,歡迎大家討論)
Top 10 過(guò)度炒作的技術(shù)和概念
- Unified Modeling Language (UML) – UML是一個(gè)程序員交流想法的不錯(cuò)的工具,但是他離程序員真正需要的設(shè)計(jì)工具還差得很遠(yuǎn),比如:設(shè)計(jì)是否符合需求、架構(gòu)設(shè)計(jì)、數(shù)據(jù)流等等。只有為數(shù)不多的程序員使用這個(gè)工具交流想法,而沒(méi)有用在具體工作中。
- Sharepoint - 現(xiàn)在N多的公司都在用微軟的這個(gè)東西做公司內(nèi)部的Intranet。不過(guò)安裝和維護(hù)起來(lái),代價(jià)相當(dāng)?shù)拇蟆5瞧涫袌?chǎng)做的很成功,不對(duì)技術(shù)上來(lái)說(shuō)對(duì)技術(shù)人員來(lái)說(shuō),相當(dāng)?shù)孽磕_。Sharepoint的設(shè)計(jì)沒(méi)有認(rèn)真地分析過(guò)業(yè)務(wù)流程,僅僅是一個(gè)文檔存儲(chǔ)地。看上去我們似乎可以做任何的事,但是如果你要用其來(lái)管理你的項(xiàng)目和track你的項(xiàng)目問(wèn)題,你會(huì)發(fā)現(xiàn)其是無(wú)比的難用。
- eXtensible Mark-up Language (XML) – XML嘛,以前說(shuō)過(guò)很多了(XML1, XML2)我們用他來(lái)做和程序數(shù)據(jù)封裝,用來(lái)做配置文件,用來(lái)做網(wǎng)絡(luò)傳輸格式。我們的程序處理起XML來(lái),又慢,又不經(jīng)濟(jì),沒(méi)有工具,幾乎無(wú)法維護(hù)XML文件。XML用來(lái)做數(shù)據(jù)封包真是很不經(jīng)濟(jì),Yaml和JSON那個(gè)不比它簡(jiǎn)單?用XML來(lái)做程序配置文件不知道是誰(shuí)想出來(lái)的主意,相當(dāng)?shù)挠薮溃纯碪nix/Linux下的配置文件,簡(jiǎn)單易讀,相當(dāng)容易維護(hù)。真是高科技啊。
- SOAP, XML-RPC, WSDL 的 Web Services – 這個(gè)東西前幾年炒的很兇。所有人都相信,這是程序員的未來(lái)。可惜的,其中的復(fù)雜和不一致,相當(dāng)?shù)牧钊藧盒摹?a target="_blank" style="color: #2970a6; text-decoration: none; ">SOAP的那個(gè)S居然還是Simple!看來(lái),扯上XML的都不會(huì)是什么好的東東。不過(guò),個(gè)人認(rèn)為,CORBA比他更惡。
- CORBA - 作為一個(gè)比其更惡的更過(guò)度炒作的COM技術(shù)的Linux/Unix下的補(bǔ)充技術(shù),這個(gè)技術(shù)也好不到哪里去。相當(dāng)?shù)膹?fù)雜,從理論上開(kāi)始就是這樣了。這是一個(gè)沒(méi)有經(jīng)過(guò)實(shí)踐就搞出來(lái)的一個(gè)東西。然后開(kāi)始炒作。
- Cloud Computing – 這是一個(gè)靠炒作出現(xiàn)的東西。這個(gè)東西也就是說(shuō),我們可以使用不同的調(diào)備,比如電腦,平板電腦,手機(jī),移動(dòng)設(shè)備隨時(shí)隨地做想做的事。Google的Chrome筆記本的廣告展示了這項(xiàng)技術(shù),但是,把工作結(jié)果放在云端的人會(huì)有多少呢。更多的人更喜歡的是去使用那些自己可以控制的電腦或平臺(tái)。Google在這點(diǎn)上做的明顯不如Amazon,像Amazon EC2平臺(tái),你可以在世界上任何一個(gè)角落隨時(shí)隨地的去啟動(dòng)你那臺(tái)遠(yuǎn)程的系統(tǒng)。(更新(2011/1/29):解釋一下,關(guān)于云計(jì)算,在寫下這篇文章的時(shí)候我本來(lái)有點(diǎn)拿不定主意的,后來(lái)回顧了一下歷史,如COM啊,ActiveX啊,EJB啊,當(dāng)時(shí)感覺(jué)都是很強(qiáng)的東西,但是最終也只是被炒作的。云計(jì)算,我不知道未來(lái)怎么樣,從今天來(lái)看,這項(xiàng)技術(shù)在今天存在炒作的情況——中移動(dòng)云,阿里云,到處都是云,在云面前,神馬都是浮云了。)
- SOA – Service Oriented Architecture – 這是一個(gè)沒(méi)有人真正知道是什么玩意的概念。炒作了很多年,很多人都試圖去了解它,但最后的結(jié)果是打個(gè)哈欠,看別的東西去了。現(xiàn)在沒(méi)有人提了。中國(guó)一些銀行在IBM的鼓動(dòng)下搞了很多所謂的SOA應(yīng)用,結(jié)果是系統(tǒng)很復(fù)雜,當(dāng)然,也再離不開(kāi)IBM了。
- Software Industrial Process – 軟件開(kāi)發(fā)中有很多所謂的工業(yè)界的流程,用這些流程好像可以控制質(zhì)量。外包公司和中國(guó)的本土公司很喜歡這些東西,比如ISO和CMMi,這些流程不能說(shuō)不好,也有好的地方,尤其是對(duì)那些不會(huì)思考只要跟從的Worker來(lái)說(shuō)。這些工業(yè)界流程中炒作過(guò)度的是,那些所謂的使用這些流程可以預(yù)測(cè)項(xiàng)目周期,質(zhì)量控制,以前需求開(kāi)發(fā)和管理等東西。其讓流程上升到了一種神學(xué)的可預(yù)言的地步,同樣也上升到了政治的地步。因?yàn)椋@些流程中都必然會(huì)有SQA 的Audit的流程,還有統(tǒng)計(jì)和報(bào)告的流程,這些統(tǒng)統(tǒng)不是軟件開(kāi)發(fā)的流程,但是的確是相當(dāng)?shù)恼巍J褂眠@些工業(yè)屆標(biāo)準(zhǔn)流程的公司,通常都是一些創(chuàng)造性有問(wèn)題的公司。
- Agile Software Development – 敏捷開(kāi)發(fā)。首先,我承認(rèn)其中的很多實(shí)踐相當(dāng)有效,在理論上也不錯(cuò),還有很多不錯(cuò)方法的。不過(guò),還是有炒作的成分(下面的言論,我等著被罵)對(duì)我來(lái)說(shuō),在中國(guó),“敏捷開(kāi)發(fā)”的炒作簡(jiǎn)直就像是一個(gè)電視購(gòu)物,ThoughtWorks中國(guó)各種咨詢師們軟件開(kāi)發(fā)經(jīng)驗(yàn)其實(shí)并不豐富,準(zhǔn)確來(lái)說(shuō),他們有的是咨詢經(jīng)驗(yàn),而沒(méi)有具體項(xiàng)目實(shí)施經(jīng)驗(yàn)(有的咨詢師甚至都沒(méi)有寫過(guò)一行代碼就去學(xué)教人怎么編程和開(kāi)發(fā)軟件了),和他們溝通起來(lái)能夠感到他們對(duì)敏捷很亢奮,而且是唯敏捷主義,就差打出Once Process,One Agile的口號(hào)了,他們信仰敏捷流程的已經(jīng)接近宗教信仰,他們的精神世界很朝鮮。因?yàn)椋瑹o(wú)論你和他們的咨詢師談什么,他們只說(shuō)敏捷,從來(lái)不會(huì)分析一下,項(xiàng)目的特性是什么?開(kāi)發(fā)這個(gè)項(xiàng)目的人的風(fēng)格是什么?客戶的特性是什么?有沒(méi)有關(guān)心軟件的stakeholder們(如:程序員,測(cè)試人員,客戶,管理人員)是怎么想的?而XP和SCRUM也就成了Push工程師最強(qiáng)大的工具。流程這個(gè)東西,應(yīng)該是項(xiàng)目組自發(fā)出來(lái)的東西,而不是被 灌輸,被教條使用的東西。不同的團(tuán)隊(duì)、不同的項(xiàng)目、不同的人,不同的風(fēng)格就是不同的流程,只有去使用適合自己的流程才是最好的流程。打個(gè)比方,足球隊(duì)中,巴西隊(duì)玩的是個(gè)人藝術(shù)足球,德國(guó)隊(duì)玩的是整體和紀(jì)律性足球,意大利玩的是防守型足球,但是他們都有奪世界杯冠軍的實(shí)力,如果你硬要讓巴西隊(duì)去整德國(guó)隊(duì)或是意大利隊(duì)的風(fēng)格,那就悲劇了。很顯然,ThoughtWorks很像把全中國(guó)的軟件公司都整成Agile的,這注定了其在中國(guó)是杯具的,也只能爭(zhēng)取到那些不知所措的公司和項(xiàng)目,沒(méi)有合適的項(xiàng)目,也只有靠各種炒作(比如整一些大會(huì),搞一些宣傳)。他們總是覺(jué)得中國(guó)的用戶和程序員需要去用時(shí)間不停地教育,但是,他們從來(lái)沒(méi)有想想自己的原因 — 靠教育和灌輸是永遠(yuǎn)贏不了的。我給他們的個(gè)人建議是,不要以為世界就像你所想像的那樣,學(xué)會(huì)尊重程序員和項(xiàng)目還有很多非技術(shù)的東西,多聽(tīng)聽(tīng)程序員和客戶怎么說(shuō),多分析一下項(xiàng)目的特質(zhì),從實(shí)際情況出發(fā),而不是自己濤濤不絕地向大家灌輸自己的理論。
- Object-Oriented Programming (OOP) – 不多說(shuō)了,以前本站說(shuō)過(guò)了,所有的一切都在面向?qū)ο笫莻€(gè)騙局一文中。不過(guò)有一點(diǎn)我想告訴大家,面向?qū)ο蟮腄esign Pattern真是被濫用了,Design Pattern教你的是兩件事,1)怎么去化繁為簡(jiǎn),2)怎么能讓對(duì)象的耦合性降低。而不是一個(gè)公式讓你的套,但,更多的程序員則學(xué)會(huì)了“流行的設(shè)計(jì)模式編程”。
附:我不認(rèn)為過(guò)度炒作的技術(shù)
Write Once Run Anywhere - 這個(gè)有點(diǎn)讓我不解,不知道為什么會(huì)那么靠前。這是Java的口號(hào),我覺(jué)得Java在跨平臺(tái)方面還是成功的,沒(méi)有過(guò)度炒作啊。用虛擬機(jī)的確是做到了這一點(diǎn),對(duì)于那些需要有不同的硬件和操作系統(tǒng)平臺(tái)并不斷升級(jí)和更換它們的公司來(lái)說(shuō),這的確是個(gè)很不錯(cuò)的解決平臺(tái)依賴性的方案。我個(gè)感覺(jué)這個(gè)技術(shù)并沒(méi)有炒作過(guò)頭,至少在Java這邊是這樣的。與其說(shuō)這個(gè),還不如說(shuō)EJB,這才是炒作過(guò)度的技術(shù)。
Test Driven Design (TDD) – 從測(cè)試案例開(kāi)始寫程序這可能是很多程序員都不習(xí)慣的方法。其實(shí)這是一種比較好的編程方法,保證了代碼怎么改動(dòng)都不會(huì)break其它沒(méi)有改動(dòng)的代碼,代碼可以在一種持續(xù)集成中保證質(zhì)量。但是,我們需要知道TDD的一些副作用(在十條不錯(cuò)的編程觀點(diǎn)里也提到過(guò)TDD的弊端):1)TDD可能會(huì)讓程序員敷衍了事,以為test case 沒(méi)有錯(cuò)就正確了。2)TDD可能會(huì)讓你忽略了軟件設(shè)計(jì)和架構(gòu)以及程序的擴(kuò)展性和重用性。TDD只是一種方法,并不是程序的核心。當(dāng)然,TDD近幾年的炒作也有點(diǎn)過(guò)頭,已經(jīng)出現(xiàn)了“TDD是一種Design方法”等“神乎其技”的論調(diào),我對(duì)此表示質(zhì)疑中。