關於軟體和軟體工程師

來源:互聯網
上載者:User

     前不久在淮海路的三聯書店,隨便翻起一本介紹全球著名建築設計的書,書中講述了每個建築的創意背景和設計構想,配有一些主要的設計草圖以及建成後的照片。讓我想起前不久看到的一本討論軟體模式的書,也是一個個系統設計的案例,也有一些UML框圖,一些使用者介面的截屏。

     拿軟體架構跟建築架構進行類比,是如此的陳詞濫調,然而每當這些圖紙活生生地呈現在眼前的時候,又是如此的親切,並且令人感歎。

     一個是描述現實世界中走廊和窗檯結構的設計;一個是對講述的是虛擬世界裡資訊傳輸和顯示的邏輯。一個要遵守基於原子和分子的材料和力學定律;一個的基礎是CPU,記憶體,磁碟這些電子裝置的運行法則。一個承載著人類文明和不同文化的特質,容納著人們的體育活動或者家居生活;一個構建著人類的虛擬生活和數字化時代各行各業的流行時尚。

     然而在很一段長時間裡,每當人們提起一位建築師,大概會想到他是個衣著得體,談吐優雅而且帶有藝術家特質的紳士。如果是一位軟體工程師,大概會想到他是不修邊幅,語無倫次的怪人,而且如果他在為某個小公司工作,他可能常常是眼睛通紅,身形消瘦,而且沒有任何的儲蓄。

     大家都說職業沒有高地貴賤之分,但事實上醫生就是比郵遞員更受人尊敬,哪怕後者常常要終日穿梭於風雨之中,其辛苦程度和獲得的報酬與前者不能同日而語。

     程式大師溫博格在講述醫生的故事的時候,引用了一個典型的傳播學案例。西方的醫生自古以來就藉助希臘文中的生僻詞彙來營造文化壁壘,從而可以用“專業人士”和“業餘愛好者”來把他們跟老百姓中略有醫學常識的人區分開,以達到與眾不同和高人一等的目的。

     由此推論,至少從傳播學的角度,當軟體工程師過多地使用建築行業的術語,儘管促進了公眾對軟體和軟體行業的理解,以及對軟體工程自身的一些反思,卻會在潛意識裡淡化了自己的職業認同。如今IT界也充滿了各種以字母簡稱為特徵專業詞彙,可這些縮減字母都太容易記了,以至於每個高中生都知道裡面的含義。

     事實上軟體工程師還是有太多與建築師不同的地方,而且有些地方是如此的激動人心。之前在電視上看到紐約為新的世貿大廈徵集的設計方案,一位華人建築師的雲霧狀設計獲得最佳創意獎,同時也是大家公認的幾乎不可能實現的創意。基本的物理常識就告訴我們,要在風雨中支撐如此不規則形狀的摩天大廣告,需要怎樣機械強度的建築材料。

     軟體行業一直盛行的虛擬化(或者稱為抽象)潮流,已經讓程式員越來越遠離物理定律的束縛。最早的虛擬化應該是發生在CPU和指令集上,近年來的JAVA2和.NET把程式員拋得更遠,對象或流完全代替了記憶體地區,磁碟儲存,或者網路資料包。於是更多的程式員就只需要專註於業務和模式,進而討論重用,這個在其他工程領域都夢寐以求卻難以效仿話題。

     再加上各種面向領域的framework和platform,大多數程式員的工作幾乎就像作家或者畫家一樣,只是把現實生活中需要的資訊流和邏輯,用代碼來代替傳統的鉛筆來做個素描而已。組成這些素描的點和線條也都是虛擬邏輯,程式員於是比建築師更接近藝術,更可以天馬行空了。

     虛擬化同時也給軟體帶來了一些困惑和苦惱,一方面還是來自物理定律的約束,這也是軟體之所以還是一門工程而不是藝術的原因,也使得那些叫囂只有想不到,沒有做不到的理想主義者受到打擊;一方面也是來自軟體工程師的職業認同,當他們每天做的都是高中生就可以完成的工作,當他們看著印度軟體創造的金字塔模式鋪天蓋地的襲來的時候,尤其在發展中國家的軟體工程師們開始面臨各種非常現實的問題。

     值得慶幸的是,就算只在技術層面,虛擬化的魔力並不總是像聽起來的那麼神奇。一個叫Joe的美國人在他的一本軟體工程的小品文集中提到一個“漏洞抽象定律”:“儘管有如此眾多的進階的開發工具可以協助你以難以置信的速度完成很多複雜工作,但突然有一天,你還是必須重新學習一大堆底層的運行機制,從而找到這個進階開發工具在虛擬化的工作中漏掉的一些問題,再花上兩個星期以上的時間設計一個繞過這個虛擬層的機制來修補它”。這樣的情形在VB,MFC和COM的時代比比皆是,可能.NET會好點,但是要寫出高品質的代碼,一個初級程式員還是要花大力氣來搞清楚什麼是裝箱和拆箱。這些漏洞終於還是製造了一些門檻,把聲勢浩大的IT民工拒之門外,讓那些有經驗的程式員得到一定的尊敬。

     如今多核和並發計算的時代已經到來,軟體技術又將面臨一場深刻的變化。前不久程式員雜誌翻譯轉載了一篇美國電腦學會學報上的文章,文中指出“並發將要求程式員以人類難以適應的方式思維”。相對於這個行業技術的快速變化帶來的挑戰,虛擬化漏洞製造的門檻已經顯得有點微不足道,而機會只是留給那些對人類的未來充滿激情,並且能夠快速學習的人。其實幾年來遇到過不少程式員,這個說來簡單的學習能力,並非每個人都可以做得足夠好的。學習能力這個門檻,還是成為這個職業不至於淪為碼頭搬運工的重要基石。

     看來還是印證了那句話,上帝在一個地方關上了一扇門,就一定會在另一個地方開啟一扇窗。唯一不變的大概就是不斷的學習,好奇和追問成為在這個行業生存下去的終極法則。

     更加幸運的是,如今的軟體早已做手工作坊變成一個產業,可以選擇的學習內容也變得更加豐富,如果你對哲學和新技術充滿熱情,可以做一個技術專家;如果你對人際關係和新的方法論有興趣,就可以做一個管理者;如果你對市場的變化極度敏感,並且深信好技術不一定能賣好價錢,也可以做一個商務人士。

     而且無論你是什麼角色,只要打上了軟體的烙印,你將會是與眾不同的。不妨去看看IPMP的項目案例,你就知道為什麼一個職業的專案經理,可以把一個大壩建設或者汽車生產線管理得妥妥噹噹,一旦接手軟體項目,他卻可能會完全摸不著方向。

     去年我到無錫玩了一趟,一個大學同學在那裡的一家醫療設備公司做電子工程師。在太湖邊上,我們聊起自己的工作,聊起他做的硬體和我做的軟體。我告訴他,世界上最頂級的軟體工程師,應該是頭冒金光,思考問題的時候甚至會從頭髮叢中冒出火花的人。軟體工程師必須很有想法,因為軟體本身就是一堆想法的堆砌。除了想法,一無所有,這大概就是最純粹的軟體。

     為了證明我的觀點,我還讓他有空去做一個實驗,在百度或google上用“XX工程 思想”作為關鍵字去搜尋,當你把XX換成“電子,建築,或者機械”的時候,可能會一無所獲,但換成“軟體”的時候,搜尋的結果將會成千上萬。

     時間再往前推一點,引發我設計這個實驗的,其實是剛剛讀完的一本叫做“邏輯的引擎(Engines of Logic)”的書,主要介紹電腦科學的起源。書中講到哥德爾,是他第一次用數字來代替邏輯數學的符號,在草稿紙上把一個邏輯運算式翻譯成世界上第一行程式碼。所以我在想,最早的程式應該起源於這些邏輯學家,而不是那位名叫Ada的優雅女性,她的程式大概只是最早在機器上啟動並執行代碼而已。

     一些與哥德爾同時代或者更早一點的數學家和工程師,都在夢想著讓機器代替人類進行推理,比如我們只需要輸入一些事實,機器就像公平的法官或者聰明的偵探一樣告訴我們,誰是殺手誰是平民。這個理想其實來源於工業革命時期西方人對機器的一種崇拜,然後一不小心就成為了如今資訊化革命的最早根源。

     儘管至今為止他們的夢想並未最終實現,在如今我們叫做人工智慧的領域中,各種樂觀和悲觀的爭論也仍在繼續,類似這些的爭論往往近乎哲學,不著邊際;然而他們催生出來的,不管是科幻電影和小說,還是整個軟體產業都在瘋狂地發展著。

     這似乎也是長尾理論的另外一個視圖,不管尾巴多長,在現實中創造的價值多大,他們依舊被高端的思想牢牢牽引著。

     我們這些工作在一線的草根一族,想要在麻木的加班和浮躁的進度表背後,真正看清楚自己正在乾的是什麼,就不能忘記這些推動和支撐整個行業的終極力量。在這種力量面前,商業和利潤也只是變成了一種工具,成為對自身價值的一種證明。

     而且對技術的認同,對於我們這些發展中國家的軟體從業者尤為重要,不合理的樓價和遠不夠成熟的社會制度,把我們不斷往現實利益的一端驅趕,把握核心技術的發達國家卻在這場正反饋遊戲中越來越強,我們如今還只是為他們不斷提供利潤的長長的尾巴。

     程式大師溫老先生在他的書裡也提到了未來世界中的程式員,那會是什麼樣子呢,讓我們拭目以待吧。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.