程式設計師如何保持學習成長?

語言: CN / TW / HK

計算機技術發展日新月異,技術方向又繁雜多樣,在工作中我們隨時會面臨著新的挑戰,也都會階段性地遇到成長的瓶頸。

所以無論是作為初入職場的新人,還是工作了幾年或者十幾年的老手,都需要保持著持續的學習能力和學習習慣,不斷地拓展邊界、提升自我,以應對挑戰、突破瓶頸。

但時間總是有限的,知識和經驗的積累也不可能一蹴而就。在有限的時間和精力下,如何規劃好我們的學習成長路線顯得尤為重要。

今天我們邀請了四位來自閒魚的開發同學,讓他們來談一談自己關於這個話題的想法和經驗。

文珏

從電信行業跳槽網際網路來講一講程式猿的學習之路。我之前從事電信行業的開發很長時間,現在入職閒魚半年多,回想兩份工作之間的差異和相通,通過對比希望能大家一些啟發。

變化很大

  • 業務範圍的變化

我從關心4、5G的發展,關心移動聯通的介面含義轉換到關心每個C端使用者的需求是否被滿足,每步操作的體驗是否流暢,每天要時刻關注線上的業務輿情,頁面訪問資料等實時資訊。

業務範圍的變化可以說是最大的跨越,這時快速轉換思想,接受新的業務定位,快速融入新的軌道至關重要。

  • 技術棧的變化

電信行業引入開源解決方案的機會相比不多,同時為了解決複雜業務,需要較多產品模組的參與,對於執行效率,大併發的要求較低。

網際網路行業為了適配各種新業務,更多時候需要引入開源解決方案進行專案優化,同時有更豐富的線上問題的日誌監控,對安全、併發,更加重視。

同時資料中臺,業務中臺,技術中臺等新的技術架構概念也在更換軌道的時候帶來一些挑戰。

  • 工作節奏的變化

跟客戶確定需求-->做POC-->預估工時-->團隊排期-->進入開發-->多輪測試-->安裝部署上線,穩定節奏保障電信業務更安全流暢的交付以及迭代。

然而網際網路業務,快速上線,快速迭代,實效更加重要。而且線上出現的狀況永遠是防不勝防,隨時準備幫客戶排查問題,隨時準備拉分支,修復小問題。

這些工作節奏的變化可能一開始會不太適應,快速脫離原有舒服的模式,快速試錯,快速成長,也是件讓人興奮的事情。

變化不大

IDEA,Git,Debug除錯,每天依然還在這些工具中穿梭。開發,測試,看架構,理解業務,寫邏輯,作為程式設計師,工作內容本質上還是差不多的,用程式碼實現功能,保證模組的安全,健壯,和穩定。另外對業務和對需求的理解在各種域中都很重要,充分了解業務,才能更好的實現功能,滿足客戶要求。

而且不論是電信還是網際網路,開發人員都是用自己的語言來解決問題,方便人們的生活,賦予工作意義也給自己找到社會價值,從這一點來說,開發工作都是相通的。

總結

迴歸到主題如何規劃學習成長路線上,無論是哪一個域的開發,下面這些點都是在不斷進階的路上值得思考和重視的

  1. 深入瞭解所在域的業務內容

    大部分的開發都是為了滿足功能,對業務理解的越透徹,越有利於在工作中有所為,有所創新。 尤其在經歷過的專案中,最好可以把流程都弄清楚,把每個模組的難點都吃透。

  2. 始終保持學習能力

    個人能力的更新、精進,旺盛的好奇心,這些對開發人員來說都非常重要。

  3. 勤于思考

    瞭解架構-改進架構-創造架構,瞭解業務-改進業務-創造業務,讓自己的工作更有意義。

燼天

