有些初入職場(chǎng)或還在學(xué)校的同學(xué)總問,到底我該選哪個(gè)技術(shù)方向?我現(xiàn)在該學(xué)哪門語言?你覺得未來 Java 的發(fā)展趨勢(shì)如何?這些問題的本質(zhì)其實(shí)都是技術(shù)的投資決策問題,也即現(xiàn)在我該把時(shí)間精力花在哪個(gè)方向上,未來的受益才可能最大?
這個(gè)問題并不好回答,因?yàn)檫@個(gè)問題的本質(zhì)和“我現(xiàn)在應(yīng)該投資哪只股票?”一樣。沒有人能回答好這個(gè)問題,回答這類問題最好的方式,我覺得就是從投資的出發(fā)點(diǎn)而非終點(diǎn)來選擇一條路徑。至于這樣選擇的一條路徑是否能獲得很好的未來收益,這個(gè)是沒法預(yù)測(cè)的。但選擇技術(shù)方向和選擇股票不同的是,只要你在一個(gè)路徑上持續(xù)努力、學(xué)習(xí)和進(jìn)步,可以保障能和「大盤」持平而不至于有虧損,但是否能取得遠(yuǎn)超「大盤」的收益,其實(shí)是看運(yùn)氣的。
選擇語言
現(xiàn)在選擇技術(shù)方向,從某種意義上講就是選擇語言。雖然有一些大牛的說法是,語言并不重要,必要的時(shí)候可以在各種語言間自由切換。但實(shí)際情況是,能做到自由切換的前提是你得對(duì)一門語言掌握到通透之后,再學(xué)習(xí)其他語言才可能觸類旁通。
計(jì)算機(jī)的程序語言雖然很多,但種類其實(shí)有限。2017 TIBOE 程序語言排行榜上的前三位:Java、C、C++,本質(zhì)上其實(shí)是一類語言。但大部分人只能選擇去熟悉并通透一種,因?yàn)閲@這些語言背后都有龐大的生態(tài)圈。要做到通透,只熟悉語言本身是遠(yuǎn)遠(yuǎn)不夠的,其實(shí)是要熟悉整個(gè)生態(tài)圈。而三門語言中最年輕的 Java 都有二十多年歷史了,足夠你耗費(fèi)數(shù)年時(shí)光去熟悉其整個(gè)生態(tài)圈,而且目前其生態(tài)圈還處在不斷擴(kuò)展?fàn)顟B(tài),顯示出一種蓬勃的生命力。
所以,若是我自己要如何選語言?我會(huì)選擇那些顯示出有蓬勃生命力的語言,但其實(shí)十多年前我只是湊巧選到了 Java,它就像是被潮水推到我腳邊的漂流瓶,順手撿了起來。沒想到居然蓬勃的發(fā)展了十多年,還沒見衰退跡象。那時(shí)的 Java 剛誕生不過七八年,和今天的 Go 語言很像。Go 語言在排行榜上的位置躥升的很快,而且在云計(jì)算時(shí)代的基礎(chǔ)設(shè)施上大放異彩,號(hào)稱是:易用性要超越 PHP,而性能要超越 Java。
那么在 Java 之前我學(xué)的是什么?是 Visual Basic、ASP 和 Delphi/Object Pascal。我想今天不少年輕的程序員未必聽過這些語言了。但神奇的是,在 TIBOE 的排行榜上 VB 加了個(gè) .NET 排名尚在世界最廣泛的 Web 語言 PHP 和 Javascript 之上。而 15 年前我用的 Delphi/Object Pascal 居然也僅次于 Javascript 之后,遠(yuǎn)高于 Go,Objective-C,力壓 Swift。