阿里巴巴P9大佬雷卷與中間件小哥重新定義:高段位程序員的學習之道

每次看到和程序員相關的段子,我都會會生一笑:這是時代的進步啊!

上個世紀,桌面時代

Bacis、6502彙編

一切都是面向對象

Turbo Pascal

信息學奧林匹克競賽的常用編程語言

那時候能搞編程的基本都是家裏有礦

或是家庭教育超前

90年代,web時代

個人計算機開始流行

大洋彼岸各種語言打得火熱

JavaScript、ASP、PHP

業餘時間可以通過做網頁來掙錢了

那時候學計算機的都賺到了人生的第一桶金

2000年後,移動互聯網時代

iOS和Android建立了移動開發者生態

除了web、系統開發,新增了大量的移動開發者

Java、C++、Swift

身邊的程序員開始多了起來

移動社交的普及成爲各類段子迅速傳播的助推器

隨後就是這幾年的事情了,雲計算、大數據、AI的流行,使得程序員這個羣體越來越龐大,對社會的貢獻不僅僅侷限在某個企業軟件,或某個手機APP上,而是影響到人們吃穿住行的方方面面。

▲ 小哥打算幾歲教孩子學編程?

如今,互聯網、雲計算和大數據的普及成就了一批創業公司,也將程序員這個羣體帶入尋常百姓家。收入較高、生活節儉、無不良嗜好的程序員成爲單身女青年的優質擇偶羣體。數不盡的段子降低了大家認識程序員的門檻。例如:

程序猿的讀書歷程:x語言入門—> x 語言應用實踐—> x 語言高階編程—> x 語言的科學與藝術—> 編程之美—> 編程之道—> 編程之禪—>頸椎病康復指南。

還有一系列的程序員專屬表情包、T恤、信用卡,以及程序員專屬茶葉和各類面向程序員的書籍和知識付費產品,程序員這個羣體一時名聲大噪。

高段位程序員的工作指南

就像醫生分外科醫生、內科醫生、骨科醫生、耳鼻喉科醫生和中醫大夫一樣,程序員也有很多種,有開發APP的,開發網站的,做大數據的,做AI的,還有開發中間件用來保證網站、APP穩定、順暢運行,不宕機的。如果你自己不是程序員,或者身邊沒有程序員的朋友,那麼對這一羣體的瞭解基本停留在形容我們的各種段子上,例如牛仔褲、格子襯衫,和產品經理間的江湖故事。

▲ 關於程序員和產品經理的故事,一圖勝千言

但其實高配置的程序員的工作和生活遠比我們想象中要自律的多、高效的多,並且,技術迭代太快,要保持住這種優勢非常困難。以下整理自阿里巴巴中間件美國團隊的資深技術專家雷卷在內網分享的他的學習方式,內容較多,但實操性很強。

持續學習,淡化經驗主義

程序員和醫生、律師這類職業不太一樣,醫生和律師年紀越大,越資深。是因爲通過之前的手術案例或判例積累了豐富的實操經驗,這是其他學習方式換不來的。但對程序員而言,由於行業的演進速度過快,以往積累的經驗很快就可能不再適用。舉個例子,一位Java程序員,非常擅長Struts + JSP開發,並且解決了很多Struts框架的問題,但是如果今天仍然使用之前的技術,那就會給同事和公司帶來很多技術上的負擔。再例如,以往軟件經驗的積累會體現在架構的設計上,很多程序員會認爲經驗積累的多,架構就會設計好,但就今天來說就未必了。如今,公共雲廠商提供的解決方案就已經包含了架構的部分,在雲上,架構設計基本都是模板化了。

談編程歷史的實際意義並不大,以往很多的經驗放在今天已經不適用了,即便有,也會給其他人帶來甄別的成本。如果2-3年不關注技術,基本就和編程絕緣了。

持續coding,加強使用編譯工具的熟練度

平時和幾個Google的工程師吃飯聊天,問了一下他們遇到過哪些技術牛人?一哥們兒說,他的leader太牛啦,幫助他找bug,工具和debug使用的熟練程度眼花繚亂,很多工具都是他聽都沒有聽過,而且Python腳本編寫幾乎行雲流水一樣。這位leader並沒有一眼看出問題,只是他在單位時間內嘗試的次數特別多,很快就把問題給找出來了。

在排查問題和寫代碼上,如果你1個小時只能嘗試1種方法,別人卻能夠嘗試10次,別人就是比你牛。天下武功爲快不破。寫demo,查問題,工具熟練的程度會決定你學習和嘗試新事物的速度。

看海量的書,勤讀專業文檔

學習是需要系統化的,不是看一篇文章就能明白的,尤其我們還不是行業大拿,英文也一般的情況下。

個人強烈推薦

https://www.safaribooksonline.com/

