20年工齡技術(shù)大牛的肺腑感言,字字珠璣!
技術(shù)不斷迭代,掌握其中一門(mén)技術(shù)就可以悠閑到老么?盲目搬磚就能以量變換取質(zhì)變么?世界的快速發(fā)展,本質(zhì)是什么?如何鑒別出有潛力的技術(shù)?如何突破自身學(xué)習(xí)和能力的瓶頸,更好做到自我管理?
本文是左耳朵耗子老師在「云加社區(qū)沙龍 online」的分享整理,詳細(xì)闡述了技術(shù)人應(yīng)如何面對(duì)焦慮,把控技術(shù),更好適應(yīng)未來(lái)技術(shù)發(fā)展的沖擊。
從我二十多年的工作經(jīng)歷來(lái)看,期間經(jīng)歷了很多技術(shù)的更新?lián)Q代,整個(gè)技術(shù)模式、業(yè)務(wù)模式也是一直變來(lái)變?nèi)ァ?/p>
所以我針對(duì)這一話題,談一談技術(shù)人員應(yīng)該怎樣適應(yīng)這樣一種變化?
第一,如果想要把控技術(shù),應(yīng)對(duì)這個(gè)世界的一些變化,需要大致知道這個(gè)世界的一些規(guī)律和發(fā)展趨勢(shì),另外還得認(rèn)識(shí)自己,自己到底適合做什么?
在這個(gè)趨勢(shì)和規(guī)律下屬于自己的發(fā)揮領(lǐng)域到底是什么?這是我們每個(gè)人都需要了解的。
第二,打牢基礎(chǔ),以不變應(yīng)萬(wàn)變,不管世界怎樣變化,我都能很快適應(yīng)它。
第三,提升成長(zhǎng)的效率,因?yàn)楝F(xiàn)在社會(huì)的節(jié)奏實(shí)在太快了,比二十年前快得太多,技術(shù)層出不窮,所以我們的成長(zhǎng)也要更有效率。
效率并不單指的快,效率是怎么樣更有效,是有用工除以總工,怎么學(xué)到更有效的東西,或者怎么更有效學(xué)習(xí),是我們需要掌握的另一關(guān)鍵。
認(rèn)識(shí)世界,了解自己
①世界發(fā)展的大趨勢(shì)
首先要認(rèn)識(shí)這個(gè)世界發(fā)展的趨勢(shì),人類社會(huì)目前處于第三次工業(yè)革命期間,信息化革命也正在進(jìn)行。
第一次工業(yè)革命是蒸汽機(jī)時(shí)代,即用蒸汽機(jī)代替勞動(dòng)力。第二次工業(yè)革命是內(nèi)燃機(jī),電力被發(fā)明也在第二次工業(yè)革命。
第三次工業(yè)革命就是今天,主要是以信息化、原子能還有空間技術(shù)以及一些生物應(yīng)用工程等。
我們可以看到,這三次工業(yè)革命圍繞著都是能源的迭代、能源的升級(jí)。從蒸汽時(shí)代到內(nèi)燃機(jī)時(shí)代,再到原子能。
②技術(shù)演進(jìn)的規(guī)律
為什需要這些動(dòng)力和能源?因?yàn)槿祟惏l(fā)明各種機(jī)器都是需要能源和動(dòng)力的,所以從蒸汽、內(nèi)燃到電力、原子能都是在不停的解決怎樣讓機(jī)器動(dòng)起來(lái)的問(wèn)題。
要讓機(jī)器動(dòng)起來(lái)必須有一個(gè)外力,所以能源變成很重要的事情,機(jī)器可以不知疲倦的做,但是能源要跟得上。所以解決能源問(wèn)題就是為了解決機(jī)器的自動(dòng)化。
今天的信息革命其實(shí)也是在解決自動(dòng)化,只要能夠被數(shù)字化了,就可以實(shí)現(xiàn)自動(dòng)化。
以通訊為例,最早是飛鴿傳輸、然后是無(wú)線點(diǎn)播傳輸,到現(xiàn)在通過(guò)互聯(lián)網(wǎng)通訊,都是在解決自動(dòng)化,自動(dòng)化的過(guò)程就是只有機(jī)器在不知疲倦工作。
自動(dòng)化可以帶來(lái)規(guī)模化,規(guī)?;梢詭?lái)成本極度的下降和效率極大的攀升,工業(yè)革命其實(shí)基本上都在干這些事。
接下來(lái)關(guān)注信息化革命,信息化革命分成三個(gè)階段:
1990 年代到 2000 年,這個(gè)時(shí)代叫兆比(MB)時(shí)代,是雅虎、新浪、搜狐、網(wǎng)易門(mén)戶網(wǎng)站的時(shí)代,這個(gè)時(shí)代就是 SP 互聯(lián)網(wǎng)提供商,把一些資訊數(shù)字化,然后發(fā)布到網(wǎng)絡(luò)上。
2000 年到 2010 年,這個(gè)時(shí)代叫多媒體或者是 UGC 時(shí)代,上網(wǎng)開(kāi)始變得普遍了,每個(gè)人手里的數(shù)碼設(shè)備開(kāi)始變得多了起來(lái),可以上傳照片,可以上傳視頻,甚至可以在網(wǎng)上做社交。
從 2010 年到 2020 年,這過(guò)去的十年是移動(dòng)互聯(lián)網(wǎng)時(shí)代,移動(dòng)互聯(lián)網(wǎng)只需要手機(jī)在線,不需要依靠電腦。
因?yàn)槭謾C(jī)隨時(shí)在線,所以個(gè)人的各種各樣的數(shù)據(jù)始終在被收集,只要用戶上網(wǎng)就會(huì)產(chǎn)生數(shù)據(jù),所以人的行為最終也被數(shù)字化了。
下一個(gè)十年,也許把手機(jī)丟了都可以。即使手機(jī)扔了,照樣可以數(shù)字化,這是因?yàn)榫€下有很多攝像頭、互聯(lián)網(wǎng)也可以虛擬化人類的很多行為。
整個(gè)世界的大趨勢(shì)基本上就是解決能源和自動(dòng)化。我們了解到這些東西就可以知道未來(lái)世界會(huì)向什么方面變化。
過(guò)去用機(jī)器代替牲口,或者代替人類操作。比如說(shuō)織布機(jī),一個(gè)人可以管幾百臺(tái)織布機(jī),數(shù)控機(jī)床以前靠人操作,后來(lái)數(shù)控就不需要人了,這是數(shù)字化帶來(lái)的一個(gè)更好體驗(yàn)。
說(shuō)得好聽(tīng)叫解放生產(chǎn)力,說(shuō)難聽(tīng)點(diǎn)就是讓人失業(yè),但是是讓勞動(dòng)密集型失業(yè),未來(lái)卻可能會(huì)讓知識(shí)密集型失業(yè)。
有一些知識(shí)密集型崗位,比如律師,未來(lái)是比較容易失業(yè)的,一些低端、中端的律師會(huì)被算法和機(jī)器取代。
因?yàn)槁蓭熜袠I(yè)里面很多東西是比較教條、公式化的,所有的案例、法律都是公開(kāi)的,這些東西是可以被機(jī)器快速學(xué)習(xí)的。
技術(shù)的演進(jìn)規(guī)律基本是自動(dòng)化加規(guī)?;瑥亩档统杀?,提升效率。這就是為什么世界變得越來(lái)越快,人類都快跟不上節(jié)奏的原因,主要是整個(gè)社會(huì)不斷被機(jī)器、數(shù)據(jù)所驅(qū)動(dòng)。
③技術(shù)世界的組成
技術(shù)世界是怎樣組成的,最大的基礎(chǔ)是什么?一般是理論,首先理論得突破,理論突破以后,產(chǎn)生質(zhì)變就能到下一個(gè)層次,理論突破了,就會(huì)有產(chǎn)生一些技術(shù)的基礎(chǔ),這些短期看起來(lái)可能賺不了錢(qián),但是沒(méi)有這些東西后面就轉(zhuǎn)不了。
像操作系統(tǒng),操作系統(tǒng)并不解決人類的業(yè)務(wù)問(wèn)題,但是如果沒(méi)有操作系統(tǒng),沒(méi)有網(wǎng)絡(luò),上傳應(yīng)用就不會(huì)存在。生存技術(shù)底層技術(shù)就像高速公路一樣,是不可或缺的。
不同人有不同的能力,不同的人有不同見(jiàn)解,不同的喜好。能看懂理論就進(jìn)入理論,能深入底層原理就到技術(shù)那邊去,想解決某項(xiàng)問(wèn)題,提升效率就去發(fā)明工具。
還有產(chǎn)品,產(chǎn)品是用戶體驗(yàn),想要提升一些體驗(yàn)可以去做產(chǎn)品。項(xiàng)目基本上是為了完成一或解決一個(gè)具體問(wèn)題,項(xiàng)目可能是這些技術(shù)工種里面最接近需求的,但是也是技術(shù)含量比較低的,生命周期可能會(huì)較短一些。
這個(gè)生命周期不是項(xiàng)目,操作系統(tǒng)任何產(chǎn)品都有生命周期,但是理論、基礎(chǔ)技術(shù)、工具它們所需要的基礎(chǔ)沉淀或者這方面技術(shù)人員的生命周期會(huì)比做項(xiàng)目的人員的生命周期要長(zhǎng)。
分工也是這么來(lái)的,不是說(shuō)做前端、后端、算法等這些基本的分工,而是更抽象的分工,這個(gè)分工是看每個(gè)人的能力還有他的個(gè)人喜好,這個(gè)世界就這么分出來(lái)的。
④世界需要的人才
這個(gè)世界需要什么樣的人?我們需要?jiǎng)诠?,勞工能使用技術(shù)就好了。還有另外一種是技工,技工不但是使用技術(shù),還可以把活兒做好,這是有技能的勞動(dòng)力。
勞工就是勞動(dòng)力,勞動(dòng)就好了,重復(fù)勞動(dòng)。勞工最大的問(wèn)題很有可能會(huì)被淘汰,因?yàn)樗窃谧鲆恍┲貜?fù)勞動(dòng),做這種重復(fù)勞動(dòng)的人很容易被淘汰。
技術(shù)工人能夠把技術(shù)弄好了,活兒做好,他屬于一種手藝人,隨著技術(shù)門(mén)檻的下降他可能就會(huì)被淘汰掉。
特種工人是必須了解原理和解決難題的一類工人,他們是解決比較難的、特定的一些技術(shù)問(wèn)題。
當(dāng)一種技術(shù)被淘汰,他并不容易被淘汰,因?yàn)樗恚砭褪墙鉀Q問(wèn)題的能力,是解決問(wèn)題的套路和方法。
關(guān)于設(shè)計(jì)和架構(gòu),設(shè)計(jì)和架構(gòu)人員主要是開(kāi)發(fā)一些工具,提升效率和提升用戶體驗(yàn),提升穩(wěn)定性、性能、代碼重用等,總的來(lái)說(shuō)就是為了降本增效。
這一類人的工作降低了技術(shù)得到門(mén)檻,他們把技術(shù)門(mén)檻降低了以后,就可以把這個(gè)技術(shù)普及開(kāi)來(lái),就可以由廣大勞工、技工、特殊工人使用了。
對(duì)于經(jīng)理,經(jīng)理主要是創(chuàng)造利潤(rùn),組織團(tuán)隊(duì)。不同的場(chǎng)景下,經(jīng)理也需要不同的技能。比如說(shuō)創(chuàng)造利潤(rùn),不同領(lǐng)域不同玩法,包括組織團(tuán)隊(duì)也是一樣。
不同時(shí)代帶人也是完全不一樣。就像我們 70 后和今天 00 后、90 后怎么帶他們,完全是兩碼事。因?yàn)榇蠹冶尘安灰粯?,?jīng)歷不一樣。
這就是我總結(jié)的世界需要哪些人才,我們了解這些東西以后大概就明白應(yīng)該如何適應(yīng)這個(gè)世界的變化。
⑤技術(shù)領(lǐng)域的 11 個(gè)等級(jí)
下圖所示是谷歌的 SRE 評(píng)分卡,這個(gè)評(píng)分卡主要把谷歌內(nèi)部技術(shù)領(lǐng)域分 11 個(gè)等級(jí)。
我們可以看到:
- 0 等級(jí)對(duì)于相關(guān)領(lǐng)域不熟悉,屬于剛?cè)腴T(mén)。
- 1 是讀懂這個(gè)技術(shù)的基礎(chǔ)知識(shí),能讀懂技術(shù)基礎(chǔ)就已經(jīng)不錯(cuò)了。
- 2 可以實(shí)現(xiàn)小的改變,有小的動(dòng)手能力,并能夠在簡(jiǎn)單指導(dǎo)下找到更多的細(xì)節(jié),只要簡(jiǎn)單指導(dǎo)一下就能跑了,有靈性。
- 3 基本懂這個(gè)領(lǐng)域,完全不需要?jiǎng)e人幫助。
- 4 對(duì)于這個(gè)技術(shù)領(lǐng)域非常熟悉,可以完成日常工作,這基本需要有一定的經(jīng)驗(yàn)的。對(duì)于這個(gè)技術(shù)領(lǐng)域有非常底層的深入和了解。
- 5 基本上能夠解決很多難題,相對(duì)前面的 0123 登記基本可以看做是勞工和技工層次,345 可以達(dá)到特種工人層次,到 678 基本就屬于設(shè)計(jì)和架構(gòu)了。
- 6 是從零開(kāi)發(fā)大規(guī)模系統(tǒng),掌握底層和內(nèi)部系統(tǒng)。
- 7 是了解和利用技術(shù)和相關(guān)原理,從根本上自動(dòng)化大量的系統(tǒng)管理運(yùn)維工作。
- 8 是對(duì)于邊角技術(shù)有深入了解,能夠設(shè)計(jì)部署并負(fù)責(zé)關(guān)鍵大規(guī)?;A(chǔ)設(shè)施,并且構(gòu)建自動(dòng)化設(shè)施。這里面的關(guān)鍵詞是基礎(chǔ)、底層原理、自動(dòng)化,這些東西是我們科技工作者或者程序員的技術(shù)特征,跟前文的分析是一致的。
- 9 和 10 是能夠在該技術(shù)領(lǐng)域出本書(shū),到理論級(jí)了,并和標(biāo)準(zhǔn)委員會(huì)的人一起工作,了解相關(guān)的標(biāo)準(zhǔn)和方法經(jīng)典的書(shū),不是隨便寫(xiě)的書(shū),至少要像 TCPIP 級(jí)別,或者像 Linux 高級(jí)編程,這種經(jīng)典圖書(shū)或者是教科書(shū)?;蛘呤悄軌虬l(fā)明技術(shù),這樣的人已經(jīng)走在絕大多數(shù)人前面了。
⑥認(rèn)識(shí)自己
我們除了要了解這個(gè)世界大概的一些趨勢(shì),還需要了解自己。
如果你需要能夠扛得住變化,首先你要找得到自己特長(zhǎng)。你要認(rèn)識(shí)自己的特長(zhǎng),找到自己的天賦,找到你在 DNA 里比別人強(qiáng)的東西,就拿你的 DNA 跟別人競(jìng)爭(zhēng)就好了。
所以你要找到自己可以干成的事,找到別人找你請(qǐng)教的事,你身邊人找你請(qǐng)教就是說(shuō)明你有特長(zhǎng)。這是找到自己特長(zhǎng)非常非常重要,揚(yáng)長(zhǎng)避短。
如果你沒(méi)有找到自己特長(zhǎng),就找自己有興趣的東西。什么叫興趣?興趣是再難再累都不會(huì)放棄的事。如果你遇到困難就會(huì)放棄不叫興趣,那叫葉公好龍。
如果你沒(méi)有特長(zhǎng),沒(méi)有興趣就要學(xué)方法。這種方法就是要有時(shí)間觀念,要會(huì)做計(jì)劃,要懂統(tǒng)籌、規(guī)劃。
對(duì)于做過(guò)的事情,犯過(guò)的錯(cuò)誤多總結(jié),舉一反三,喜歡自己找答案,自己探究因果關(guān)系,這是一些方法,自己總結(jié)一些套路。
如果你沒(méi)有特長(zhǎng),沒(méi)有興趣,也沒(méi)有方法,你還能做的事就是勤奮,勤奮注定會(huì)讓你成為一個(gè)比較勞累的人,也是很有可能被淘汰的人。
隨著你的年紀(jì)越來(lái)越大,你的勤奮也會(huì)越來(lái)越不值錢(qián)。因?yàn)槟贻p人會(huì)比你更勤奮,比你更勤奮、比你斗志更強(qiáng),比你能力更強(qiáng),比你要錢(qián)更少的人會(huì)出現(xiàn)。勤奮最不值錢(qián),但是只要你勤奮至少能夠自食其力。
以上就是為了應(yīng)對(duì)未來(lái)技術(shù)變化,作為個(gè)人必須要從特長(zhǎng)、興趣、方法一層一層篩選挖掘,如果沒(méi)有這些你就要努力和勤奮。
從我個(gè)人而言,我不算是特別聰明的人,但自認(rèn)為對(duì)技術(shù)還是比較感興趣的,難的我不怕。
有很多比較難啃的技術(shù),聰明點(diǎn)的人啃一個(gè)月就懂了,我不行,我可能啃半年。但是沒(méi)有關(guān)系,知識(shí)都是死的,只要不怕困難總有一天會(huì)懂的。最可怕是畏難,為自己找借口,這樣就不太好了。
打牢基礎(chǔ),以不變應(yīng)萬(wàn)變
①基礎(chǔ)緣何如此重要?
前面提到的谷歌評(píng)分卡中,我們看到了許多基礎(chǔ)原理方面的內(nèi)容,其實(shí)要應(yīng)對(duì)未來(lái)的變化,很重要的一點(diǎn)就是無(wú)招勝有招,以不變應(yīng)萬(wàn)變。
世界變化都是表面的東西,內(nèi)在的東西其實(shí)并沒(méi)有太多的變化。理論層面上變得不多,反而形式上的東西今天一個(gè)花樣,明天一個(gè)花樣,所以如果要去應(yīng)對(duì)這種變化,就一定要打牢自己的基礎(chǔ),提升內(nèi)功休養(yǎng)。
比如像編程的一些方式和套路,修飾模式原理本質(zhì),解耦,提升代碼的重用度等。
提升代碼重用度必須解耦,要跟現(xiàn)實(shí)解耦,提升抽象,這些都是一些技術(shù)基礎(chǔ)。無(wú)論用什么語(yǔ)言,都是這么做的。
打牢基礎(chǔ)就可以突破瓶頸,不打牢基礎(chǔ)沒(méi)有辦法突破瓶頸。在技術(shù)世界不要覺(jué)得量變會(huì)造成質(zhì)變,這是不可能的。
技術(shù)這個(gè)東西就像砌磚頭蓋房子,按照砌磚頭方式做代碼你不行的,因?yàn)槟悴欢?,你沒(méi)有辦法成長(zhǎng)上去的。
所以你必須學(xué)習(xí)基礎(chǔ)的理論知識(shí),如果不學(xué)這些基礎(chǔ)理論知識(shí),你在表面,當(dāng)這個(gè)技術(shù)有變化,就會(huì)發(fā)現(xiàn)以前學(xué)的都沒(méi)用了,要重頭學(xué)一遍。
掌握技術(shù)推理可以讓自己找到答案和知識(shí),基礎(chǔ)是抽象和歸納,很容易形成進(jìn)一步的推論。
我們學(xué)的很多技術(shù)實(shí)現(xiàn)都逃不脫基礎(chǔ)原理,不管是 Java,還是其他語(yǔ)言,只要用 TCP 用的都是相同的原理,逃不出范圍,只要抓住原理,甚至還可以自己推導(dǎo)一些技術(shù)。
②什么才算是基礎(chǔ)技術(shù)?
一些技術(shù),比如程序語(yǔ)言,像 C 和 C++,原理主要就是編譯、內(nèi)存管理、指針等。Java 語(yǔ)言原理基本是在虛擬機(jī) JVM、垃圾回收、JVM 字節(jié)碼等。
Python 基本在解釋器,Go 語(yǔ)言就是并發(fā),基本都是這些,內(nèi)存是怎么管的,Java 里面為什么沒(méi)有指針,Java 虛函數(shù)是什么意思?......
你需要了解重要類庫(kù)的事件,它的數(shù)據(jù)結(jié)構(gòu)是紅黑樹(shù),還是哈希表?還有代碼設(shè)計(jì),并發(fā)、異步,編程范式、設(shè)計(jì)模式。
操作系統(tǒng)就是計(jì)算原理,Linux、網(wǎng)絡(luò)協(xié)議、還有數(shù)據(jù)庫(kù),像數(shù)據(jù)庫(kù)設(shè)計(jì)的范式,后臺(tái)原理都要搞清楚。
中間件 Kafka 是什么原理,你要了解里面的原理,還有一些東西巨耗內(nèi)存。網(wǎng)管代理,調(diào)度系統(tǒng)等等,理論知識(shí)算法和數(shù)據(jù)結(jié)構(gòu)......
前文所述,這個(gè)世界一直在做自動(dòng)化,所以未來(lái)一定會(huì)自動(dòng)化一些知識(shí),因此算法和數(shù)據(jù)很重要,數(shù)據(jù)庫(kù)設(shè)計(jì)范式、網(wǎng)絡(luò)模型這些都是理論知識(shí),理論知識(shí)可以讓你從本質(zhì)了解很多的東西。
這些知識(shí)其實(shí)就是一個(gè)計(jì)算機(jī)科學(xué)專業(yè)的學(xué)生他所要學(xué)習(xí)的原理,除了中間件可能學(xué)校沒(méi)有教,但是一般學(xué)生時(shí)代學(xué)這些東西也沒(méi)必要,我們的一些學(xué)校教得也很糟糕,一些老師可能都不行,他怎么能教學(xué)生呢?
而且教學(xué)生的書(shū)都是自己寫(xiě)的,凡是世界上最優(yōu)秀的教課書(shū)不用了,一定要自己寫(xiě)一本。
我自己就遭遇過(guò)這樣的經(jīng)歷,丹尼斯 C 語(yǔ)言程序設(shè)計(jì)不用了,一定要自己弄一本,譚浩強(qiáng)的語(yǔ)言設(shè)計(jì),我也不明白為什么這樣,人家好的不用,非要用自己的,然后里面錯(cuò)誤百出。
拿不出原汁原味的東西,你的學(xué)習(xí)效率一定是下降的。在大學(xué)基本都是這樣的。這些基礎(chǔ)技術(shù)大概需要四五年的時(shí)間堆疊。
我工作二十年了,這二十年來(lái)基本還是這些原理沒(méi)變,無(wú)論形式怎么變,但是核心永遠(yuǎn)還是這些,理論創(chuàng)新很難,這是以不變應(yīng)萬(wàn)變。
③如何識(shí)別好的技術(shù)?
有了這些理論知識(shí)以后,離實(shí)際操作還會(huì)有一些距離。現(xiàn)在技術(shù)這么多,什么才是好技術(shù)?
首先了解這個(gè)技術(shù)解決什么問(wèn)題。如果這個(gè)技術(shù)能解決很普遍的問(wèn)題,那么這個(gè)技術(shù)可能就很牛,如果這個(gè)技術(shù)只是解決很小眾的問(wèn)題,這個(gè)技術(shù)可能也就隨之小眾。
技術(shù)一定降低技術(shù)門(mén)檻,提高開(kāi)發(fā)效率,或者提升穩(wěn)定性,基本所有的技術(shù)更迭都是為了這些東西。所以,技術(shù)越普遍越好。
Lisp 大家都說(shuō)很好,但是 Lisp 解決的只是一種理論上的問(wèn)題,其實(shí)并不具有普遍性。我們可以學(xué) Lisp,但是你要指著它吃飯就不太行了。
我們需要提升什么樣的能力?能夠進(jìn)行更為復(fù)雜的計(jì)算?能夠自動(dòng)化更為復(fù)雜和困難的事情,基本上所有技術(shù)都是這樣按這樣的方向發(fā)展的。
哪一些技術(shù)有潛力能成為主流技術(shù)?好的技術(shù)不一定能成為主流技術(shù)。成為主流技術(shù)特征通常來(lái)說(shuō)有三點(diǎn):
- 有大公司背書(shū)
- 有殺手級(jí)的應(yīng)用
- 有強(qiáng)大的社區(qū)
這樣的技術(shù) Java 稱得上是第一,所有大公司都在 Java,而且 Java 有前端、有手機(jī)端、有后端,各種殺手級(jí)應(yīng)用一堆又一堆。
還有強(qiáng)大的社區(qū),而且 Java 是企業(yè)級(jí)的,所以可以看到像交易型的系統(tǒng)基本都是 C、C++、Java 這條線還有多 .NET 也是這條線,要用開(kāi)源,生產(chǎn)率還想高一點(diǎn)、系統(tǒng)穩(wěn)定點(diǎn)就用 Java。
還有像 Go 語(yǔ)言,也有大公司背書(shū),殺手級(jí)應(yīng)用,社區(qū)也比較強(qiáng)大,社區(qū)把各種 Java 中間件往 GO 語(yǔ)言遷移,這些都是大技術(shù)。
那么 PHP 怎么樣,Node.js 怎么樣,這些都是腳本型語(yǔ)言,腳本型語(yǔ)言我并不覺(jué)得有多好。
PHP 未來(lái)也不會(huì)有太多的可能性。它們倒是降低技術(shù)門(mén)檻了,但是其實(shí)并不能解決更復(fù)雜的問(wèn)題。要用 PHP 搞架構(gòu)也挺困難的。
為什么 Java 更容易做架構(gòu),因?yàn)橐话銇?lái)說(shuō)一個(gè)架構(gòu)系統(tǒng)通常要有通訊系統(tǒng),很多人覺(jué)得架構(gòu)就是搞好這些系統(tǒng)和通訊。
系統(tǒng)間的通訊就是一個(gè)系統(tǒng)集成,架構(gòu)里面還有控制系統(tǒng),像服務(wù)畫(huà)像、一些配置管理和配置中心,還有一些網(wǎng)管、流量分發(fā),還有一些調(diào)度系統(tǒng),控制系統(tǒng)和一些流量分發(fā)系統(tǒng)。
還有像 DIVE 的 CICD 就是切流量的,還有數(shù)據(jù)系統(tǒng),一個(gè)架構(gòu)基本有控制系統(tǒng)、流量系統(tǒng)、調(diào)度系統(tǒng)、狀態(tài)系統(tǒng)、數(shù)據(jù)系統(tǒng)很多系統(tǒng)組成,以及通訊系統(tǒng)。
Java 社區(qū)里面這些東西最全,所以使用 Java 就比較方便。
我們?cè)趺窗芽丶夹g(shù),怎么識(shí)別什么是“好的技術(shù)”。不是學(xué)術(shù)上的好,而是能夠更為實(shí)用、務(wù)實(shí)的技術(shù)。
作為程序員,技術(shù)不是職業(yè),我們還是要甄別更為普及的,更為易用比較廣的技術(shù)。
但是無(wú)論怎么樣,基礎(chǔ)技術(shù)都是基本不變的。所以可以看到很多高級(jí)公司不是特別看重你用什么語(yǔ)言,像微軟、谷歌、Facebook 等基本都不是很看重,但是要員工把基本原理弄明白,因?yàn)檫@是你是否能成長(zhǎng)的重要依據(jù)。
提升自身成長(zhǎng)效率
技術(shù)在不斷更新,我這二十年基本也都是在不斷追趕,如果你跟進(jìn)慢了肯定就不行,所以必須要跟進(jìn)的快一些。
首先要有學(xué)習(xí)的效率,怎么樣提升你學(xué)習(xí)的效率,你若是學(xué)習(xí)效率提不上來(lái),其實(shí)時(shí)間一長(zhǎng)了就會(huì)被甩到后面去了。
下圖展示的是學(xué)習(xí)金字塔,如果你采取的是聽(tīng)講得到形式學(xué)習(xí),最后可能只有 5% 的知識(shí)留存。
你自己讀書(shū)可以留下 10%,看一些視頻有 20% 留下,看別人演示做一遍有 30% 留下......
為什么這些效果都很差呢?因?yàn)檫@些都是屬于被動(dòng)學(xué)習(xí),不經(jīng)過(guò)自己的思考就是被動(dòng)學(xué)習(xí)。
但是主動(dòng)參與學(xué)習(xí),比如說(shuō)在討論組里面積極的跟別人討論問(wèn)題能夠留下 50%。如果你能夠做出實(shí)踐,親自踩踩坑,就會(huì)留下 75%。
如果你教別人,就有 90% 知識(shí)留存,所以學(xué)習(xí)知識(shí)的過(guò)程可以想象一下講給其他人聽(tīng)的過(guò)程。
學(xué)習(xí)方法
學(xué)習(xí)方法要主動(dòng)學(xué)習(xí),主動(dòng)學(xué)習(xí)我們稱之為深度學(xué)習(xí),如果你不能深度學(xué)習(xí),即使十年時(shí)間花費(fèi)出去,也沒(méi)有任何意義。
①挑選一手知識(shí)和信息源
對(duì)于學(xué)習(xí)方法:第一我們一定要到知識(shí)源去挑選知識(shí),知識(shí)信息源非常關(guān)鍵,二手信息丟失太大了,譚浩強(qiáng)寫(xiě)的書(shū)就丟失太多信息了。
目前計(jì)算機(jī)一手知識(shí)基本都是國(guó)外的,所以英文非常重要。我鼓勵(lì)大家一定讀第一手的資料。
如果你英語(yǔ)有問(wèn)題,至少要看翻譯過(guò)來(lái),最好是原汁原味翻譯的,不要我理解了給你講那種,那種也是被別人嚼一遍再講給你。
你沒(méi)有體會(huì),而是別人帶著你,別人的體會(huì)會(huì)影響你,也許你的體會(huì)會(huì)比他更好,因?yàn)槭悄阕约嚎偨Y(jié)出來(lái)的東西,所以知識(shí)源很重要。
②注意原理和基礎(chǔ)
第二要注重基礎(chǔ)原理。雖然可以忘記這個(gè)技術(shù),但是原理記在心里,我可以徒手實(shí)現(xiàn)出來(lái),而且通過(guò)原理可以更快學(xué)習(xí)其他類似的技術(shù)。所以原理很重要!當(dāng)你學(xué)會(huì) C、C++ 要學(xué) Java 和 GO 都很快。
③使用知識(shí)圖譜
一定要學(xué)會(huì)使用知識(shí)圖,把知識(shí)結(jié)構(gòu)化。大家都說(shuō) C++ 最難學(xué),C++ 三大塊,第一是解決 C 語(yǔ)言的問(wèn)題,第二面向?qū)ο?,第三?STL;C 語(yǔ)言有指針問(wèn)題、有宏問(wèn)題。
對(duì)于 TCP 協(xié)議,首先第一個(gè)要記住狀態(tài)圖,怎么建立連接,怎么斷連接,狀態(tài)怎么變遷。TCP 沒(méi)有連接,是靠狀態(tài)維護(hù)連接的。
其次,要了解 TCP 怎么保證可靠性,就是丟包以后怎么重傳。
然后,重傳會(huì)帶來(lái)?yè)砣刂?,發(fā)的速度和收的速度不一定對(duì)等,或者網(wǎng)絡(luò)上的速度不一定對(duì)等,涉及到擁塞控制。
這就是 TCP 基本三大塊,順著這個(gè)脈絡(luò)一點(diǎn)點(diǎn)往下想,比如說(shuō)怎么做擁塞控制,滑動(dòng)窗口消息技術(shù),怎么測(cè)試重傳等等類似這樣的有很多算法。所以你用知識(shí)圖關(guān)聯(lián)就可以進(jìn)行順藤摸瓜。
不需要記所有知識(shí),那些手冊(cè)的知識(shí)不需要記,你知道在哪里能找到就可以了。
你腦子里面要有地圖,學(xué)一個(gè)東西就跟在城市生活一樣,閉上眼睛就知道地圖,A 點(diǎn)到 B 點(diǎn)怎么去大概方向要知道。
我在北京我去廣州,廣州在南邊,我大概坐飛機(jī)還是火車(chē)要心里有數(shù)。雖然不用記住所有的細(xì)節(jié),但是大概知道我去找誰(shuí),我就可以知道怎么找到那個(gè)地方。
你不需要記住所有知識(shí),記住大概地圖,要記住基本的方法和原理,知道在哪里可以找到他就可以了。
④學(xué)會(huì)舉一反三
舉一反三,就是用不同方法學(xué)一個(gè)東西,比如說(shuō)學(xué) TCP 協(xié)議,看書(shū)是一種方法,編程是另外一種方法,還有用做 Debug 去看的,用不同方法學(xué)一個(gè)東西會(huì)讓你更加熟悉,你學(xué)一個(gè)知識(shí)的同時(shí)把周邊也學(xué)了。
比如說(shuō)學(xué)前端能不能把 HTCP 學(xué)一下,比如說(shuō)長(zhǎng)連接、短連接,包括 hp1、hp2 有一些不一樣的東西。
⑤總結(jié)和歸納
一定要學(xué)會(huì)總結(jié)和歸納,形成自己的思維框架、自己的套路、自己的方法論,以后學(xué)這個(gè)東西應(yīng)該怎么學(xué)。
就像學(xué)一門(mén)新的語(yǔ)言,不管 GO 語(yǔ)言,還是 Rust 語(yǔ)言,第一件事情就是了解內(nèi)存是怎么管理的,第二是范性怎么管,并發(fā)怎么弄。還有一些抽象怎么弄,比如說(shuō)怎么解耦,怎么實(shí)現(xiàn)多態(tài)?
套路這種東西只有學(xué)的多了以后才能形成套路,如果你只學(xué)會(huì)一門(mén)語(yǔ)言不會(huì)有套路,你要學(xué) C、C++,每年學(xué)門(mén)語(yǔ)言,不用學(xué)多精。
你思考這個(gè)語(yǔ)言有什么不一樣,為什么這個(gè)這種有玩法,那個(gè)有那種玩法,這些東西思考多了套路方法論就出來(lái)了。
比如說(shuō) Windows 和 Linux 有什么不同,Linux 和 UNIX 又有什么不同?只有總結(jié)自己的框架、套路和方法,這些才永遠(yuǎn)不會(huì)被淘汰。
⑥實(shí)踐和堅(jiān)持
剩下就是多做多練,多堅(jiān)持,只有實(shí)踐才會(huì)有經(jīng)驗(yàn),只有鍛煉了才能夠把自己的脂肪變沒(méi),所以要把知識(shí)變成技能必須練,就像小學(xué)生學(xué)會(huì)加減乘除,還是要演練,必須多做題,題目做得多了,自然掌握得好。
要挑選好的知識(shí)源,注重原理技術(shù),有一些原理的基礎(chǔ)的書(shū)太枯燥,但是我告訴你學(xué)習(xí)基礎(chǔ)太值得投入時(shí)間,搬磚賺幾十元不值得,因?yàn)橘嵉氖切量噱X(qián),老了就賺不了,必須要賺更有能力的錢(qián),這是學(xué)習(xí)投資。
主動(dòng)管理
關(guān)于成長(zhǎng)我們還需要主動(dòng)管理,不主動(dòng)管理會(huì)導(dǎo)致什么結(jié)果呢?被動(dòng)管理,天天被人追著,沒(méi)有效率。
所以要學(xué)會(huì)主動(dòng)管理,要想應(yīng)對(duì)未來(lái),把控變化,不主動(dòng)管理,就不會(huì)有好的效率,因?yàn)楸粍?dòng)就會(huì)被別人牽著鼻子走。
①管理時(shí)間
主動(dòng)管理第一是要學(xué)會(huì)時(shí)間管理,不要被別人打斷。如果你要干一個(gè)很重要的事情,建議開(kāi)啟手機(jī)勿擾模式,或者直接把手機(jī)關(guān)機(jī)。
如果有一些重要的事就通知大家我現(xiàn)在干什么事情,從幾點(diǎn)到幾點(diǎn)需要全身心不要打擾我。
像我以前在一些大公司里面,如果我不想被別人打擾,就發(fā)郵件,就說(shuō)不要打擾我。我害怕別人止不住打擾我,這是非常重要的。
你一天會(huì)領(lǐng)到很多作業(yè),有很多事情要做,我的經(jīng)驗(yàn)就是最短作業(yè)優(yōu)先,有一些不是最緊急先做,我覺(jué)得先做短的,短的很快搞完了,后面會(huì)有大塊大塊時(shí)間,為了省出大塊大塊時(shí)間,要把這些短作業(yè)清一遍。這些短作業(yè)其實(shí)最討厭。
抓重點(diǎn),一天干不了太多事情,所以一定要抓最重要的事情。另外想清楚再做,慢一點(diǎn),欲速則不達(dá),快速做完了要返工,又被別人管理。
你做不好,別人天天打擾你,這個(gè)問(wèn)題,那個(gè)問(wèn)題,你怎么主動(dòng)管理?主動(dòng)管理時(shí)間就是想清楚再做別返工。
②管理需求
管理需求,通過(guò)了解“XY 問(wèn)題”,可以讓你減少很多工作量。“XY 問(wèn)題”就是有個(gè)人在網(wǎng)絡(luò)上問(wèn)別人,我怎么截取字符串最后三位?很多人提供了各種辦法,然后相互爭(zhēng)論哪種辦法更好。
這個(gè)時(shí)候有個(gè)人提問(wèn):“為什么截取字符串最后三位?”,提問(wèn)者說(shuō):“因?yàn)槲乙梦募麛U(kuò)展,就是操作系統(tǒng)文件擴(kuò)展名”,那個(gè)人說(shuō):“操作系統(tǒng)文件擴(kuò)展名不一定三位,有可能兩位,有可能四位,有可能不知道多長(zhǎng)”。
這就是“XY 問(wèn)題”,這個(gè)世界絕大多數(shù)給你 X 問(wèn)題,就是告訴你字符串最后三位怎么解,但是其實(shí) X 問(wèn)題是什么?
文件名擴(kuò)展。這種問(wèn)題太多了,產(chǎn)品經(jīng)理和領(lǐng)導(dǎo)經(jīng)常性不會(huì)告訴你 X,他就會(huì)覺(jué)得 Y 可以解決 X,他屏蔽了很多信息,讓你做 Y,你不知道怎么做,做出來(lái)以后達(dá)不到效果又讓你改。
X 問(wèn)題其實(shí)很重要。產(chǎn)品經(jīng)理給你的需求很多,需要問(wèn)他為什么做這個(gè),要達(dá)到什么目標(biāo),做成什么效果?
然后你再告訴他,要達(dá)到這個(gè)功能為什么用這個(gè)方法,為什么不用一個(gè)更好的方法呢?這就是主動(dòng)管理。
③管理上級(jí)
另外要學(xué)習(xí)抓重點(diǎn),區(qū)分必要性和科學(xué)性。需求有一些東西不一定要一次做好,有時(shí)候先抓最重點(diǎn)的,多問(wèn)問(wèn)為什么要做,解決什么問(wèn)題,達(dá)到什么目標(biāo)。
管理好需求,實(shí)在忙不過(guò)來(lái)說(shuō)只能做三個(gè)需求,撐死了要做第四個(gè)需求,如果讓我一個(gè)星期做五個(gè),我可能保證不了質(zhì)量了,出了問(wèn)題你們自己要擔(dān)著,就是出 Bug 什么的。
這個(gè)就是向上管理。向上管理不是說(shuō)讓你說(shuō)“不”,我們永遠(yuǎn)不要說(shuō)“不”,說(shuō)“不”以后不管上級(jí)和用戶都會(huì)討厭你,但是我們要說(shuō)有條件的“是”。
我們要給多個(gè)選項(xiàng),你讓我一周做五個(gè)需求,要給他三選項(xiàng):
我一周做不了五個(gè),我可以做三個(gè),然后我做哪三個(gè),抓重點(diǎn)。
給我兩人,我做五個(gè),你看行不行?
一周可以做五個(gè),但是質(zhì)量不保證,可能會(huì)有很多的 Bug,你愿意不愿意接受?
他把球扔給你了,你再把球扔出去,壓力給到他,讓他一起跟你承擔(dān)這個(gè)壓力,怎么讓他一起承擔(dān)這個(gè)壓力呢?這就是條件。
要把條件甩給他,我肯定做,但是你要承擔(dān)這個(gè)條件,就是上去承擔(dān)做事情的后果,要么給我時(shí)間,要么就犧牲質(zhì)量,又好又快肯定需要條件。如果不費(fèi)口舌,未來(lái)就會(huì)累得要死,一定學(xué)會(huì)費(fèi)口舌。
④管理爭(zhēng)論
第四是管理爭(zhēng)論。有時(shí)候爭(zhēng)論不休是挺痛苦的事情,你說(shuō)服不了他,他說(shuō)服不了你,這個(gè)事情到老板那邊去了,老板也說(shuō)不清楚,所以說(shuō)主動(dòng)說(shuō)服對(duì)方是很重要的事情。
你要站在很高的格局,找到一些數(shù)據(jù)說(shuō)服對(duì)方。更高的格局什么意思呢?他來(lái)找你實(shí)現(xiàn)需求 ABC,你要跟他說(shuō),我們更高的格局是什么?用戶要滿意,用戶要滿意肯定不是 ABC,可能是 XYZ,這就是更高的格局。
如果只是在這些細(xì)節(jié)糾纏,其實(shí)誰(shuí)也說(shuō)服不了誰(shuí)。比如說(shuō)用戶是更高的格局,老板來(lái)了,CEO 來(lái)了也干不過(guò)用戶,因?yàn)橛脩羰翘湾X(qián)的。所以站在用戶的角度會(huì)是比較好的,站在掙錢(qián)角度也是格局比較高的地方。
所以如果你想提升你的效率,你就需要主動(dòng)管理時(shí)間,主動(dòng)管理工作,主動(dòng)管理你的上級(jí)甚至你的平級(jí),甚至你的用戶,還要管理好你的爭(zhēng)論。
當(dāng)你全面主動(dòng)操控這些事情的時(shí)候,別說(shuō)技術(shù)把控力了,其實(shí)你已經(jīng)在在 PUA 他們,在精神控制他們。
否則你是被他們?cè)?PUA,996 就是一種 PUA。所以主動(dòng)管理誰(shuí)的效率高,主動(dòng)人高,被動(dòng)人一定低。
總結(jié)
所以我們看學(xué)習(xí)方法包括整體提升效率,基本都需要主動(dòng),我們的學(xué)習(xí)要變主動(dòng),找一些方法,我們的管理也要變主動(dòng),找一些方法。
往大的方向,我們需要看到整個(gè)世界的發(fā)展趨勢(shì),往小的地方,平時(shí)留意整個(gè)公司的發(fā)展趨勢(shì)。整個(gè)公司是業(yè)務(wù)是什么?怎么進(jìn)行的?創(chuàng)造什么價(jià)值?解決什么問(wèn)題?這些都是很實(shí)在的。
當(dāng)你知道了這些東西以后就會(huì)潛移默化改變你的選擇你的選擇,你行為方式,你的決定,包括你挑選什么樣的技術(shù)等。
再結(jié)合你如何認(rèn)識(shí)你自己,你有什么樣的特長(zhǎng),你感興趣的東西,你懂什么樣的方法,你知道往什么樣的地方付出.....
這些問(wèn)題合起來(lái)就可以找到自己的一條路,在自己最適合的領(lǐng)域上。最后你還需要有一些比較科學(xué)的學(xué)習(xí)方法,還有一些比較科學(xué)的獨(dú)立的管理方法,這樣就可以面對(duì)焦慮、把控技術(shù)。
作者:陳皓(左耳朵耗子)
簡(jiǎn)介:MegaEase 創(chuàng)始人,騰訊云最具價(jià)值專家(TVP)。資深程序員,酷殼 coolshell.cn 博主。前亞馬遜高級(jí)研發(fā)經(jīng)理,阿里巴巴資深架構(gòu)師技術(shù)總監(jiān)。目前創(chuàng)業(yè),公司 MegaEase 創(chuàng)始人,致力于為企業(yè)用戶提供一個(gè)可以不改一行代碼就可以提高系統(tǒng)性能和穩(wěn)定性的產(chǎn)品,即 Cloud Native 和微服務(wù)調(diào)度。