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