當前位置:
首頁 > 知識 > 程序員,感覺技術停滯了怎麼辦?

程序員,感覺技術停滯了怎麼辦?

程序員,感覺技術停滯了怎麼辦?

在舊文《技術方向的選擇》的末尾,我寫道:「停留在原地糾結,什麼也不會改變。」。當做出了選擇就該出發了。為了習得一門技術或技能,我們需要不斷地練習,但如果一直在練習,卻感覺不到進步,那麼再努力的人生,也是枉然。

理論

關於習得甚或精通一門技能,最著名的理論如今恐怕是「刻意練習」,如果非要在這份練習上加上一個期限,那就是:一萬小時。

關於「刻意練習」,不少書或文章都講了很多案例來說明它的有效性,但總結起來就下面三點:

  1. 只在「學習區」練習,練習時注意力必須高度集中。

  2. 把訓練的內容分成有針對性的小塊,對每一個小塊進行重複練習。

  3. 在整個練習過程中,隨時能獲得有效的反饋。

刻意練習是為習得真正的技能所設計的,它和獲取知識不同,知識就是那些你知道即為知之,不知即無知的東西,可以通過讀書獲得。但技能是那些你以為你知道,但如果你沒做過,就永遠不會真得知道的事情。

如上,刻意練習的首要一點是練習必須在學習區中進行。以程序員的編程技能為例,到了一定階段,你感覺技術能力提升不了的原因,很可能就在於你每天都在編程寫代碼。程序員的工作初期基本每天就是編程寫代碼,在早期你不夠熟練時你還能感覺到進步,這種進步就是從不熟練到熟練。但單純的編程實戰其實並不能持續地提高一個人的能力,想想體育運動員,沒有一個運動員每天的過程就是參加比賽。

在程序員足夠熟練了之後,每天的這種實戰型工作就不會再是處於「學習區」的練習了,而是進入了「舒適區」的自動完成。真正的專業競技體育運動員每天的日常訓練都是在「學習區」的刻意練習,而上場比賽則是進入「舒適區」的自動完成。而很多熟練程序員的日常工作則是在「舒適區」的自動完成,工作之外則是另一種「舒適區」的娛樂休閑。

停滯,就是這樣發生的。

重複

重複的刻意練習,讓我想到了一種數字 —— 無理數。無理數,是一種無限不循環小數,取其無限不循環之意。

刻意練習的關鍵點之二,有針對性的重複練習。重複,這個詞很誤導人,重複的本身是練習過程,而非練習內容,每一次的重複過程中都會根據反饋進行有針對性的調整,以取得練習效果的進步。

一直在重複但卻感覺不到進步,除了前面所說的脫離了「學習區」的低效重複,還有可能是重複的次數還不夠。有時我們會不自覺地低估了習得一項技能所需要的重複練習次數。近年在我身上就有一個鮮活的例子,在工作十年後我重啟了學習掌握英語這門技能的練習,但第一年完全低估了需要重複練習的次數和強度。

第一年,僅僅在每日的工作之餘,花上一節課的時間(近一小時)來進行聽說讀寫的練習,即使每日都能保障一節課的時間(實際並沒能),一年下來不過區區 300 多小時,分散在聽說讀寫四個分支上,結果就是沒有哪一項在那一年結束後讓我感覺到一點點的進步。

萬維鋼有篇文章叫《用別人預測自己》提到了一個概念:基礎比率(base rate)。


所謂基礎比率,就是以前的人,做同樣的事,做到的平均水平。

如果別人做這件事需要那麼長時間,基本上你也需要那麼長時間,因為你沒有那麼特殊,只是每個人都會覺得自己是特殊的、例外的。所以,當我一想學英語人群的基數和真正算是掌握並熟練運用這門技能的人數,以及他們所花費的時間,我就知道自己大大低估了需要重複練習的次數。

重複的刻意練習總是辛苦的,但這個過程不應當讓你感覺痛苦。就像跑馬拉松的人,他的目標是跑完全程到達終點,過程是很辛苦的,但如果鞋子里鑽進了一顆小石子,那麼就不僅僅是辛苦了,還很痛苦。先要解決痛苦的根源,才可能跑完全程到達目標。

