未來這五年,軟體工程師如何安身立命? (下) ——Ruby之父松本行弘談《程式碼的未來》

徐騫發表於2013-06-24

(接上)
歡迎閱讀《未來這五年,軟體工程師如何安身立命? (上)》

從事開發工作的人的職業生命能否保持5年

伊藤:能發揮自己實力和能力的工程師是怎樣一類人呢?

Matz:是勾勒出自己想呈獻給社會的軟體或系統的雛形,並付諸努力將其創造出來的人。這與是Web職位還是SI職位無關,與偏使用者還是偏商務無關。

enter image description here
松本先生認為不恰當的分工合作機制將軟體開發業引入“暗淡的未來”。

伊藤:是指的從設計到實現都精通的工程師嗎?

Matz:是的。說起來,工程師不能只懂設計。我一直認為,要從事軟體開發,脫離寫程式碼是無法生存的。人生在世,不腳踏實地可是不行的(笑)。

只從事設計而不從事軟體開發,這樣的分工真是毫無意義。雖然如此,但日本SI行業仍然能存活下來,這是因為它們的利潤很高。

即使設計人員設計出了莫名其妙的規格圖,即使程式設計人員糊弄了事,開發出效能較差的的軟體,還是會有一些使用者在抱怨的同時還繼續使用那些軟體。由於利潤較大,一些瑕疵被掩蓋了。

但是,剛剛也提到過,隨著開發速度的增快,利潤的空間會越來越小。再按照以前的老方法來做,已經無法再掩蓋瑕疵。

我的切身體會是如果再按照此前的方式做下去,再過5年,普通的軟體開發者們可能將不再有立身之地。

甚至可以說,從編碼人員到程式設計師再到高階工程師的這一綠色晉升體系將有可能崩塌。在這一形勢下,每個人都應該思考自己的立身之計。

打個比方,擺滿了玲琅滿目的DVD音像製品的租賃店剛剛興起,家用錄影系統已經撤架了,如此這般,變化來得迅猛又突然。

能掌控自己人生的人和無法掌控自己人生的人的區別

伊藤:對於那些不想被捲入“暗淡的未來”的工程師,您有哪些建議要送給他們,希望他們採取哪些行動呢?

Matz:應該還是要創造出新東西吧。除此之外,沒有更好的脫穎而出的方法。

接下來要說的一些東西前景並沒有那麼暗淡,即使現有系統逐漸被Web所替代,利用現有技術來提供服務的工作也不會消亡。我認為今後要靠這些生存的工程師們不在少數。

儘管如此,就將來的風險總量來言,發明新的語言,掌握新的開發方法,能創造出新東西的人,應該能活得更舒服些。

伊藤:您說的新東西,具體是指?

Matz:有三層意思。

首先,能為客戶提供新的服務。提供新的商業模式上,或者儘管提供的是相似的服務,但能提供更好的使用者體驗,這也是一種創新。

enter image description here
作為創新的一部分,今年春天,松本先生的公司在github上釋出了面向組裝系統的便捷型Ruby的mruby。

第二點是提供新的技術。開發出比現有的Web應用框架效能更好的產品,開發出此前無法開發的應用,這一點是能做到的。我一直在從事的就是這方面的工作。

或者,還有一條路,那就是發明新的演算法。

這三種選擇的難度不同,但是,無論如何,應該創造出此前沒有過的東西這一點是相通的,能持續進行這類挑戰的人,才稱得上應時而動的優秀軟體開發工程師。

不按照這三條路去做的那些工程師們往往隨波逐流,今天學習一下最近流行的語言,明天嘗試一下使用這個框架開發等,毫無主見。

作為工程師的基本功,追尋流行的、學習現有的也很重要,但將這些作為目標的話,往往無法很好的掌控自己的人生。我認為選擇“追尋流行的”、“學習現有的”和“各種技術雜糅”以外的道路的工程師們,更能獲得幸福的人生。

enter image description here

對我來說,軟體開發就是對不合理的反擊

伊藤:不好意思,下個問題可能有點尖銳,一般來講,與其自己創造不如追尋流行,這樣賺錢更快。為什麼您還是堅持創造新的東西呢?

Matz:嗯,為什麼呢……我一般會回答“那是因為編寫新的程式、執行新的程式帶給我極大的快樂”。其實,是因為我不喜歡不合理的東西。

別人的想法和價值觀與我不同,對於他們開發的軟體,我也常常產生“為什麼是這種構造呢”、“用起來不太方便呀”這樣的疑問。

伊藤:雖說是這樣,但是所有的產品都多少會帶有製造者的個人偏好的。

enter image description here
松本先生坦誠自己“討厭不合理”,正是這一點,催生出了ruby語言,併為廣大程式設計者所喜愛。

Matz:正如您所說,其實我沒有說將個人偏好帶入產品不好,只是非常討厭對別人的偏好指手畫腳。不喜歡的話,你可以自己動手,自己優化嘛。這正是軟體工程師立身之本,是開源得以持續下來的最重要的理由。

