技術專家的恐懼症

來源:互聯網
上載者:User

專家的恐懼與專家的“反恐”

 

孟岩

  人民郵電出版社最近出版了一本書,叫做《應用MDA》。據我所知,它是國內第一本介紹MDA概念的圖書。目前,MDA還處在“油漆未乾”的狀態,對於我來說,亟需通過閱讀一些資料對此項技術建立初步印象。因此,我閱讀這本書時,目的是十分明確的。我想知道,如果MDA是一個答案,那麼問題是什嗎?我本以為這個問題應當是很簡單的,略讀過這本書之後,我感到,事情其實並不簡單。

  原著作者David Frankel先生是OMG中MDA運動的活躍分子,對於這位先生,我並不瞭解,書中也沒有進一步的詳細介紹。從這本書整體布局看來,作者在大局把握上似乎經驗不足。當然任何一個理智健全的人也不會指望通過一本328頁的小書真正掌握MDA的應用技術,此書不過應證了這一點而已。不過Frankel先生在敘述中夾雜了很多背景資料和個人議論,這恰恰是我喜歡捕捉的東西。個人作品較之冰冷而懦弱的官方技術文檔,最大的優點便在於文字背後的感情,這種感情不僅能夠讓讀者更順利地接受書中所描述的技術,而且時不時泄漏出一些小秘密甚至是大秘密。對於我來說,這些秘密或許是真正有價值的、值得討論的東西。Frankel先生看起來是個比較謹慎的人,儘管如此,他還是給了我很有意思的暗示。不妨看看這段:

  “我們不得不得出這樣的結論:我們對於平台的未來所能做出的唯一預測是,我們無法預測到的事情將會發生。哪怕IT經理人對於平台下了正確的賭注,平台也不太可能保持原樣,而是會隨著時間的流逝而演變成幾乎完全不同的新平台。即使經理的猜測是正確的,依賴於該平台的代碼也可能會很快過時,快得令人心碎。”

  真有意思,不是嗎?Frankel先生不夠坦白,因為他在這裡用“IT經理人”當幌子,可是誰都看得出來,其實他在說“IT技術專家”。儘管如此,拋開這點小小的不坦白,Frankel先生在這裡說出了當今軟體技術領域的一個大秘密,那就是,整個軟體開發領域中的“專家階層”已經在心理上陷入深深的恐懼中。

  作者既然沒有明說,那麼這個結論當然只能是我的印象。而印象之所以為印象,就在於解釋起來並不容易。首先的一個難題就是要論證在軟體開發領域存在一個所謂的“專家階層”。“階層”這個名詞實在不好聽,我甚至很難解釋它與更難聽的“階級”之間的區別何在,因此也不想陷入這個問題的爭論之中。但是軟體開發領域中確實存在一批所謂的專家,那些通過文章和書籍以及演講表達他們自認為高人一籌的技術思想的人,那些因為之前的成功而擁有表面自信的人,那些敢於“文人相輕”而且的確有一點點“相輕”資本的人,如果你承認這些人與剛剛入行的戰戰兢兢的coder確實有所不同,那麼就請暫且接受我的這一前提。

  在軟體開發這個圈子裡,專家們是讓人仰視的。然而這些讓人仰視的專家,今天其實正陷入一種深深的集體焦躁和恐懼之中。是的!這些衣食無憂、態度傲慢、言之皇皇、著作等身的專家們,他們正在恐懼!

  上世紀90年代以來,軟體產業的一個基本現象,就是基礎平台和工具技術的更迭和變革愈演愈烈,超出任何人的預期和意願,也完全超出個人所能夠應付的範圍。在短短十多年間,基礎技術經曆了從面向過程到基於對象,從基於對象到物件導向,從物件導向到面向組件三次大的變遷,其間還夾雜有GUI革命,32位革命,關係型資料庫革命,Web革命,向C++和Java的大遷移,Design Patterns運動,開放原始碼運動,物件導向方法學之戰,分布式中介軟體之戰,J2EE之戰,COM+和Windows DNA的曇花一現,VB開發人員面臨的.NET之亂等等無以計數的事件。軟體工業的發展進步,基本上處於被平台技術的快速變革所驅動的境地。這種快速的變革,使得今天專家階層,往往會被明天遺棄。一些人今天還在為上一次選擇的成功而沾沾自喜,明天就將面臨被拋棄的命運。軟體平台技術的每一次變革,每一場工具大戰,背後都有著千萬悲情故事。多少人從榮譽的峰頂跌落?有多少人要吞下苦澀的心情,拋卻數年的心血,一切推翻重來?又有多少人故作輕鬆地說著“必須努力跟上時代”的廢話,鼓起越來越貧弱的勇氣再戰江湖?平台技術的迅速變化,超過所有人預料,而其革命性和顛覆性,使得在這個行業中知識和經驗的老化速度之快,技術積累之艱難,達到了讓業內人士感到羞辱的地步。整個產業的從業者就好像站在格陵蘭島夏季的浮冰上,對於腳下肆虐斷裂的冰層充滿著恐懼,他們四處尋找看上去更堅實的浮冰,吃力地跳躍挪移。然而,如果說連MFC、VB6和CORBA這樣的巨型浮冰,現在都面臨解體崩塌的危險,那麼你還能信任什麼呢?

  在書中,Frankel說:

  “荷馬在他的史詩中描述了西西弗斯的故事,他必須將一塊巨石推上海蒂斯的一座小山,但每當接近山頂時,巨石又會滾下來,因此西西弗斯的苦役永無止境。而當今的IT經理人正是現代版的西西弗斯。”

  對,這就是事實!

  你以為軟體開發領域內的那些“高手”、“專家”們,對於大公司一波又一波的新平台革命真的熱烈歡迎嗎?你以為那些關於“提高開發效率”、“讓你的工作更輕鬆”之類的宣傳口號真的讓專家們山呼萬歲嗎?他們只不過是強顏歡笑!其內心的焦躁和恐懼,才是基本的真相。不錯,確實有一小部分涉世未深的新銳們津津樂道,激情澎湃,但這隻不過是下一個悲劇故事的開始而已。任何一個專業領域,只有保持變與不變的對立統一,有所積累,有所揚棄,才能夠穩步前進。而軟體技術領域,已經習慣於在平台技術這樣的基礎層面上快速震蕩,而且到目前為止,都沒有任何有效方法隔離這種震蕩,從而使這種震蕩嚴重波及整個產業和專家階層。

  這種情況不是一開始就有的,Frankel在書中第一章回顧了70年代COBOL語言在商用主機系統上的統治地位,以及長達十幾年的DOS時代,這都是軟體發展曆史上的黃金期。然而最近幾年來,平台技術的震蕩過於頻繁和劇烈,技術人員疲於奔命,拼上全部精力來掌握平台技術特性,完全成為文檔的奴隸,根本沒有餘力來考慮真正重要的技術問題。這是多麼嚴重的局面!

  在軟體開發專家作為一個群體,數量還比較少的時代,這個問題即使嚴重,對於他們來說也只能採取“人為刀俎,我為魚肉”的被動態度。大多數人採用兩種辦法,一是深深地鑽入某一個細分領域,甚至乾脆改行,以其他行業(而非軟體技術)的穩定性來保護自己。另一種方法則是勇者之選,就是不斷跟風趕潮,爭當所有時代的弄潮兒,或者換一個角度說,甘願被各個時代反覆蹂躪。

  然而隨著專家群體數量之多,足以形成一個階層的時候,逃避和被動的姿態就顯得過於懦弱。至少在軟體開發過程和方法這個領域,既得利益的專家們開始嘗試主動的出擊。與其屈從於技術浪潮,被玩弄於股掌之中,不如主動制定遊戲規則,建立防波堤,穩定軟體技術行業的專業階層。

  這就是MDA的關鍵目的之一。看上去很不錯,可是怎麼做呢?

  基本思路很簡單,Andrew Koenig曾經引述一個英文作家的話:“增加一個間接層,這是解決任何問題的辦法,”並指出這句原來或許是諷刺不斷自我膨脹的官僚體制的言論,放在軟體領域倒的確是箴言。遵循這個箴言,專家們準備打造一個間接層,把浮冰隔離在該層之下,從而可以腳踏實地,高枕無憂。

  “MDA就是把建模語言當成程式設計語言來用,而不只是當作設計語言來用。”

  當然!如果建模語言可以當成程式設計語言來用,主要通過程式設計語言來體現的基礎平台的變化將很大程度上被隔離在建模語言之下。

  “MDA無意獨領風騷而令其他方法黯然失色,相反,它同其他方法相輔相成。”

  當然!MDA要讓其他方法成為它下面的浮冰,你們儘管去崩塌斷裂,彼此搏殺吧,我自巋然不動。

  “用建模語言編程可以提高生產率,改善品質,並使軟體產品生存期更長。”

  當然!只有提供更高的生產力,才能夠獲得更強大的整個業界的名正言順的支援。只有在這種支援的庇護之下,專家階層的利益才能得到維繫。

  可以說,MDA的目標已經十分明確——通過建立新的理念、技術和工具,將“軟體設計”這件事情變成一門與編寫代碼相分離、真正獨立的專業,通過專業化,防止下層平台技術不斷震蕩波及甚至顛覆專家階層在技術上的積累。因此,這是一場專家們用專業化手段實現專業分工,以維繫專家利益,對抗專業恐懼心態的運動。

  當然這個定義不是嚴格的、正式的。在面對聽眾的時候,我們需要一個更加冠冕堂皇的理由,比如推進軟體工程進步,提高效率、改善品質之類。但是我認為“對抗恐懼”這個心理層面的因素也沒有什麼不好意思表達的,至少在我看來,這算是光明正大的理由,無須掩蓋。而且,從Frank e l先生這樣的著作來看,也掩飾不了。

  MDA並不是憑空捏造的,它是傳統軟體工程的必然發展。傳統軟體工程(對應於目前流行的敏捷方法)在本質上一直模仿土木建築工程。土木建築工程,與很多人設想的相反,一直不斷湧現著大量的創新技術,然而,對於這個領域內的專家階層——建築師和結構工程師——來說,新技術的出現幾乎總是一種好事,他們從來不需要擔心新技術的出現會顛覆自己的專業地位。這一點令軟體工程領域的專家們羨慕不已。他們付出了很多努力,試圖通過對開發過程的研究解決這樣的問題,然而對於跟技術結合更加緊密的軟體設計者來說,軟體過程無異於隔靴搔癢,解決不了問題。

  MDA要把屬於軟體設計本質的東西用專有工具表達成為專有的成果,就好像建築師只需畫出建築圖紙,結構師只需畫出結構圖紙,在軟體工程中,工程師憑藉MDA,只需要構造出模型。有了模型,軟體設計者們夢寐以求的依賴倒置出現了:不再是軟體的架構和設計依賴於下層平台,而是下層平台被迫不斷完善以滿足表達模型的需求。在這種情形下,軟體專家們將能夠逐漸擺脫平台廠商歇斯底裡的鬥爭帶來的劇烈震蕩,集中精力研究軟體結構問題和設計問題,甚至可能開發出量化的工具來衡量軟體結構的優劣,預測軟體的可用性,建立真正的工程科學。唯有如此,軟體構造這件事情才能夠成為一件專業,專家們才能有時間架構起高高的壁壘,防止那些憑藉《21天學會XXX》闖進軟體開發領域的毛頭小子利用一些新技術細節羞辱他們,讓這個專業進入分工清晰、階層分明的成熟階段。

  在MDA層面的專家看來,如今爆發在J2EE和.NET陣營之間的論戰實在可憐。今天那些意氣風發的論戰者,那些把寶押在某一個千秋萬代、唯我不敗的平台上的幼稚的人,遲早會發現,要麼是腳下的浮冰崩潰,要麼是各個平台趨同,毫無區別可言。已經重複了無數次的悲劇,還將重演,只不過瑟瑟發抖的主體有所不同而已。

  MDA將是打破這一悲劇性宿命的一次嘗試,它能成功嗎?現在下結論還為時過早。

  反恐尚未成功,專家仍在努力。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.