1. 程式人生 > >阿里巴巴P9大佬雷卷與中介軟體小哥重新定義:高段位程式設計師的學習之道

阿里巴巴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