程序員的群體性焦慮高壓下,如何實現(xiàn)個體的線性增長?
很多人一直在學(xué)習(xí),卻也一直在焦慮:程序員 40 歲后該如何發(fā)展?他們在感慨現(xiàn)在 IT 的技術(shù)浪潮拍打的太快,技術(shù)人員總在奔波疲命,每天也沒有多少增進,沒有多長時間看磚頭書,甚至用善意的謊言安慰自己:編程主要靠思想,語言和平臺無所謂。
但其實,作為一個程序員,應(yīng)當(dāng)要有屬于自己的正確的線性成長路徑。
請在 WiFi 環(huán)境下觀看,土豪隨意
1. 我的個人體驗和探索
我大學(xué)是在上海交通大學(xué)里面唯一一個叫交通的專業(yè),學(xué)習(xí)航運、集裝箱和容器。因為感興趣和為了好找工作,又學(xué)習(xí)了第二專業(yè),計算機專業(yè)。沒有學(xué)桌面軟件制作、網(wǎng)站制作,而是主要學(xué)習(xí)操作系統(tǒng)、計算機網(wǎng)絡(luò)、編譯原理、算法與數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)庫、計算機組成與系統(tǒng)結(jié)構(gòu),***考研也是考的這個方向。
畢業(yè)之后,首先面對的***道關(guān)卡就是面試。我在這給大家總結(jié)了關(guān)于面試的幾個套路。
***類:薪資比較低的企業(yè),面試的時候注重會不會做個網(wǎng)站,甚至上手做個東西出來。其實這類企業(yè)是在找代碼熟練工。
第二類:越是薪資高的企業(yè),越重視基礎(chǔ)知識的考察?;A(chǔ)好,可塑性強,培養(yǎng)起來成長快。
第三類:最牛的公司一般面試考的是算法和思路。
說在話外:別怪 HR 太狠心,面試題目太奇葩?!督?jīng)濟學(xué)的思維方式》一書中寫到,所有的稀缺品都需要以某種方式分配,必須建立某種規(guī)則和制度,對那些要求得到稀缺品的人加以甄別,決定誰該得到多少。價格只是最常用的一種方式。所以,面試前做好充足的準(zhǔn)備很重要。
2. 面試中,簡歷應(yīng)該是什么樣?
簡單:最長不要超過兩頁。
量化:多寫能夠數(shù)字化、能量化的東西,少寫一些模糊的東西。比如寫到項目的時候,多說一些項目多大規(guī)模,處理多大的數(shù)據(jù)量,管理多少臺機器,處理速度如何,實時性如何,使用什么技術(shù)等等,少說一些諸如“和團隊精誠合作,能吃苦耐勞,善于溝通,什么北方人的豁達,什么南方人的細致”等,這些東西在簡歷中不能提供任何有價值的信息。
清晰:整個簡歷盡量使用表格、列表形式,而非大段大段的描述性語言,多用專業(yè)詞匯。
提取亮點:首先你需要列出你做過的所有的項目,對于每一個項目,你可能做了很多細碎的工作,你需要做的是,從中發(fā)掘出你覺得有技術(shù)含量,能讓看簡歷的人眼睛一亮的地方。
由點到面:上面的亮點直接寫上去,面試官一般會問這樣的問題:你知道實現(xiàn)這個都有哪些方式?為什么選擇用這個方式?各有什么優(yōu)劣勢?你需要將你的知識面擴展開來。比如負載均衡,LACP 可以做,等價路由可以做,F(xiàn)5 可以做,LVS 可以做,haproxy 可以做,nginx 可以做,OVS 可以做,iptables 可以做嗎?
從面到體:面試官還可能問,你用了這么久多線程,它們背后的原理是什么?所以你還應(yīng)該了解背后的原理,如果你用的是 Java 多線程,各種線程同步機制的原理總應(yīng)該清楚。例如 ip addr 命令,里面的很多細節(jié)其實往往都不注意。
理論升華:上面說的都是招式,接下來應(yīng)該練一練內(nèi)功了??梢钥匆恍┙?jīng)典書籍,這樣除了會用,還能說的頭頭是道。比如《深入理解 Linux 網(wǎng)絡(luò)技術(shù)內(nèi)幕》《Concurrent Programming in Java》等等。
3. 開源軟件上手套路
在這個過程中,我為什么會不斷地追求核心代碼,分析代碼,其實我就是追求最熟悉,求最核心、最本質(zhì),哪怕最困難,路最遠。當(dāng)你發(fā)現(xiàn)某一個技術(shù)在未來會成為一個很好的方向,你一定要攻克它,且一定要看經(jīng)典,讀源文檔,在這里給大家分享一個開源軟件上手套路:
4. 程序員有哪些發(fā)展維度?
技術(shù)深度
有的人會選擇更細的技術(shù)分支進行更深入的研究,繼續(xù)擴大自己在技術(shù)深度這一維度的優(yōu)勢。此類人職業(yè)規(guī)劃簡單直接,就是成為某項技術(shù)的大牛,不希望找過多的需求結(jié)合點,就像郭靖一樣,就是降龍十八掌一掌一掌練下去,就靠一技之長行走江湖。
架構(gòu)廣度
有的人希望對整個系統(tǒng),從前端到后端,從底層到上層,都能夠有一定程度的了解,也即開始擴展架構(gòu)廣度這一維度。此類人對每一項技術(shù)都會了解到一定的深度,能夠搭建起整個系統(tǒng),他們的職業(yè)規(guī)劃就是成為架構(gòu)師。
業(yè)務(wù)知識
有的人做軟件是面向某個行業(yè)的,比如金融、證券、財務(wù)、航運、電力等。他們除了技術(shù)深度形成一定的優(yōu)勢外,也開始慢慢了解這些行業(yè),于是擴展了另外一維——業(yè)務(wù)知識。他們能夠迅速理解這些行業(yè)的業(yè)務(wù)需求,并轉(zhuǎn)換成為軟件需求。他們的職業(yè)規(guī)劃就是需求分析師,他們需要更系統(tǒng)的學(xué)習(xí)業(yè)務(wù)方面的專業(yè)知識,以期能準(zhǔn)確把握需求。
管理水平
有的人在成為技術(shù)主力后,由于有一定的溝通和組織能力,開始帶新人,領(lǐng)導(dǎo)一些人完成任務(wù),于是擴展了另外一維——管理水平。他們需要學(xué)習(xí)項目管理、組織行為學(xué)、績效管理等方面的知識,職業(yè)規(guī)劃是成為技術(shù)經(jīng)理。
5. 所有順暢的表達,都是體系化的思考
對于架構(gòu)師來講,表達能力也很重要,不但要自己會,也要給客戶、產(chǎn)品經(jīng)理、開發(fā)說明白。所以需要使用通俗易懂的方式表達深奧的知識。
沒有什么天然會表達,口若懸河,只要涉及嚴(yán)肅的內(nèi)容。如果沒有體系化的思考和總結(jié),現(xiàn)場肯定發(fā)揮不出來。從逐字稿開始準(zhǔn)備,看起來隨意的現(xiàn)場表達,都是熟練背誦后的輕松表現(xiàn)。
我在極客時間開設(shè)的專欄,是自己錄的音頻,覺得新聞聯(lián)播主播很不容易,但有了一個全新的嘗試。所以,技術(shù)人員不要鄙視不做技術(shù)的人,要講給他們聽,寫給他們看,技術(shù)要為客戶服務(wù)。
6. 附:我在直播中推薦的基礎(chǔ)必備書單
C:《The C Programming Langage》
C++:《Thinking in C++》《The C++ Programming Language》《Effective C++》《More Effective C++》《Exceptional C++》《More Exceptional C++》《Inside the C++ Object Model》
Java:《Thinking in Java》《Core Java》《Effective Java》《Java Puzzlers》《Java Network Programming》《Java Concurrency in Practice》《深入 Java 虛擬機》
Windows:《Windows 核心編程》《Windows Internals》
Linux:《Advanced Programming in the UNIX.Environment》《Understanding Linux Network Internals》《UNIX Network Programming》
Network:《TCP/IP Illustrated Volume I》《The Linux Networking Architecture》