天天寫業務程式碼的程式設計師,怎麼成為技術大牛

程式之心發表於2020-11-13

作者:程式之心丁儀

來源:https://chengxuzhixin.com/blog/post/zen_me_cheng_wei_ji_shu_da_niu.html

天天寫業務程式碼,感覺沒長進,技術深度止步不前,感覺很煩躁。很多人都在問,怎麼樣才能成為技術大牛?機會總是留給有準備的人,還是有一些方法可以幫助我們在工作中提升技術水平的。

 

看優秀原始碼並模仿

《黑客與畫家》裡說到,畫家學畫必須要臨摹,從大師的作品中進行學習,美術博物館便是他們最好的學校。而黑客則是通過觀看優秀的程式來學習程式設計,研究它們的原始碼,開源社群是他們最好的學校。

 看優秀原始碼是非常有效的學習方式,比如通讀 spring 程式碼可以深刻理解 IOC、AOP 關鍵技術。通過對優秀程式碼的探索和發現,可以深刻理解技術方案和涉及的知識點,加深自己的技術深度。優秀的開源專案經過千錘百煉,架構設計是比較優美的,可以學到很多架構設計方面的知識和技巧。

 模仿是進步最快的學習方式。看了原始碼之後,不妨從模仿開始,搭建一套自己的框架。通過模仿可以站在巨人的肩膀上,直接把前輩的經驗轉變為自己的能力,少走了很多彎路。很多良好的設計,並不是一開始就一步到位設計好的,也會經過很多人的討論和優化,才變成我們看到的模樣。而模仿可以幫助我們更深刻地理解設計背後的思考。

 

主動解決問題

很多人會抱怨,公司的程式碼很爛,學不到牛逼的技術。其實大部分技術問題並不難,難在沒有多少人願意去做。解決的問題多了,才能建立起個人影響力,才會有更多的疑難雜症交給你,才能獲得很多成長的機會。當別人遇到問題首先想到你,你不進步誰進步呢?

 公司除了需要技術能力,更需要的是作為技術專家解決公司實際問題的能力。只有知道爛程式碼爛在什麼地方,才能寫出更好的程式碼,得到上級更多的賞識和認可。如果能全面掌握現有程式碼,看的越透徹,越能輕鬆進行重構和變革,就會成為不可替代的人。

 

畫類圖流程圖

學習一項技術,理解一套程式碼,最重要的是學習技術原理和設計思想,這是很長時間內都不會改變的東西。通過畫類圖可以很好的理解技術方案和設計思想。大部分抱怨工作重複學不到技術的同學,可能都聚焦在具體的技術細節上了,而技術細節是變化比較頻繁的東西,既消耗了大量的時間和精力,又讓人把握不住重點。

 要想深刻理解系統的運作原理,需要畫出系統流程圖,才能看到整個系統如何工作。通過分析流程,可以整理出一個業務完整的互動圖,寫成文件,在後續的重構和需求溝通中會起到非常大的作用。

 在畫圖過程中,最好適當運用系統化思維進行一些分析。找到軟體系統中存在的各個部分,和這些部分之間的關係。通過觀察和分析,劃定各個部分的邊界,明確系統中可變和不變的東西。通過分析關係可以很好地理解系統的執行機制,明確系統中貫穿如一的關鍵核心事件,方便理解系統思想。

 

從 0 到 1 做產品

如果說最好的提升技術的方式是什麼,那一定是從 0 到 1 做一個產品。從頭開始做一個技術產品,非常鍛鍊架構設計能力。能夠讓開發者在架構方面有極大的提升,又同時會鍛鍊一些領域的縱深點。

 如果從零開始設計一個資料同步系統,假設每天要處理上億資料,這個系統對開發者的技術成長是巨大的。在大資料處理、效能優化、分散式部署等方面也會有前所未有的積累。尤其是在使用者量大起來後,要解決很多問題,倒逼自己有更多的深入學習和實戰。

 很多程式設計師突破瓶頸的臨界點,都是在從 0 到 1 的時候。這意味著,我們要全方位思考和覆盤,被迫放大自己的技術視野,對很多問題的理解很快就加深了。

 

刻意練習

輪子哥說他在學校的時候每天8小時,連續練了4年。大三去了微軟上海實習,晚上還在寫自己的程式碼。陳道明有句廣告語,如果再演一次,可以演的更好嗎?我覺得就講的很好。回到程式設計師身上,不妨問一問,如果再寫一次,可以寫的更好嗎?

 如果真的想成為優秀的程式設計師,不要管那麼多,靜下心多寫程式碼就夠了,剩下的交給時間,學會做時間的朋友。可能開始練習的時候還是模仿,但是經過多輪練習,一定會產生屬於自己的認知和經驗。經過反覆的推倒重來,當有一天寫出的程式碼和模仿的物件不一樣了,融入了自己的真知灼見,那可能就是突破的臨界點了。

 只有深度的思考,才能逼近問題的本質。而深度思考,必然是需要反覆練習的。如果總是浮於表面,永遠無法突破瓶頸,很難得到提升。刻意練習可以一次次、一層層不斷突破自己的認知極限,在反覆思考中逐漸走到問題的中心、逼近問題的本質,自然能夠開闊視野看到不一樣的風景。

 

總結

本文整理了 5 種提升技術的有效方式,可以交叉運用:

    • 看原始碼:向優秀的程式碼和架構設計學習;
    • 解決問題:解決專案中存在的問題,把握更多進步的機會;
    • 畫類圖:畫出系統中的模型和流程,適當運用系統化思維進行分析;
    • 從 0 到 1 做產品:鍛鍊架構設計能力,加深對技術的理解;
    • 刻意練習:深度思考,逼近問題的本質。

相關文章