Safari應該是出版社聯盟,你需要的IT類圖書基本都能找到,兩個小問題:需要收費,一年大概400刀;圖書都是英文的。 Safari BooksOnline的圖書非常全,幾乎涵蓋絕大多數出版社,包括我們熟知的Oreilly, Apress, Manning, Packtpub, Addisonwiley,而且更新速度非常快。另外Safari提供的Learn path也非常有用,幫助你係統的瞭解某一些技術,如Blockchain, AI, Machinelearning等等。視頻資料也非常多,包括專家知識培訓和一些技術大會的視頻。

除了圖書,我們還需要關注文檔(reference)。現在,很多框架和技術的參考文檔質量已經越來越高了,例如SpringFramework, Hibernate, Kotlin, Groovy的文檔。看看CNCF上的項目,每個項目的文檔質量都是非常高的。現在很多開源項目不是1-2兩個程序員單打獨鬥,而是一個團隊加一羣人,外加像GitHub等協作平臺,來向外輸出高質量的項目文檔。另外,一些新的技術,剛開始只有文檔,圖書還沒有來得及出版,所以你需要閱讀好文檔。個人在做Service Mesh的時候,對應的圖書就比較少,只能閱讀Envoy +Istio的官方文檔,沒有關係,可能稍微難閱讀點,但是多讀兩遍就可以了,畢竟我們不是天才和這個領域的專家。

如果money允許的話,最好還是訂閱一下Safari BooksOnline的服務,當然可以一個小團隊內訂閱一個這樣的服務,大家均分一下。另外時不時重新閱讀一下官方文檔,畢竟官方文檔還是最權威的,也是最新的。

通過視頻進行學習

之前個人看書是比較多的,最多YouTube上看一下大會的視頻。近一年比較關注一些視頻教學。

視頻和圖書有什麼區別?首先圖書編寫還是比較費時的,圖書作者都要有一定的寫作水平,這個讓一些技術比較牛的人或者沒有非常充裕時間的人就比較麻煩。Java程序員可能都比較瞭解Josh Long這個人,他的《Cloud Native Java》圖書花費他一年多的時間纔出版,而期間他的視頻卻發佈了很多。而且,圖書無法展示代碼的全部,只能貼一段,但在視頻中,這些代碼經常是需要輸入的,你會發現作者有很多的黑科技或者黑技巧,你也能學習到。如React入門圖書中,可能只會說明或者引用Redux,而教學視頻中,會打開對應的網站,給你列舉一些重點特性。

所以,圖書中可能比較容易忽略的東西,在視頻中會很好地被補充進來。而且,很多視頻的製作者,本身是來自框架和技術的開發團隊,而不是第三方的圖書作者,所以新鮮度和技巧性都非常明顯。不少人對大段文字,尤其是理論和學術很強的圖書,都比較過敏,很多人問如何學習domaindriven design,但是能將DDD圖書看完2-3章不犯困的,非常困難,主要是因爲文字太多,沒有什麼代碼和圖片,而且不像小說那樣有情節,不犯困是很難的。反之,DDD培訓視頻就不一樣了,PPT製作的也非常好,而且有動畫,相關的說明貼切,所以更容易學習。

這裏列舉一下比較有名氣的視頻培訓網站,有Pluralsight, Lynda和Udemy等。 Udemy的視頻是需要單個購買的,如一個3-4個小時的視頻需要10刀,如果你閱讀量比較大,那花費就會比較多。Pluralsign是會員制,付費會員可以看所有的視頻教學。內容非常多也比較新,而且有一些是成系列的,對跨界學習幫助特別大。例如,在做Service Mesh的時候,可能涉及到SDN,然而我在Safari上閱讀一本SDN的圖書,我只能說臣妾做不到,尤其跨界學習的同學,難讀啊。但是Pluralsight上一個2個小時的視頻教學,我就馬上知道了。再舉個例子,Java程序員要學一下ES 6 +React開發,如果找JavaScript圖書先看,然後再看React圖書,週期就太長了,而Pluralsight上一個ES 6 + React Learning Path視頻教學,馬上就能讓你快速入門,而且就能投入開發,然後在用相關圖書和文檔補充一下,知識就鞏固了。

還是money問題,允許的話,購買一個Pluralsight會員,每月29刀,絕對非常值得。Pluralsight的視頻基本都有英文字幕,配合作者的PPT,英語不好的同學學習也沒有問題。下班沒有事情,找一個會議室,和幾個志同道合的同學,搞點飲料,播放一個跨界或者新技術的視頻,看完20分鐘,然後大家討論一下,英文好的,有技術功底的多發表一些觀點,其他的同學都也就都能瞭解了。

看技術新聞、關注大牛的twitter,參加行業內知名的技術會議

前面介紹的圖書,文檔和視頻教學,讓我們可以瞭解和深入某一項技術,對付我們的工作應該沒有問題。但是如果要緊跟潮流,能夠獲取靈感,那還需要關注一些技術新聞,follow twitter上的技術大牛。

每一個人都是有惰性的,大牛也不例外。有時候他們可能也不會給你寫文章,文檔或者拍視頻,只會隨意說一下。例如我第一次瞭解SpringFu這個技術時,是在Twitter上。那時項目還沒有啓動,Kotlin + Spring的核心團隊就開始不經意的在Twitter上透露一些信息,你可能就會由此獲得不錯的想法。通常,大牛也會轉發一些技術新聞,這些新聞都經過他們過濾過的,所以你挑選技術新聞的成本也就低了很多。

