天天看點

那些炒作過度的技術和概念

StackExchange.com上有一個貼子在評論着最近20年來被炒作過度的技術,對于出現的結果,大多數贊同,也有一些不贊同。下面我從前15名挑了10個(Java的WORE我去掉了,TDD我也去掉了,因為我覺得他們應該沒有炒作過度,而且都不錯),按原貼的順序羅列如下:(後面的一些評論是我加的,歡迎大家讨論)

Top 10 過度炒作的技術和概念

  • Unified Modeling Language (UML) – UML是一個程式員交流想法的不錯的工具,但是他離程式員真正需要的設計工具還差得很遠,比如:設計是否符合需求、架構設計、資料流等等。隻有為數不多的程式員使用這個工具交流想法,而沒有用在具體工作中。
  • Sharepoint - 現在N多的公司都在用微軟的這個東西做公司内部的Intranet。不過安裝和維護起來,代價相當的大。但是其市場做的很成功,不對技術上來說對技術人員來說,相當的蹩腳。Sharepoint的設計沒有認真地分析過業務流程,僅僅是一個文檔存儲地。看上去我們似乎可以做任何的事,但是如果你要用其來管理你的項目和track你的項目問題,你會發現其是無比的難用。
  • eXtensible Mark-up Language (XML) –  XML嘛,以前說過很多了(XML1, XML2)我們用他來做和程式資料封裝,用來做配置檔案,用來做網絡傳輸格式。我們的程式處理起XML來,又慢,又不經濟,沒有工具,幾乎無法維護XML檔案。 XML用來做資料封包真是很不經濟,Yaml和JSON那個不比它簡單?用XML來做程式配置檔案不知道是誰想出來的主意,相當的愚蠢,看看 Unix/Linux下的配置檔案,簡單易讀,相當容易維護。真是高科技啊。
  • SOAP, XML-RPC, WSDL 的 Web Services – 這個東西前幾年炒的很兇。所有人都相信,這是程式員的未來。可惜的,其中的複雜和不一緻,相當的令人惡心。SOAP的那個S居然還是Simple!看來,扯上XML的都不會是什麼好的東東。不過,個人認為,CORBA比他更惡。
  • CORBA - 作為一個比其更惡的更過度炒作的COM技術的Linux/Unix下的補充技術,這個技術也好不到哪裡去。相當的複雜,從理論上開始就是這樣了。這是一個沒有經過實踐就搞出來的一個東西。然後開始炒作。
  • Cloud Computing – 這是一個靠炒作出現的東西。這個東西也就是說,我們可以使用不同的調備,比如電腦,平闆電腦,手機,移動裝置随時随地做想做的事。Google的 Chrome筆記本的廣告展示了這項技術,但是,把工作結果放在雲端的人會有多少呢。更多的人更喜歡的是去使用那些自己可以控制的電腦或平台。 Google在這點上做的明顯不如Amazon,像Amazon EC2平台,你可以在世界上任何一個角落随時随地的去啟動你那台遠端的系統。(更新(2011/1/29):解釋一下,關于雲計算,在寫下這篇文章的時候我本來有點拿不定主意的,後來回顧了一下曆史,如COM啊,ActiveX啊,EJB啊,當時感覺都是很強的東西,但是最終也隻是被炒作的。雲計算,我不知道未來怎麼樣,從今天來看,這項技術在今天存在炒作的情況——中移動雲,阿裡雲,到處都是雲,在雲面前,神馬都是浮雲了。)
  • SOA – Service Oriented Architecture – 這是一個沒有人真正知道是什麼玩意的概念。炒作了很多年,很多人都試圖去了解它,但最後的結果是打個哈欠,看别的東西去了。現在沒有人提了。中國一些銀行在IBM的鼓動下搞了很多所謂的SOA應用,結果是系統很複雜,當然,也再離不開IBM了。
  • Software Industrial Process – 軟體開發中有很多所謂的工業界的流程,用這些流程好像可以控制品質。外包公司和中國的本土公司很喜歡這些東西,比如ISO和CMMi,這些流程不能說不好,也有好的地方,尤其是對那些不會思考隻要跟從的Worker來說。這些工業界流程中炒作過度的是,那些所謂的使用這些流程可以預測項目周期,品質控制,以前需求開發和管理等東西。其讓流程上升到了一種神學的可預言的地步,同樣也上升到了政治的地步。因為,這些流程中都必然會有SQA 的Audit的流程,還有統計和報告的流程,這些統統不是軟體開發的流程,但是的确是相當的政治。使用這些工業屆标準流程的公司,通常都是一些創造性有問題的公司。
  • Agile Software Development – 靈活開發。首先,我承認其中的很多實踐相當有效,在理論上也不錯,還有很多不錯方法的。不過,還是有炒作的成分(下面的言論,我等着被罵)對我來說,在中國,“靈活開發”的炒作簡直就像是一個電視購物,ThoughtWorks中國各種咨詢師們軟體開發經驗其實并不豐富,準确來說,他們有的是咨詢經驗,而沒有具體項目實施經驗(有的咨詢師甚至都沒有寫過一行代碼就去學教人怎麼程式設計和開發軟體了),和他們溝通起來能夠感到他們對靈活很亢奮,而且是唯靈活主義,就差打出Once Process,One Agile的口号了,他們信仰靈活流程的已經接近宗教信仰,他們的精神世界很北韓。因為,無論你和他們的咨詢師談什麼,他們隻說靈活,從來不會分析一下,項目的特性是什麼?開發這個項目的人的風格是什麼?客戶的特性是什麼?有沒有關心軟體的stakeholder們(如:程式員,測試人員,客戶,管理人員)是怎麼想的?而XP和SCRUM也就成了Push工程師最強大的工具。流程這個東西,應該是項目組自發出來的東西,而不是被 灌輸,被教條使用的東西。不同的團隊、不同的項目、不同的人,不同的風格就是不同的流程,隻有去使用适合自己的流程才是最好的流程。打個比方,足球隊中,巴西隊玩的是個人藝術足球,德國隊玩的是整體和紀律性足球,意大利玩的是防守型足球,但是他們都有奪世界杯冠軍的實力,如果你硬要讓巴西隊去整德國隊或是意大利隊的風格,那就悲劇了。很顯然,ThoughtWorks很像把全中國的軟體公司都整成Agile的,這注定了其在中國是杯具的,也隻能争取到那些不知所措的公司和項目,沒有合适的項目,也隻有靠各種炒作(比如整一些大會,搞一些宣傳)。他們總是覺得中國的使用者和程式員需要去用時間不停地教育,但是,他們從來沒有想想自己的原因 — 靠教育和灌輸是永遠赢不了的。我給他們的個人建議是,不要以為世界就像你所想像的那樣,學會尊重程式員和項目還有很多非技術的東西,多聽聽程式員和客戶怎麼說,多分析一下項目的特質,從實際情況出發,而不是自己濤濤不絕地向大家灌輸自己的理論。
  • Object-Oriented Programming (OOP) – 不多說了,以前本站說過了,所有的一切都在面向對象是個騙局一文中。不過有一點我想告訴大家,面向對象的Design Pattern真是被濫用了,Design Pattern教你的是兩件事,1)怎麼去化繁為簡,2)怎麼能讓對象的耦合性降低。而不是一個公式讓你的套,但,更多的程式員則學會了“流行的設計模式程式設計”。