“程式設計師如何成長”,這個話題其實很寬泛,每個程式設計師在大學志願單寫上計算機,當寫出第一個“Hello World”時,就已經開始思考這個問題。作為一個本三的小菜鳥,既沒有睥睨天下的技術,也沒有豐富精彩的閱歷,只是順利跨過了畢業->工作的過渡。從科班到金融軟體公司,再到閒魚,短短三年,也算是在按照自己的指定的方向前進,就將這其中的一些思考和拙見分享給大家吧。

基石——專業課的開設都有其道理

計算機組成原理,編譯原理,計算機網路,資料結構……大學期間的課程五花八門,有些課程晦澀難懂,很多人(包括我)都覺得,學這些有用嗎,這些不都過時了嗎,我只要掌握行雲流水的編碼能力,一氣呵成的框架體系,寫一手漂亮的程式碼,不就行了嗎。非然也。都說程式設計師是吃青春飯的行業,新技術更替的太快,讓人疲於奔命。其實,萬變不離其宗,底層技術原理一直都未多大變化,是最值得我們去投資的。不懂計算機原理,不知道計算機如何去儲存表示資料,怎麼去理解位運算的奧祕,去理解形形色色的編碼格式?不學計算機網路,如何理解資料間的傳輸,多臺計算機如何通訊,怎麼去搭建可靠穩定的系統?這些專業課程,傳授的是知識,也是思考和文化,前人從0到1的創造的思考,前人遇到的數不清的難題和坎坷的解決辦法。這些基石搭建好,才能在上面蓋出高樓。“驀然回首,那人卻在燈火闌珊處”,工作後遇到的諸多難題,最後發現答案都隱藏於之前那些晦澀難懂的專業課中,才發現“計算機網路”真是一門好課,真是一本好書。

保持學習上的成就感

學習是枯燥乏味的,所以就要有一些激勵手段, 或者發現一些興趣指引。平常的工作學習中,要多發現一些“不懂點”,Spring為什麼要這麼啟動,為什麼人們會擁抱 REST,嫌鄙 SOAP。多製造一些為什麼,勾起好奇心之後,發現自己的渺小和茫然,原來我這麼菜,作為內驅力去學它,搞懂它。徹底理清搞懂一個難題後,心理上的滿足感是無與倫比的,或者也可將自己學習過程中的思考和各種總結記錄下來,整理髮布到論壇部落格上,分享給更多人,再次提高自己的成就感。自己成為某方面的“小大師”,就可以幫助下個遇到該問題的同事/朋友,“看,這個我懂,我講給你”。

沒必要單槍匹馬闖關東

當遇到難題,設計方案的時候,不要一個人一直搞,這樣會消磨自己的激情與耐心,求而不得還會提高自己的挫敗感。善於藉助外力,善於學習前人經驗。技術成一家,別人走過的路,往往也是自己要走的。閱讀別人的優秀程式碼,學習別人的設計思路,可以從別人寫的好的原始碼和方案中間學習到更多的程式設計方法和技巧。一個比較大型的程式,完善的設計方案,往往都是經過了很多個版本很長的時間,有很多人蔘與開發,修正錯誤,新增功能而發展起來的。面前就有前人種好的樹,先乘涼,再樹蔭下再種自己的樹。

跟自己的節奏

我覺得最重要的,還是要跟著自己的節奏,按照自己制定的計劃和方向去前進。千萬不要急於成長,不要過分的追求技術上快速積累。沒有什麼快速通道,程式設計師大神也不是一蹴而就,都是一個坑一個坑踩過來的。苦學三日,一鳴驚人根本不存在。其次,工作也只是生活的一部分,技術又只是工作的一部分。程式設計師如何成長,我覺得更應該是自己生活中如何成長。保持自己的節奏,有些事急不來。在生活這條路上,只要自己在慢慢前進,已經超越大部分踏步的人了,又何必不知足呢?

百夜

技術成長道路不用擔心走“彎路”