重複,是可以沒有痛苦的,但必然辛苦,從沒想過會舒適的跑完全程。

反饋

在刻意練習過程中,隨時能獲得有效反饋其實是一件挺難的事。

就像程序員學習編程技能,誰來給你反饋呢?我們又不像是職業競技運動員,有教練,還有各種分解技戰術動作的分析師,分析你的各種賽場或訓練表現,給予反饋。更談不上針對個體的薄弱環節,隨時獲得反饋進行修正。

程序員最直接的反饋來自簡單粗暴的 bug 或者系統故障。進一步,如果公司有一定規模可能會有測試或 QA 人員來給程序員提出反饋。更進一步,如果公司建立起了很好的代碼評審文化, 那麼會有其他程序員對你的代碼與編程工作作出反饋。但若這些都沒有,我們還能如何獲得有效反饋?

在我早年的工作中,公司確實就沒有能提供反饋的機制,無導師、無測試、無代碼評審,就靠簡單粗暴的 bug 和系統崩潰來提供反饋,我後來還是找到了兩條你可以主動把握的反饋機會。第一,主動找你覺得值得信任或佩服的同事幫你找找茬,提供點反饋。第二,即使已經實現了一個功能,再想想有沒有開源的類似東西,去搜一搜,看看開源的實現是怎麼做的,在這個過程中就完成了通過別人的代碼來向自己的實現提供反饋。但這樣得做法都是在主動加重自己得工作負擔,也是走出舒適區的第一步。

一些大公司都會有自己的代碼維護與分析工具,並隨時根據提交情況給出評測報告,這就是一種隨時提供有效反饋的自動化機制,身在其中很多程序員往往忽視了這一點。

珍視,每一次反饋的機會。

刻意練習,一萬小時,多麼神奇,似乎無所不能。還有什麼是一萬小時刻意練習無法解決的問題嗎?目前對刻意練習最大的批評是,刻意練習的案例證據多是來自「認知複雜性」較低的活動,如棋類、樂器、體育運動等,但對於「認知複雜性」較高的活動,如銷售、管理、投資等作用有限。怎樣通過刻意練習成為一名卓越的銷售、CEO 或像巴菲特一樣的投資大師,從哪裡練起?練什麼?怎麼練?

一技之長背後是一萬小時,然後是兩技之長,然後到十技之長么?人生哪有那麼多一萬小時,最後留下一點思考,也許這是下一階段需要回答的問題。


學習Java的同學注意了!!!

學習過程中遇到什麼問題或者想獲取學習資源的話,歡迎加入Java學習交流群495273252,我們一起學Java!

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Java團長 的精彩文章:

深入分析Java的String類的方法與特點
Java對於內存的需要知道的知識
Java反射與代理
Java編程科普書籍推薦
從零開始理解Java事件處理機制

TAG:Java團長 |

您可能感興趣

程序員,你能真正掌握多少編程技術?
腦控車?吹吧!靠意念能開車?不可能!問題是技術都展出了
程序員你要知道:技術不是全部
為什麼作為技術管理者的你總是很忙?
技術做不下去就轉管理?沒那麼容易
不讓想裁判吹技術犯規怎麼辦?CBA球員:抱住他,別讓他做手勢
天吶!這位研究人員做了什麼?不可不知道的新技術!
不是技術渣,而是斷流重啟限制想像 技術不行咱們手機來湊
什麼是小程序技術服務商?
戰機連續墜毀,機械故障還是飛行員技術不行?應迅速尋找根由
航母飛行員不容易,俄羅斯沒技術!
啥情況!印度又喜獲阿帕奇生產技術,靠譜嗎?飛行員誰敢飛?
如果美圖可以把妹,如何用技術手段做一個會拍照的程序員?
暢想未來科技,手機要想實現這些技術還要多久?
工業技術強大的日本,為什麼卻做不好手機?還被華為吊打?
為什麼子彈的口徑都不是整數?技術故意還是無法改變的?
為什麼深度學習不能取代傳統的計算機視覺技術?
了解什麼時候採用試管嬰兒技術?
人類的電池技術停滯不前嗎?材料才是關鍵
技術究竟能否完全讓自駕車事故悲劇不再發生?