未來這五年,軟件工程師如何安身立命(上)
近年來,伴隨著智能手機的普及、數字市場的繁榮,我們身邊正發生著日新月異的變化。作為一個與各領域關系密切的行業,軟件開發模式又在發生著那些轉變呢? Ruby之父松本行弘的新書《代碼的未來》,將為大家揭開其中的真相。松本行弘眼中的軟件開發行業的未來,到底是怎樣的?總編輯伊藤健吾探訪了位于島根縣的松江開源研究室。
Ruby / mruby開發者
松本行弘 (@yukihiro_matz)
Ruby語言發明者,亦是亞洲首屈一指的編程語言發明者。現兼任網絡應用通信研究所(NaCl)研究員、樂天技術研究所研究員、Heroku首席架構師等。昵稱“Matz”。討厭東京,喜歡溫泉。
伊藤:感謝您百忙之中接受我們的訪談。最近,我拜讀了您的新書《代碼的未來》,請您先談一下代碼以及軟件工程師們的未來吧。
Matz:這還真是有點不好回答呀……不過,非常感謝您閱讀拙著。
伊藤:在本書中,您詳細敘述了您對各類開發語言、程序設計方法的過去、現在以及未來的看法。在此,想請您談一下您是如何看待軟件行業的現狀的。它的本質是否發生了變化?軟件開發的模式是否正在發生轉變呢?
Matz:在書中我也提到過,預測高科技的發展趨勢并不難,我認為,計算機領域在未來的一段時間里應該還會繼續遵循摩爾定律發展。或許明年會出現可供實際應用的量子計算機,那樣一來,迄今為止的一切可能都要顛覆重來(笑)。不過,根據摩爾定律,計算機的價格會更低、性能會更好、容量會更大,這些基本走向應該是不會變的。但是,這幾年我已經感覺到方向開始發生變化了。這大概是因為,伴隨著硬件的發展,軟件開發勢必也要進行一些調整。
伴隨著多核技術和云計算的興起,軟件開發也在發生變化
Matz:大約20年前,我設計了Ruby語言(編輯注:1993年開發),這門20年前開發的語言即使在現在的電腦上運行也依然能取得很高的性能。
這說明20年多年來,軟件的運行環境沒有發生什么實質性的變化,它們都在單一的電腦上運行。近年來,CPU單核技術已經提升乏力,取而代之的是CPU多核分散處理技術。這樣一來,此前開發的軟件就失去了本有的優勢。從這一點來看開發方法的調整勢在必行。
松本先生認為,軟件的運行環境已經很多年沒有變化了。
伊藤:您剛剛講的這些,在本書的最后一章“多核時代的程序設計”中也進行了總結吧?
Matz:是的。不僅是多核技術,云計算的發展狀況基本上也是這樣的。在計算機中有多個CPU的話即為“多核”,在網絡中的話即為“云”。總之,預測軟件開發的未來的關鍵詞應該集中體現為“如何運用多臺計算機”。
伊藤:那么,在引入了多核技術和云計算之后,您認為軟件開發者應該如何改變工作方式呢?
Matz:就目前的變化來講,這10年間,基于Web的開發不斷增加,Web應用的可擴展性很強,是一種適于分散設計的應用架構,所以熟悉Web的人,對多核和云計算的概念也會比較熟悉。與只了解通用機架構的工程師相比,他們應該更容易適應。
伊藤:在采訪從事Web服務和智能手機應用開發的新興企業時,我們感到,在這一兩年,利用PaaS和云技術從事服務開發的工程師在快速增加。
Matz:是的。我也認為今后“公司在開發過程中不必購買主機的方式”會成為主流。而且,“不持有”這種思考方式不僅對開發很重要,對企業經營也會產生重大影響。
邁向“持有”不是資產而是負債的時代
Matz:以前,“持有”被認為是企業活力的源泉。擁有高性能通用機的公司能快速處理各種業務,而無法購買昂貴的通用機的公司只能兀自打著算盤……
但是,如今“未持有”的一方反而有利。配備計算機硬件的話,收回成本需要5年,這期間必須讓機器充分運轉、物盡其用。這種方式表面上看好像有利于壓縮成本,但實際上使用舊計算機,會降低生產力,成本反而更高。
也就是說,現在我們已經步入“持有不是資產而是負債”的時代。如果配備最先進的設備,那些優秀的工程師就可以進行高效開發,但仍然有一些人還在使用 3年前的舊機器,那也難怪僅僅編譯就需要一個小時(笑)。Heroku等云平臺的誕生,使得開發中“持有者的優越感”蕩然無存。
另一方面,“不持有”的好處也體現在了商務上和開發上。比如,受其影響出現了許多新興企業。以前,想要創業必須具備一定數量的儲備資產,用于向數據中心投資、向服務器租賃公司購買10臺服務器等。然而,現在只需要使用Heroku即可,最初的1節點是免費的。這樣一來,創業之初,除了進行開發,程序員們會花一些時間以外,幾乎沒什么風險和成本。
我曾經讀過美國投資公司Y Combinator的創立者保羅•格雷厄姆寫的一篇短文,其中有一段我深有同感――“現代的新興創業公司的團隊人數很少,只要能掙夠供大家吃方便面的錢,他們便會開始新的挑戰”。這一斷言豈不妙哉!“不持有”的靈活性和快捷性,正是推動有能力的人不斷挑戰的后盾。這一趨勢不僅只體現在新興公司內,從前年開始,這股風潮已經影響到了一些大企業。
在美國,迪斯尼和百思買等正是利用Ruby、Rails和Heroku,迅速地以低成本構建起了本公司的服務體系。此前,只屬于投資公司的特權的“新服務開發的迅捷性”以及“開發的靈活性”已經不再由他們獨享。
伊藤:日本的大企業、大開發公司的情況如何?
Matz:我沒有在大企業中供職,所以無法正確分析他們的動向,但是從各種觀點來看,大家基本上都持樂觀態度。但是,作為一名旁觀者,我認為從整體上來看形勢不容樂觀。
忽視了技術創新的“本質優點”的開發案例太多了。
伊藤:您為什么認為軟件開發的前景不容樂觀?
Matz:傳統的軟件開發仍然是主流。雖說在安裝Web服務的最終環節中使用了Amazon的云服務,但整個開發流程與過去沒什么不同。通常仍然是由沒寫過一行代碼的系統工程師來完成設計。一個軟件開發團隊動輒出動十人,這種情況很多見。
這與剛才所說的“不持有主機所帶來的優勢”完全相反。僅從皮毛上引入流行技術的開發案例并不少見。
我對“私有云”(又稱內部云或企業云)感到無比失望。這是因為,云服務的最大優點就是在網絡中使用多臺計算機,而私有云的服務對象僅僅是公司內部的若干臺計算機。這本質上不還是“擁有自己的主機”嗎?這樣可不行啊。
松本行弘指出現在的軟件開發“只是表面上吸收了先進科技的優點”。
伊藤:看起來是在追隨最新的技術趨勢,實際上卻忽視了本質優點的案例非常多。松本先生所說的“暗淡的未來”的其他體現還有哪些呢?
Matz:如今,BtoB的大規模開發,新興企業的小軟件開發等不僅強調“不持有”,還非常重視開發速度。雅虎發明了一個詞叫“爆速化”,是否能在競爭中占得先機,速度確實非常關鍵。
從這個角度來看,所謂的系統集成商,他們的工作真是有點過時了呀。即使過時了但仍然繼續工作還是完全放棄?我不知他們該如何選擇。但是,可以肯定地說,他們與那些真正能夠發揮實力和能力的工程師的差距將越來越大。