對於技術新聞,沒有很好的平臺進行統一管理,相對凌亂一些,你需要有自己的搜索和歸類方法,不然找尋成本會比較高。很多人喜歡 Hacker News (https://news.ycombinator.com/ ),但沒有歸類功能,而 https://thenewstack.io/ 就提供了比較好的歸類功能。 Google Reader關閉後,個人轉投到Feedly,保留了訂閱blog的習慣。

Medium (https://medium.com/ )非常不錯, a place to read and write big ideasand important stories,很多技術牛人會在Medium上發文章,不少技術公司的blog也都在medium上有文章,據說還有付費的會員,個人沒有嘗試過,強烈推薦。 Reddit可以歸類一些topic,關注一下。如果你持續關注某一技術,最好加入一下該技術的Slack或者Gitter討論羣,大家都會在羣裏將相關的好的新聞或者技術文章進行分享,例如,我在的KotlinSlack中就瞭解了非常多新的框架和關聯技術,畢竟大家還是樂意分享的。

關於技術大會,如果時間和費用都允許的話,個人建議可以多參加一下。在2-3天的會議期間,你可以圍繞你感興趣的話題,和衆多同行在一起深入交流,和分享講師深入探討,這個感覺是不同的,你需要堅信你找對了一個方向,讓你更有動力深入的瞭解下去。

Twitter上技術大牛follow一下,關注一下對應的技術新聞和blog,平時逛逛Slack和Gitter,儘可能的參與一些行業內的知名技術大會,保持技術敏感度。

做項目,寫Demo,看源碼

前面說了學習,但是程序員不寫Demo是不行的。項目中可以考慮嘗試新的技術,我們現在推行微服務,所以技術棧還是有自由度的,就看你能否hold住了。不一定所有的技術都是能用到項目中,有些是啓發性的或者觸類旁通的,你需要寫Demo,磨磨刀沒有錯的。文章前面說過,工具什麼要非常熟練,不然一個Demo花掉一個小時,不值得。讀了很多,看了很多,如果用代碼輔助一下,就更好了。我不是說,這些知識都是爲代碼的,不少是爲了架構的。例如,你學習ES 6 + React,如果沒有代碼,我很難想象如何掌握這個知識。

看源碼,這個是非常重要的一個技能,至少你code review技能提升了,但是確實成本高。個人是對Kubernetes還算比較瞭解,但是讓我看Kubernetes源碼,這個壓力就很大了,尤其是對你不擅長的領域。看Istio和Envoy源碼,壓力也很大,但是你如果決定投入啦,看源碼還是幫助很大的。

項目中多嘗試一下學到的新知識,不能老是慣性使用熟悉的技術。要知道,熟悉的東西很快會被淘汰的,當被淘汰的時候再調整,來不及了。多寫一些Demo,磨磨刀。對你本行業的技術,一些源碼還是要能看懂的,是需要的。例外的情況是,跨界的技術,閱讀源碼要量力而爲,讓Java程序去看JS框架源碼或者C++源碼,還是要有心理準備的。

多閱讀,少瀏覽,聽點音樂

看到YouTube上一個技術人員講述閱讀的觀點,還是比較獨特的。移動互聯網時代,閱讀量其實是比之前的多的,你每天打開手機,各種新聞、文章、視頻和朋友圈等,但相較於圖書或電子書,這些知識生命週期較短,娛樂性大過內容本身,這也是爲何大家覺得花在信息獲取的時間上多了,但閱讀卻少了的原因。就技術人員來說,xx頭條,xx新聞等APP對你在技術積累上的幫助非常有限,這些新聞可以幫助你找找聊天話題,作爲飯後談資,但會佔據你大量的時間,並且導致注意力下降,無法聚焦。而且現在的推送新聞都有智能算法,保證能黏住你。

音樂是不錯的,有專門針對程序員編碼的音樂,個人不是發燒友,但還是推薦一下。

在你的開發設備上多一點投入

進入辦公室,看一下同事的電腦,大概就能甄別各自的開發語言了。用13寸的MacBook Pro或者Air,絕對不是Java程序員。如果是Golang或者C++程序員,一定不會用JetBrains的IDE工具,基本都是Editor類等。

這裏的硬件配置建議,僅僅適用於Java類的程序員,配置高點是讓你的coding速度更快,效率勝過一切。蘋果最新的MacBook Pro 2018確實非常不錯,終於有32G的內存了,大家可以節衣縮食一下,考慮入手。建議可以找蘋果員工幫忙購買一下,有8.5折優惠,對於4500刀的筆記本來說,還是省了不少的。

小編總結

  • 多讀書,看文檔,閒來無事做開源
  • 看視頻,挖技巧,聽點古典和爵士
  • 多動手、多實踐,編程工具爛於心
  • 跑跑會,聊聊天,保持技術靈敏和Sense
  • 攢點錢,買個高配Mac和Pad
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章