開源社群中,所有的原始碼都是公開的。因此很容易就能瞭解程式碼的結構。只要自己有對其進行優化的想法,就能夠去實現。

社會上的那些不合理就無可奈何了(笑),至少在軟體開發方面,我們自己可以改良。如果是自己開發的東西,也應該隨著時代的變化隨時調整。

Ruby的開發也是一樣,我原本就喜歡語言,但更重要的是我不想別人來改良它,只想生活在能由自己掌控的世界,減少別人對開發者的哪怕是一丁點兒的指責,所以至今仍然在繼續優化它。

軟體開發,是僅憑一己之力便可改變社會的罕有職業

enter image description here
松本先生正在介紹軟體開發的樂趣。他身著的POLO衫上印有“Ruby City MATSUE”專案字樣。

Matz:從性格上來講,我原本就非常適合軟體開發業,只有軟體開發業才容忍我這樣的隨意任性的人,我這樣說是不是有點太自我感覺良好了(笑)?

但是,說實話,軟體開發是僅憑一己之力便可改變社會的少數職業之一。我想只要從事過這一幸福滿滿的職業,便不想放棄了。

伊藤:很多人喜歡用“應該怎麼怎麼樣”來預測軟體的未來,而松本先生您一直是堅持用“幸福與否”這樣的價值判斷來描述。

Matz:是呀,誰都無法對別人的人生承擔責任。比如即使遇到“Matz明明說這樣可以,我試了下卻不行”這樣的抱怨,我仍然是無法承擔責任的。所以自己的生存方式只能自己決定。

但是,諸如“今後的發展前景也許是這樣的”之類的話我也能說。但這隻代表個人觀點。

對於我今天所講的話也是一樣,如果有軟體工程師認為“我不同意松本先生的看法”,那他只要按照自己認為的正確道路前進就好了。

在探索未來時,最重要的是認識到“人是不變的”這一事實

伊藤:在讀《程式碼的未來》時,讓我印象非常深刻的是,您詳細整理歸納了各語言的產生以及趨勢變化。只是,IT領域正不斷髮生變化,這使得過去的成功法則幾乎在今天無法通用。如果多核技術和雲端計算的發展也是其即將發生深刻性變化的徵兆的話,您為什麼還要調查過去的變化趨勢,歸納到本書裡呢?

enter image description here
松本先生認為科技發展趨勢如同鐘擺。

Matz:這也是見仁見智的事情,每個人的思考方式不一樣。我認為IT業的技術發展趨勢正如鐘擺的擺動。

在新的開發語言與方式、架構不斷湧現的形勢下,軟體開發的相關技術正在展開一場拉鋸戰,在尋求平衡中不斷髮展。

因此,“以前的最佳平衡”如何變為“現在的最佳平衡”?只要思考一下鐘擺的週期以及過去的技術是在哪種平衡狀態下誕生的,就能大致推測出“未來的最佳平衡”了。

以“分佈與集合”為例,過去只有一臺大型中央通用機,為了提升處理能力,而開發了使用者伺服器系統。而現在又再次出現了向“雲”這一巨型計算機靠攏的趨勢。

只學習過去的某一點是沒有意義的,如果你瞭解了某一技術的興廢是由於哪種平衡達成的結果,在你預測未來時,這將是很好的參考。而且,向過去學習時,最重要的是認識到“人是不變的”這一事實。

人類的能力也是一種用於衡量技術變化鐘擺的引數。而人的能力是有限的,在許多方面都受到了制約。因此,各種語言的開發者如果能瞭解過去人們是如何看待人類能力的極限的,就能以此為契機對技術進行改善與提高。

本書中對Dart和Go等新語言也有涉及,作為Ruby的開發者,我感到以一個語言開發者的身份來探尋語言開發者的心理非常有趣,而且對人類的理解也加深了。

伊藤:我原本想問為什麼溫故知新對於創造新事物那麼重要,現在明白了,即反觀人類的能力,或者說從過去的案例中探尋開發者的心理的能力是最重要的。

Matz:剛開始我就說過了,計算機並沒有像人們普遍認為的那樣變化那麼大。

50年前開發的程式設計語言至今仍然在使用,Ruby誕生也有20年了,但最近大家又對它展開了新的討論。這些都證明變化沒有人們想象的那樣大。

如此說來,以前只注重新穎不注重其他的案例也非常多。與隨波逐流的軟體開發者相比,那些能掌握趨勢變化的原理、原則的軟體開發者生命力更長久。

想成長為生命力長久的軟體開發者們,可得多讀一讀《程式碼的未來》啊(笑)!

伊藤:感謝您今天接受我們訪談。

採訪•文章•攝影:伊藤健吾(編輯部)

出處:《engineer type 對松本行弘的訪談

相關文章