附:下構面是我拿不定是否是過度炒作的技術

Write Once Run Anywhere - 這個有點讓我不解,不知道為什麼會那麼靠前。這是Java的口号,我覺得Java在跨平台方面還是成功的,沒有過度炒作啊。用虛拟機的确是做到了這一點,對于那些需要有不同的硬體和作業系統平台并不斷更新和更換它們的公司來說,這的确是個很不錯的解決平台依賴性的方案。我個感覺這個技術并沒有炒作過頭,至少在Java這邊是這樣的。與其說這個,還不如說EJB,這才是炒作過度的技術。

下面的回複,在我形成這篇文章的時候我沒有想過,經ming同學一說,我覺得似乎有些道理。

ming :我從一開始就覺得java的“Write Once Run Anywhere”是徹頭徹尾的炒作。

想想,所謂的跨平台無非就是依靠虛拟機、解釋器之類的東西實作的,那麼,哪個腳本語言不是依靠解釋器呢?古老的perl已經跨平台了。當然,跨平台的語言還有很多。但是,隻有java炒作這個概念。

Test Driven Design (TDD) – 從測試案例開始寫程式這可能是很多程式員都不習慣的方法。其實這是一種比較好的程式設計方法,保證了代碼怎麼改動都不會break其它沒有改動的代碼,代碼可以在一種持續內建中保證品質。但是,我們需要知道TDD的一些副作用(在十條不錯的程式設計觀點裡也提到過TDD的弊端):1)TDD可能會讓程式員敷衍了事,以為test case 沒有錯就正确了。2)TDD可能會讓你忽略了軟體設計和架構以及程式的擴充性和重用性。TDD隻是一種方法,并不是程式的核心。當然,TDD近幾年的炒作也有點過頭,已經出現了“TDD是一種Design方法”等“神乎其技”的論調,我對此表示質疑中。

原文連結:http://coolshell.cn/articles/3609.html#more-3609