未來這五年,軟件工程師如何安身立命(下)
從事開發(fā)工作的人的職業(yè)生命能否保持5年?
伊藤:能發(fā)揮自己實力和能力的工程師是怎樣一類人呢?
Matz:是勾勒出自己想呈獻(xiàn)給社會的軟件或系統(tǒng)的雛形,并付諸努力將其創(chuàng)造出來的人。這與是Web職位還是SI職位無關(guān),與偏用戶還是偏商務(wù)無關(guān)。
松本先生認(rèn)為不恰當(dāng)?shù)姆止ず献鳈C制將軟件開發(fā)業(yè)引入“暗淡的未來”。
伊藤:是指的從設(shè)計到實現(xiàn)都精通的工程師嗎?
Matz:是的。說起來,工程師不能只懂設(shè)計。我一直認(rèn)為,要從事軟件開發(fā),脫離寫代碼是無法生存的。人生在世,不腳踏實地可是不行的(笑)。
只從事設(shè)計而不從事軟件開發(fā),這樣的分工真是毫無意義。雖然如此,但日本SI行業(yè)仍然能存活下來,這是因為它們的利潤很高。
即使設(shè)計人員設(shè)計出了莫名其妙的規(guī)格圖,即使編程人員糊弄了事,開發(fā)出性能較差的的軟件,還是會有一些用戶在抱怨的同時還繼續(xù)使用那些軟件。由于利潤較大,一些瑕疵被掩蓋了。
但是,剛剛也提到過,隨著開發(fā)速度的增快,利潤的空間會越來越小。再按照以前的老方法來做,已經(jīng)無法再掩蓋瑕疵。
我的切身體會是如果再按照此前的方式做下去,再過5年,普通的軟件開發(fā)者們可能將不再有立身之地。
甚至可以說,從編碼人員到程序設(shè)計師再到高級工程師的這一綠色晉升體系將有可能崩塌。在這一形勢下,每個人都應(yīng)該思考自己的立身之計。
打個比方,擺滿了玲瑯滿目的DVD音像制品的租賃店剛剛興起,家用錄像系統(tǒng)已經(jīng)撤架了,如此這般,變化來得迅猛又突然。
能掌控自己人生的人和無法掌控自己人生的人的區(qū)別
伊藤:對于那些不想被卷入“暗淡的未來”的工程師,您有哪些建議要送給他們,希望他們采取哪些行動呢?
Matz:應(yīng)該還是要創(chuàng)造出新東西吧。除此之外,沒有更好的脫穎而出的方法。
接下來要說的一些東西前景并沒有那么暗淡,即使現(xiàn)有系統(tǒng)逐漸被Web所替代,利用現(xiàn)有技術(shù)來提供服務(wù)的工作也不會消亡。我認(rèn)為今后要靠這些生存的工程師們不在少數(shù)。
盡管如此,就將來的風(fēng)險總量來言,發(fā)明新的語言,掌握新的開發(fā)方法,能創(chuàng)造出新東西的人,應(yīng)該能活得更舒服些。
伊藤:您說的新東西,具體是指?
Matz:有三層意思。
首先,能為客戶提供新的服務(wù)。提供新的商業(yè)模式上,或者盡管提供的是相似的服務(wù),但能提供更好的用戶體驗,這也是一種創(chuàng)新。
作為創(chuàng)新的一部分,今年春天,松本先生的公司在github上發(fā)布了面向組裝系統(tǒng)的便捷型Ruby的mruby。
第二點是提供新的技術(shù)。開發(fā)出比現(xiàn)有的Web應(yīng)用框架性能更好的產(chǎn)品,開發(fā)出此前無法開發(fā)的應(yīng)用,這一點是能做到的。我一直在從事的就是這方面的工作。
或者,還有一條路,那就是發(fā)明新的算法。
這三種選擇的難度不同,但是,無論如何,應(yīng)該創(chuàng)造出此前沒有過的東西這一點是相通的,能持續(xù)進(jìn)行這類挑戰(zhàn)的人,才稱得上應(yīng)時而動的優(yōu)秀軟件開發(fā)工程師。
不按照這三條路去做的那些工程師們往往隨波逐流,今天學(xué)習(xí)一下最近流行的語言,明天嘗試一下使用這個框架開發(fā)等,毫無主見。
作為工程師的基本功,追尋流行的、學(xué)習(xí)現(xiàn)有的也很重要,但將這些作為目標(biāo)的話,往往無法很好的掌控自己的人生。我認(rèn)為選擇“追尋流行的”、“學(xué)習(xí)現(xiàn)有的”和“各種技術(shù)雜糅”以外的道路的工程師們,更能獲得幸福的人生。
對我來說,軟件開發(fā)就是對不合理的反擊
伊藤:不好意思,下個問題可能有點尖銳,一般來講,與其自己創(chuàng)造不如追尋流行,這樣賺錢更快。為什么您還是堅持創(chuàng)造新的東西呢?
Matz:嗯,為什么呢……我一般會回答“那是因為編寫新的程序、運行新的程序帶給我極大的快樂”。其實,是因為我不喜歡不合理的東西。
別人的想法和價值觀與我不同,對于他們開發(fā)的軟件,我也常常產(chǎn)生“為什么是這種構(gòu)造呢”、“用起來不太方便呀”這樣的疑問。
伊藤:雖說是這樣,但是所有的產(chǎn)品都多少會帶有制造者的個人偏好的。
松本先生坦誠自己“討厭不合理”,正是這一點,催生出了ruby語言,并為廣大程序設(shè)計者所喜愛。
Matz:正如您所說,其實我沒有說將個人偏好帶入產(chǎn)品不好,只是非常討厭對別人的偏好指手畫腳。不喜歡的話,你可以自己動手,自己優(yōu)化嘛。這正是軟件工程師立身之本,是開源得以持續(xù)下來的最重要的理由。
開源社區(qū)中,所有的源代碼都是公開的。因此很容易就能了解代碼的結(jié)構(gòu)。只要自己有對其進(jìn)行優(yōu)化的想法,就能夠去實現(xiàn)。
社會上的那些不合理就無可奈何了(笑),至少在軟件開發(fā)方面,我們自己可以改良。如果是自己開發(fā)的東西,也應(yīng)該隨著時代的變化隨時調(diào)整。
Ruby的開發(fā)也是一樣,我原本就喜歡語言,但更重要的是我不想別人來改良它,只想生活在能由自己掌控的世界,減少別人對開發(fā)者的哪怕是一丁點的指責(zé),所以至今仍然在繼續(xù)優(yōu)化它。
軟件開發(fā),是僅憑一己之力便可改變社會的罕有職業(yè)
松本先生正在介紹軟件開發(fā)的樂趣。他身著的POLO衫上印有“Ruby City MATSUE”項目字樣。
Matz:從性格上來講,我原本就非常適合軟件開發(fā)業(yè),只有軟件開發(fā)業(yè)才容忍我這樣的隨意任性的人,我這樣說是不是有點太自我感覺良好了(笑)?
但是,說實話,軟件開發(fā)是僅憑一己之力便可改變社會的少數(shù)職業(yè)之一。我想只要從事過這一幸福滿滿的職業(yè),便不想放棄了。
伊藤:很多人喜歡用“應(yīng)該怎么怎么樣”來預(yù)測軟件的未來,而松本先生您一直是堅持用“幸福與否”這樣的價值判斷來描述。
Matz:是呀,誰都無法對別人的人生承擔(dān)責(zé)任。比如即使遇到“Matz明明說這樣可以,我試了下卻不行”這樣的抱怨,我仍然是無法承擔(dān)責(zé)任的。所以自己的生存方式只能自己決定。
但是,諸如“今后的發(fā)展前景也許是這樣的”之類的話我也能說。但這只代表個人觀點。
對于我今天所講的話也是一樣,如果有軟件工程師認(rèn)為“我不同意松本先生的看法”,那他只要按照自己認(rèn)為的正確道路前進(jìn)就好了。
在探索未來時,最重要的是認(rèn)識到“人是不變的”這一事實
伊藤:在讀《代碼的未來》時,讓我印象非常深刻的是,您詳細(xì)整理歸納了各語言的產(chǎn)生以及趨勢變化。只是,IT領(lǐng)域正不斷發(fā)生變化,這使得過去的成功法則幾乎在今天無法通用。如果多核技術(shù)和云計算的發(fā)展也是其即將發(fā)生深刻性變化的征兆的話,您為什么還要調(diào)查過去的變化趨勢,歸納到本書里呢?
松本先生認(rèn)為科技發(fā)展趨勢如同鐘擺。
Matz:這也是見仁見智的事情,每個人的思考方式不一樣。我認(rèn)為IT業(yè)的技術(shù)發(fā)展趨勢正如鐘擺的擺動。
在新的開發(fā)語言與方式、架構(gòu)不斷涌現(xiàn)的形勢下,軟件開發(fā)的相關(guān)技術(shù)正在展開一場拉鋸戰(zhàn),在尋求平衡中不斷發(fā)展。
因此,“以前的最佳平衡”如何變?yōu)?ldquo;現(xiàn)在的最佳平衡”?只要思考一下鐘擺的周期以及過去的技術(shù)是在哪種平衡狀態(tài)下誕生的,就能大致推測出“未來的最佳平衡”了。
以“分布與集合”為例,過去只有一臺大型中央通用機,為了提升處理能力,而開發(fā)了用戶服務(wù)器系統(tǒng)。而現(xiàn)在又再次出現(xiàn)了向“云”這一巨型計算機靠攏的趨勢。
只學(xué)習(xí)過去的某一點是沒有意義的,如果你了解了某一技術(shù)的興廢是由于哪種平衡達(dá)成的結(jié)果,在你預(yù)測未來時,這將是很好的參考。而且,向過去學(xué)習(xí)時,最重要的是認(rèn)識到“人是不變的”這一事實。
人類的能力也是一種用于衡量技術(shù)變化鐘擺的參數(shù)。而人的能力是有限的,在許多方面都受到了制約。因此,各種語言的開發(fā)者如果能了解過去人們是如何看待人類能力的極限的,就能以此為契機對技術(shù)進(jìn)行改善與提高。
本書中對Dart和Go等新語言也有涉及,作為Ruby的開發(fā)者,我感到以一個語言開發(fā)者的身份來探尋語言開發(fā)者的心理非常有趣,而且對人類的理解也加深了。
伊藤:我原本想問為什么溫故知新對于創(chuàng)造新事物那么重要,現(xiàn)在明白了,即反觀人類的能力,或者說從過去的案例中探尋開發(fā)者的心理的能力是最重要的。
Matz:剛開始我就說過了,計算機并沒有像人們普遍認(rèn)為的那樣變化那么大。
50年前開發(fā)的程序設(shè)計語言至今仍然在使用,Ruby誕生也有20年了,但最近大家又對它展開了新的討論。這些都證明變化沒有人們想象的那樣大。
如此說來,以前只注重新穎不注重其他的案例也非常多。與隨波逐流的軟件開發(fā)者相比,那些能掌握趨勢變化的原理、原則的軟件開發(fā)者生命力更長久。
想成長為生命力長久的軟件開發(fā)者們,可得多讀一讀《代碼的未來》?。ㄐΓ?!
伊藤:感謝您今天接受我們訪談。