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