拿我個人的大學四年經歷來說,大一學的運維,還去考了紅帽認證工程師;大二主要搞的web安全,去打了各種各樣線上線下的CTF比賽;大三明確了自己要做開發,開始有規劃的學習Java。我想說的是不用那麼著急確認自己的工作/研究方向,感興趣的領域都可以去試試看,而且計算機技術有很大的互通性,比如學安全的時候想復現一個漏洞,可能要手動搭環境吧,或者找現成的docker,這時候就能用上一些運維的知識;開發的時候要考慮介面安全性,要學習程式碼怎麼部署到伺服器讓它跑起來,安全和運維的知識都用到了。技術的道路既長遠又寬廣,可以多看看,最後再選擇走哪條細分的道路。在成長路上走的每一步都是有意義的。

說一下“八股文”

對“八股文”不要有什麼的牴觸情緒,更不要把它當成“靈丹妙藥”,“八股文”就是一份很不錯的學習規劃路線,按著這份路線學習不會有錯,但一定要思考,一定要實踐,細節一定要深挖。或者用它來檢測讀書的成果,比如剛看完《MySQL技術內幕:InnoDB儲存引擎》,去“八股文”裡找一些關於MySQL的問題,看看自己能否答出來,自己的理解和其他人是否有差異,這樣有助於加深理解和記憶。

玉凇

搭建技術知識體系,補齊短板

對於剛畢業不久的新人,這個階段最需要的是搭建好自己的技術知識體系。尤其是非計算機專業畢業的同學,本身的知識結構可能不是特別完備,更需要夯實好基礎,才能有利於之後的長遠發展。

從程式語言與規範、計算機網路、資料庫,到設計模式、微服務架構、大資料技術等等,需要學習的內容有很多很多。在制定學習計劃之前,需要對自己的知識結構進行詳細的梳理,需要明確自己的知識盲區,做到有的放矢。

在這個階段,一些經典的書籍會更推薦一些,比如java開發領域的《深入理解JVM虛擬機器》、《Effective Java》,程式碼質量相關的《重構-改善既有程式碼的設計》等,切忌去看一些亂七八糟的“速成”文章。

明確目標行業,深耕技術領域

在時間有限的情況下,往往需要選擇一到兩個行業內的技術領域進行深耕,比如訊息中介軟體技術、分散式系統設計、高併發場景系統設計等等。

這個階段,需要能夠做到“以終為始”,對目標進行階段性的詳細的拆解,分階段逐步達成。在學習的過程中,也需要不斷地提醒自己是否偏離目標。

在學習的過程中可以重視以下幾點:

第一,  可以適當閱讀一些核心原始碼,但是不要漫無目的地瞎看。可以先通過閱讀官方文件瞭解一些基本的原理,想一想如果是自己來實現要怎麼做,然後與原始碼的實現進行對照,這樣會比較高效。

第二,  通過高質量的文章輸出來進行階段性的總結和梳理,重視知識的體系化。

第三,  多與他人進行交流,主動分享,聽取一下別人的批評和反饋收益也很顯著。

重視日常工作中的技術實踐和經驗積累

知道和做到之間往往有著巨大的鴻溝,需要在不斷的實踐中,將所學的內容固化為自己的能力。在業餘時間有限的情況下,怎麼利用好日常的工作機會多去實踐,還是很重要的。這裡需要注意兩點:

第一,  不要把工作只當作不得不去做的任務,在進行技術選型和系統架構設計時,可以多花些時間進行思考,不要因為“時間緊、任務重”就得過且過了。

第二,  適當地進行前瞻性設計,切忌好高騖遠,如果架構設計偏離了具體業務場景的需求,即使再“高大上”,所謂的經驗也就沒有什麼價值了。

以上是四位閒魚同學的觀點,關於學習和成長的話題,你有什麼想說的,歡迎一起交流呀~

:tangerine:橙子說

閒魚技術聯合大淘寶技術

新春拜年

“虎虎虎”

紙質紅包大派送

掃碼關注”淘系技術“回覆"紅包“即可獲得領取方式

(2月28日18:00截止)