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