程序員最核心的競爭力是什么?
進(jìn)行社招面試時(shí),有一個(gè)問題幾乎是必問的:
你為什么要離開上一家公司?
其實(shí)這個(gè)問題主要是想試探一下求職者的核心訴求,并借此預(yù)估一下他在本公司工作的穩(wěn)定性。常見的答案也無非就是這么幾種:對(duì)薪酬不滿意、干得不爽,或者是想換個(gè)環(huán)境。
然而,我遇到過好幾個(gè)初次跳槽的求職者給出的答案是:「在原來的公司學(xué)不到技術(shù)」。
一聽到這個(gè),我就不由得嘆口氣:今天這一小時(shí)又算是交代了,這人基本上沒戲。因?yàn)楦鶕?jù)我的經(jīng)驗(yàn),這句話如果由工作不滿兩年的人說出來,很大概率這是個(gè)不會(huì)學(xué)習(xí)不會(huì)感恩又特別愛抱怨的人。
程序員最核心的競爭力——「學(xué)習(xí)力」
如果有人問我:你在面試程序員時(shí),最看中的是什么能力?那我的答案一定是:學(xué)習(xí)力。
互聯(lián)網(wǎng)時(shí)代的技術(shù)來得快,去得更快。就像Flash這樣曾經(jīng)雄霸天下多年的技術(shù),都有被人人唾棄的一天。如果沒有足夠強(qiáng)的學(xué)習(xí)能力,就無法跟上變化,被淘汰只是遲早的事。想想看,你苦心鉆研多年引以為傲的技術(shù),一夜之間就沒有用武之地了,難免會(huì)有一種「身體被掏空」的感覺。
學(xué)習(xí)力強(qiáng)的程序員敢大膽地體驗(yàn)嘗試新技術(shù),他們的技術(shù)棧始終在保持不斷地更新。他們能快速把握事物的本質(zhì),并判斷出它能用來做什么,不能用來做什么。他們擁抱技術(shù)升級(jí)和革命,因?yàn)樗麄儗W(xué)習(xí)并掌握新技術(shù)的速度比其他人更快,所以他們永遠(yuǎn)不用擔(dān)心失業(yè)。事實(shí)上,他們掌握的是「駕駛」和「學(xué)習(xí)駕駛」的技術(shù),而不是「駕駛XX牌汽車」的技術(shù)。
而學(xué)習(xí)力差的程序員呢?為了繼續(xù)停留在舊技術(shù)的舒適區(qū),他們往往會(huì)抵制新技術(shù)的推廣,甚至百般阻撓。因?yàn)槟菚?huì)使他們過去的經(jīng)驗(yàn)統(tǒng)統(tǒng)無效,只能和后來者站在同一起跑線上。抱死一個(gè)框架好幾年,脫離了框架啥都干不了的程序員實(shí)在太多了。事實(shí)上,這樣的人不能駕馭技術(shù),反而是被技術(shù)給奴役了。
同樣是自行車,為什么山地車比公路車更普及更流行?除了皮實(shí)耐用價(jià)格低外,主要是因?yàn)樗耐ㄟ^性好,什么泥地沙地都不在話下,上下馬路牙子跟玩一樣。而公路車呢?只能老老實(shí)實(shí)地跑在平路上。
公司不是學(xué)校
面對(duì)這些因?yàn)椤赶雽W(xué)點(diǎn)技術(shù)」而換工作的求職者,評(píng)價(jià)他們「不思進(jìn)取」貌似不太合適。但顯然他們的思維模式還是被學(xué)校洗腦的那一套,沒能真正地融入社會(huì)。也許他們認(rèn)為,學(xué)習(xí)就是要由老師手把手帶著,而自己之所以學(xué)不到技術(shù),就是因?yàn)闆]遇到一個(gè)好leader,能替自己設(shè)計(jì)好成長路線,指出所有重難點(diǎn),提供各種參考資料……
在中國傳統(tǒng)文化里,不管是匠人還是武師,收徒都要找毫無根基的幼童。這一方面是為了保持師父的絕對(duì)權(quán)威,方便貫徹落實(shí)教學(xué);另一方面是為了盡量延長學(xué)徒期,以考察徒弟的品性。拜師之后,徒弟便跟隨師父一起生活,經(jīng)過數(shù)年的言傳身教,這才得以出師。
師父收徒的核心訴求,是「傳承」自己的技藝和名聲,希望徒弟日后能做出一番成就來光耀師門。這就要求徒弟流動(dòng)性低、忠誠度高、歸屬感強(qiáng)。與其說是收徒,還不如說是在挑兒子,所以有句俗話叫作「一日為師,終身為父」。
然而公司是盈利性的商業(yè)組織,不是學(xué)校,更不是新手訓(xùn)練營。公司招聘員工的核心訴求,是生產(chǎn)出實(shí)實(shí)在在、對(duì)得起薪水的價(jià)值,而不是傳承技藝。公司希望員工入職前就具備工作的能力,至少在經(jīng)過短暫的培訓(xùn)和指導(dǎo)后就能獨(dú)立開展工作,正所謂「能干就干,干不了走人」。
一般情況下,為了使新人盡快進(jìn)入工作狀態(tài),公司會(huì)安排一位老員工來做一段時(shí)間的導(dǎo)師。但導(dǎo)師只有為你解惑的義務(wù),卻沒有教你技術(shù)的責(zé)任。 因?yàn)閷?dǎo)師自己手里還有做不完的工作,帶新人又沒什么利益可圖,憑什么為你提供私人教練級(jí)的服務(wù)?能有耐心聽完你的問題,指點(diǎn)一下方向,就已經(jīng)很不錯(cuò)了。
學(xué)習(xí)是自己的事,沒有人能替你去做。這就跟吃飯一樣,誰真的關(guān)心你吃沒吃、飽沒飽?就算你的親人再怎么關(guān)心你,也不能替你去吃。我們都知道,人不吃飯肯定是要餓死的,那你為什么不去給自己找吃的,卻在埋怨沒有人給你嘴里喂食呢?
為什么你學(xué)不到技術(shù)?
很多人在學(xué)習(xí)之路上已經(jīng)飽嘗了痛苦的滋味,因此在離開學(xué)校之后。他們不到萬不得已,是決然不會(huì)去學(xué)習(xí)的。你不妨回顧一下,從參加工作以來到現(xiàn)在,自己哪段時(shí)間里學(xué)習(xí)最認(rèn)真,進(jìn)步最明顯?
如果不出意外的話,應(yīng)該就是你找到的第一份工作的試用期。因?yàn)椴幌胧プ约和ㄟ^努力爭取到的工作機(jī)會(huì),所以你不得不逼自己打起十二份精神來學(xué)習(xí),結(jié)果居然以自己都無法想象的速度掌握了工作必備的知識(shí)和技能。
然而,大多數(shù)人在自己的能力滿足當(dāng)前工作的要求之后,就喪失了學(xué)習(xí)的動(dòng)力。下班之后要追劇,要玩游戲,要打球,要談戀愛……為啥我要學(xué)習(xí)?不學(xué)又不會(huì)失業(yè)!學(xué)這個(gè)有啥用?誰知道用得上用不上?等要用的時(shí)候再學(xué)唄!
其實(shí), 學(xué)不到技術(shù)最核心的原因只有一個(gè):動(dòng)機(jī)不足。至于環(huán)境條件,只是影響學(xué)習(xí)效果的因素之一,但絕對(duì)不是最重要的因素。在一個(gè)惡劣的環(huán)境里選擇放棄學(xué)習(xí)的人,不可能到了一個(gè)優(yōu)越的環(huán)境里就會(huì)去主動(dòng)學(xué)習(xí),因?yàn)樵谒麅?nèi)心深處對(duì)學(xué)習(xí)是抗拒的。
難道說換上了Macbook Pro和4k顯示器,坐在數(shù)千元的人體工學(xué)座椅上,下班后就會(huì)有興趣看框架源碼了嗎?看電影、打游戲不是更舒服一些?
在我看來,學(xué)習(xí)力的源泉就是好奇心,也就是對(duì)新知識(shí)的渴求,以及對(duì)探索未知的沖動(dòng)。我們的大腦是「用進(jìn)廢退」的,如果不定期給它輸送新鮮的知識(shí)營養(yǎng),它就會(huì)逐漸退化。有學(xué)習(xí)力的人一段時(shí)間不看書,不折騰點(diǎn)新玩意,大腦真的是會(huì)「餓」的。
程序員該怎么學(xué)習(xí)技術(shù)?
有的求職者覺得自己沒學(xué)到技術(shù),是因?yàn)楣静唤o機(jī)會(huì),或者缺乏條件:
「上次的H5讓小王做了,這次的微信小程序又給了小李……完全沒我什么事啊!」
「公司最大一張表才10W數(shù)據(jù),根本用不著分庫分表啊!」
……
學(xué)習(xí)技術(shù)最有效的方式是閱讀、實(shí)踐和交流。公司沒給你安排這方面的工作,那你自己都做了些什么呢?八小時(shí)之外的時(shí)間都用在哪了?有沒有讀源碼?有沒有看原版書?有沒有泡技術(shù)社區(qū)?有沒有嘗試最新流行的技術(shù)?有沒有嘗試把它們用在公司的項(xiàng)目上?有沒有主動(dòng)去接觸行業(yè)里使用這些技術(shù)的團(tuán)隊(duì)和大牛?
「看文檔」其實(shí)是最快的學(xué)習(xí)方法。對(duì)于自己工作中常用到的技術(shù),抽時(shí)間把官方文檔通讀一遍(其實(shí)篇幅都不大),絕對(duì)收獲滿滿。沒事的時(shí)候多翻翻自己使用的框架/系統(tǒng)/平臺(tái)的API,看看有哪些自己不知道或者沒用過的功能,想想這個(gè)功能可以用來做什么,能不能解決現(xiàn)存的問題,或者優(yōu)化當(dāng)下的解決方案。
如果你是前端工程師,通讀HTTP協(xié)議和ECMAScript標(biāo)準(zhǔn),就能秒殺95%的同行,不開玩笑。
「讀源碼」是深入學(xué)習(xí)開源技術(shù)的唯一途徑。只有理解了某個(gè)功能在底層是如何實(shí)現(xiàn)的,你才能真正把握它更適合用來做什么,不能用來做什么。正如不明顯汽車的構(gòu)造和原理,我們也能把車開好。而如果多少知道一點(diǎn),開起來就會(huì)更得心應(yīng)手。當(dāng)車出現(xiàn)問題時(shí),也不至于完全束手無策,只能蹲在路邊等待救援。
你一個(gè)框架用了N年了,卻連一行源碼都沒讀過?如果它是你女朋友,估計(jì)早該分手了。
「折騰」是學(xué)習(xí)任何技術(shù)的必經(jīng)之路。在有保護(hù)的環(huán)境下進(jìn)行大量的試錯(cuò),是最高效的學(xué)習(xí)方法?,F(xiàn)在虛擬機(jī)技術(shù)已經(jīng)那么成熟,VPS也很便宜,你為什么不分分鐘弄一個(gè),然后在上面花式作死呢?
聽說過無數(shù)次 rm -rf / 的事故,可你居然一次都沒試過?知道輸出啥樣子么?
公司給你提供的最有價(jià)值的東西,就是實(shí)戰(zhàn)的機(jī)會(huì)。 你所學(xué)習(xí)的技術(shù),最終需要通過工作來變現(xiàn)。你有機(jī)會(huì)接觸到真實(shí)的數(shù)據(jù),了解真實(shí)的用戶,觀察真實(shí)系統(tǒng)是怎樣運(yùn)轉(zhuǎn)的,積累真實(shí)的經(jīng)驗(yàn)……
然而,所謂的機(jī)會(huì),只屬于已經(jīng)提前準(zhǔn)備好的人。 不要等到工作都安排到你身上了再去學(xué)習(xí)。公司不是你的試驗(yàn)田,你也不該拿用戶當(dāng)小白鼠。公司不給你機(jī)會(huì),那只說明你還沒有準(zhǔn)備好。
后話
「吾生也有涯,而知也無涯 。以有涯隨無涯,殆已!」*——《莊子·內(nèi)篇·養(yǎng)生主第三》
技術(shù)世界就如同一片汪洋大海,細(xì)分領(lǐng)域真是多如牛毛。我們只是站在其中一個(gè)小島上,怎么確定自己該朝哪個(gè)方向進(jìn)發(fā)呢?
學(xué)習(xí)技術(shù)不外乎以下兩個(gè)方向:
1、廣度:整個(gè)使用鏈條由哪些環(huán)節(jié)構(gòu)成?每個(gè)環(huán)節(jié)的作用是什么?都有哪些類似的可替代方案?它們之間有什么區(qū)別?各自優(yōu)劣點(diǎn)是什么?……
2、深度:這個(gè)「技術(shù) / 產(chǎn)品」的本質(zhì)是什么?都能做什么?運(yùn)作原理是什么?底層是如何實(shí)現(xiàn)的?可以做怎樣的改進(jìn)?……
不管你在做什么工作,都應(yīng)該先把自己每天都要用的核心技術(shù)做到一定深度,再去拓展廣度。 「什么都知道一點(diǎn),但都不甚了解」是最可怕的,它會(huì)讓你誤以為自己已經(jīng)很NB了。
學(xué)習(xí),是一輩子的事。