close

Inui 程式開發╭★那些炒作過度的技術和概念

那些炒作過度的技術和概念  2011年1月28 陳皓

原文轉自:http://coolshell.cn/articles/3609.html (chrome 繁中版)


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平台,你可以在世界上任何一個角落隨時隨地的去啟動你那台遠程的系統。
  • 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,這才是炒作過度的技術。

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

(全文完)

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 unix 的頭像
    unix

    程式開發ㄅㄆㄇ -歡迎光臨 Inuiüni 幼稚園

    unix 發表在 痞客邦 留言(0) 人氣()