初入職場的你如何選擇技術(shù)方向
有些初入職場或還在學(xué)校的同學(xué)總問,到底我該選哪個技術(shù)方向?我現(xiàn)在該學(xué)哪門語言?你覺得未來 Java 的發(fā)展趨勢如何?這些問題的本質(zhì)其實都是技術(shù)的投資決策問題,也即現(xiàn)在我該把時間精力花在哪個方向上,未來的受益才可能***?
這個問題并不好回答,因為這個問題的本質(zhì)和“我現(xiàn)在應(yīng)該投資哪只股票?”一樣。沒有人能回答好這個問題,回答這類問題***的方式,我覺得就是從投資的出發(fā)點而非終點來選擇一條路徑。至于這樣選擇的一條路徑是否能獲得很好的未來收益,這個是沒法預(yù)測的。但選擇技術(shù)方向和選擇股票不同的是,只要你在一個路徑上持續(xù)努力、學(xué)習(xí)和進步,可以保障能和「大盤」持平而不至于有虧損,但是否能取得遠超「大盤」的收益,其實是看運氣的。
選擇語言
現(xiàn)在選擇技術(shù)方向,從某種意義上講就是選擇語言。雖然有一些大牛的說法是,語言并不重要,必要的時候可以在各種語言間自由切換。但實際情況是,能做到自由切換的前提是你得對一門語言掌握到通透之后,再學(xué)習(xí)其他語言才可能觸類旁通。
計算機的程序語言雖然很多,但種類其實有限。2017 TIBOE 程序語言排行榜上的前三位:Java、C、C++,本質(zhì)上其實是一類語言。但大部分人只能選擇去熟悉并通透一種,因為圍繞這些語言背后都有龐大的生態(tài)圈。要做到通透,只熟悉語言本身是遠遠不夠的,其實是要熟悉整個生態(tài)圈。而三門語言中最年輕的 Java 都有二十多年歷史了,足夠你耗費數(shù)年時光去熟悉其整個生態(tài)圈,而且目前其生態(tài)圈還處在不斷擴展?fàn)顟B(tài),顯示出一種蓬勃的生命力。
所以,若是我自己要如何選語言?我會選擇那些顯示出有蓬勃生命力的語言,但其實十多年前我只是湊巧選到了 Java,它就像是被潮水推到我腳邊的漂流瓶,順手撿了起來。沒想到居然蓬勃的發(fā)展了十多年,還沒見衰退跡象。那時的 Java 剛誕生不過七八年,和今天的 Go 語言很像。Go 語言在排行榜上的位置躥升的很快,而且在云計算時代的基礎(chǔ)設(shè)施上大放異彩,號稱是:易用性要超越 PHP,而性能要超越 Java。
那么在 Java 之前我學(xué)的是什么?是 Visual Basic、ASP 和 Delphi/Object Pascal。我想今天不少年輕的程序員未必聽過這些語言了。但神奇的是,在 TIBOE 的排行榜上 VB 加了個 .NET 排名尚在世界最廣泛的 Web 語言 PHP 和 Javascript 之上。而 15 年前我用的 Delphi/Object Pascal 居然也僅次于 Javascript 之后,遠高于 Go,Objective-C,力壓 Swift。
這些老牌語言還值得學(xué)嗎?當(dāng)然不值得了,因為早已進入暮年,沒了蓬勃的生命力。但為什么排名還這么高?因為它們也曾經(jīng)有過蓬勃生命力的熱血青春。留下了大量的軟件和程序遺產(chǎn),至今還沒能退出歷史的舞臺吧。
美國作家納西姆·塔勒布(《黑天鵝》《反脆弱》等暢銷書作者)說:“信息或者想法的預(yù)期壽命,和它的現(xiàn)有壽命成正比。” 那么編程語言以及由它編寫的所有程序和軟件系統(tǒng),本質(zhì)就是信息了。所以,存活的時間夠長的語言,可以預(yù)期,它未來也還可能存活這么長時間。這一點在 Delphi 上已經(jīng)得到了體現(xiàn),進入二十一世紀后,這種編寫 C/S 架構(gòu)的語言,居然還存活了這么久。
選擇回報
選擇技術(shù)方向,選擇語言,都是一種投資。我們?yōu)榇烁械浇箲]的原因在于,技術(shù)變化那么快,就怕自己選了一個方向,投了幾年的時間精力,***卻被技術(shù)迭代的浪潮拍在了沙灘上。
按上面塔勒布的說法,越年輕的語言和方向,風(fēng)險越高。一個今年剛出現(xiàn)的新方向、新語言,你怎么知道它能在明年幸存下來?所以,考慮回報的確定性和更低的風(fēng)險,你應(yīng)該選擇有一定歷史的方向或語言,也許不能帶來超額的回報,但能帶來穩(wěn)定的回報,讓你現(xiàn)在這個行業(yè)里立穩(wěn)腳跟。在此基礎(chǔ)上,再去關(guān)注新潮流、新方向或新技術(shù),觀察它們的可持續(xù)性。
投資箴言:高風(fēng)險未必帶來高回報。在選擇職業(yè)方向的路上,你甚至沒法像投資一樣去分散投資來控制風(fēng)險,所以選擇確定性的回報,要比抱著賭一把的心態(tài)更可取??纯串?dāng)前的市場需求是什么,最需要什么?長期需要什么?
比如,今天,技術(shù)的熱潮在人工智能、機器學(xué)習(xí)。這是市場最需要的,所以市場給的價格也是***的。所以,我應(yīng)該投入這里么?先別頭腦發(fā)熱,看看自己的基礎(chǔ),能否翻越門檻,及時上得了車嗎?世紀之初,互聯(lián)網(wǎng)時代的到臨,網(wǎng)絡(luò)的爆發(fā),你會寫個 HTML 就能月薪上萬 —— 上萬,似乎不多啊,但那時北京房價均價也才 5K+ 啊。2010 年左右,移動互聯(lián)網(wǎng)興起,一年經(jīng)驗的移動開發(fā)者的平均待遇達到了五到十年 Java 開發(fā)的水平。如今,你只會 HTML 基本找不到工作,你有五年移動開發(fā)經(jīng)驗相比五年 Java 開發(fā)經(jīng)驗的同學(xué),薪資待遇也相差不多了。
關(guān)于技術(shù),有一句流行的話:技術(shù)總是短期被高估,但長期被低估。不妨投入到一些可能在長期被低估的技術(shù)上,而不是被技術(shù)潮流的短期波動所左右。今天,在人工智能領(lǐng)域獲得超額回報的***專家,實際在數(shù)十年前在其被低估時就進入了,數(shù)十年的持續(xù)投入,在今天迎來了人工智能的「牛市」才有所謂的超額回報。
技術(shù)的選擇,都是賺取長期回報,短期的波動放在長期來看終將被抵消掉,成為時代的一朵小浪花。
選擇行業(yè)
搞清楚了語言、技術(shù)方向和回報的關(guān)系后,***做出選擇的立足點通常會落在行業(yè)上。
當(dāng)你問別人該選什么語言時,有人會告訴你,你應(yīng)該學(xué)習(xí) Javascript,互聯(lián)網(wǎng) Web 時代的通用語言,到了移動互聯(lián)網(wǎng)時代依然通用,而且現(xiàn)階段生命力旺盛的就像再年輕十歲的 Java。也有人告訴你也許從 Python 開始更合適,語法簡單,上手容易。還有人告訴你,現(xiàn)在啊學(xué) Java 找工作最容易,平均工資也高。有各種各樣的說法充斥在你的耳邊,讓你猶豫不決,左右為難。
一個問題就像一把鎖上的鎖頭,李笑來說:開鎖的鑰匙通常不會就插在鎖上,別在鎖頭上找鑰匙。那樣,這個問題也就不是問題了,太容易就解開了,不是嗎?所以,選擇什么語言通常不在于語言本身的特性。
選語言,就是選職業(yè),選職業(yè)首先選行業(yè)。先想想自己想從事哪個行業(yè)的軟件開發(fā),再看看這個行業(yè)的現(xiàn)狀如何?行業(yè)的平均增速如何?和其他行業(yè)相比如何?這個行業(yè)里***的公司相比行業(yè)平均增速又如何?那么,再看看這些***的公司都用些什么樣的技術(shù)棧和語言,如果你想進入這樣的公司,那就很簡單了,就選擇學(xué)這樣的技術(shù)和語言。
這樣選擇是不是太功利了?選擇不是應(yīng)該看興趣么?注意,這里選擇的前提可不是發(fā)展什么業(yè)余愛好,而是獲得安身立命的本領(lǐng),獲得競爭的相對優(yōu)勢。興趣,就是這件事里有些吸引你的東西,讓你覺這是“很好玩”的事。但有個通常說法是,一旦把興趣變成了職業(yè)也就失去了興趣。因為,職業(yè)里面還有很多“不好玩的”事。興趣能輕松驅(qū)動你做到前 50%,但按二八原則,要進入前 20%,興趣就不夠了。興趣給你的獎勵是“好玩”,但繼續(xù)往前走就會遇到很多“不好玩”的事,這是一種前進的障礙,這時功利,就是給予你越過障礙所經(jīng)歷的痛苦的補償。
...
想想你為什么要選擇學(xué)習(xí)一門編程語言,學(xué)習(xí)編程的一部分是學(xué)習(xí)語言的語法結(jié)構(gòu),但更大的一部分 —— 耗時更久且更讓你頭痛的部分 —— 是學(xué)習(xí)如何像一個程序員一樣解決問題。
有時這樣的選擇確實很難,因為我們?nèi)狈ψ銐虻男畔碜龀?**選擇。赫伯特·西蒙說:當(dāng)你無法獲得決策所需的所有信息時,不要追求“***決策”,而要追求“滿意決策”。定下自己的滿意標(biāo)準,找到一個符合滿意標(biāo)準的折中方案,就開始行動吧。
停留在原地糾結(jié),什么也不會改變。
【本文是51CTO專欄作者胡峰的原創(chuàng)文章,轉(zhuǎn)載請聯(lián)系作者本人獲取授權(quán)】