作為一個程式設計師的學習思考
其實關於讀書、學習的那些事情,以前我也陸續叨叨了不少,但總覺得“學習方法”就是一個永遠在路上的話題。個人的能力、經驗積累與習慣方法不盡相同,而且一篇文章甚至一本書都很難將學習方法闡述得清清楚楚、面面俱到。那麼,要為自己找到最優的學習方法其實很困難,要去指導別人怎麼學習那更是相當困難......
大凡提到讀書、學習,都幾乎會提到“計劃”、“方向”、“堅持”、“靜心”、“總結”、“思考”、“實踐”這些個關鍵詞。其實都是沒錯的,如果日積月累下來,你最大的感悟往往也就是沉澱於此。而所謂“知易行難”。
我在這篇文章裡想盡可能從“自己作為一名程式設計師”的角色及歷程——來做些思考,算是對自己學習過程的一個審視。
想了想,我的知識積累過程大抵分為四個階段。
第一階段:困惑期
這個階段往往是小白階段,要麼經驗積累不夠(比如剛畢業),要麼是重大技術轉型階段(顛覆性的,比如由GUI應用模式轉到Web應用模式)。
以前剛出道時,寫的基本是C++的GUI應用和Foxbase管理資訊系統,之後的技術發展逐漸向Web趨勢演進,而Web應用從程式模式到部署模式都完全不同,以至於當年著實跌了不少跟頭。
記得剛涉足Web開發時,即使是拿著一本類似“21天精通”這樣的入門書,也是走得跌跌撞撞。啥IIS、Apache應用伺服器、請求/響應、Cookie/Session、Servlet......陌生到一度讓我懷疑人生。
這個階段也許一個月才能寫出一個聊天HelloWorld程式,心境往往起伏得厲害。但萬事開頭難,這個階段一定是要堅持、堅持再堅持,而且儘量沉下心學會控制情緒,千萬不要怨自己基礎不夠、腦袋不靈光。你咬牙堅持個一段時光,相信就可以進入“發展期”。優秀的人在這個階段:“不貪進度,穩紮穩打,願意打破砂鍋尋到底”。
第二階段:發展期
在“打破砂鍋尋到底”的模式下,隨著之前的障礙逐個被擊破,我覺得啃一部入門書確實越來越輕鬆了,這個階段學得快也學得多,而且過程中冒出的問題越來越多,比如“要新增一個圖表咋辦?”、“想整個帶編輯、刪除功能的翻頁列表咋整?”之類的問題。這時候我往往是把這些點記錄下來,但不打斷自己(跟書或跟計劃)學習的節奏,好比“沒學會走之前不要試圖學飛”。
這個階段讓我想到小時候剛學會騎自行車,心裡歡喜得不得了,有一次竟然忘乎所以,豪情萬丈般地撒開手把子想讓車子自己保持平衡,結果一下子連人帶車就扎到路邊土溝裡去了。此時其實就是個“半桶水”階段,摸著了門檻但切勿得意忘形,還是紮紮實實跟著書本或計劃學基礎為妙。
第三階段:瓶頸期
基礎的內容掌握了,積累的困惑又呈現出了越來越多的趨勢。因為我已經不滿足溫飽,想做得更好了。這就是往更高層次發展過程中會遇到的障礙,一種“書我都讀完了也理解了,但就是在實踐中感到無從下手”的感覺。想要進一步提升自己,基本也就是靠“繼續學習深入的知識”跟“不斷嘗試/實踐去解決問題”這兩個方式並重了。如果你完成了第一個翻頁控制元件,是會有不小的成就感的。隨著一方面博覽群書、另一方面不斷勇於解決問題,這個瓶頸期就會在不知不覺中慢慢地度過去。
這個瓶頸期是比較磨人的,因為週期比較長,沒個幾年功夫過不去,三五年一小成,十年八年一大成。但這個過程又是最關鍵的階段,在這裡學到的、掌握到的都是行走江湖的真功夫。而且經歷了這個過程,就基本能把程式設計師分出個三六九等來。
第四階段:自由期
苦盡甘來後發現自己已經到了一個相當高度了。一方面經驗積累得很豐富,另一方面能做到觸類旁通。在這個階段你再學新知識、探索新方向,其實都能進展得比較順利。此時的你厚積薄發,打通任督二脈,原力生生不息。
這個階段基本不會有什麼困惑,而且也更能主動式學習及洞察事物趨勢。一年學個兩門語言不在話下。愛學啥學啥。但如果要深度運用新知識,則仍有一個小週期:進展期->瓶頸期->自由期,只是週期縮短了不少,再也不會像第一次蛻變過程那般痛苦不堪了。
到達這個階段可不容易,可能之前你早已摔得遍體鱗傷了......
其他
階段和過程擺在那兒,但要成就一名傑出的程式設計師、工程師、架構師甚至管理者、創業者,都需要個人具備一些優秀特質:
- 能夠沉浸其中,“做一行愛一行”,也就是通俗意義上的“興趣”;
- 熟稔總結之道。我一般喜歡聯想,比如這個內容書上是這麼講的,但再延伸一下問題應該怎麼解決呢?或者把模糊之處,自己用文字和程式碼把它展開,甚至封裝起來進一步抽象。把這些方方面面的問題點、難點逐個突破,一點一滴地抽象成自己的知識庫、工具庫,一定程度之後各種現實問題幾乎都能從中挑出答案;
- 不滿足現狀。程式能跑了,但能跑得更好嗎?程式碼實現能更簡潔優雅些嗎?就算是生產環境你不能隨意更改,你也應該在自己的環境或測試環境中去嘗試改進程式碼——得出的經驗教訓都是你自己的收穫。而且只有不滿足現狀,你才更可能去主動式思考與學習;
- 周邊知識的探索,演算法、架構模式、設計模式、語言/技術新版本、新概念/新架構等等,不要覺得累。一旦你覺得累你就差不多走不遠了;
- 充分認識到英語的重要性——這個已經不想多說了;
- 鍛鍊身體——比如我現在學習武當太極拳;有一門其他愛好——比如我現在學習武當太極拳。
感覺自己其實也有蠻多欠缺之處,還需要繼續加油努力。但無論多麼模糊,我都始終堅信一點:“無他,但手熟爾”。要堅持這點之前,你還得時刻提醒自己:“你一個砍柴的,他是放羊的,你和他聊了一天,他的羊全吃飽了,你的柴呢?”
相關文章
- 作為一個程式設計師,需要學習多少技能?程式設計師
- 一個.Net程式設計師關於學習的思考順帶思考人生程式設計師
- 一個“老”程式設計師的思考程式設計師
- 《程式設計師的數學》思考題(一)程式設計師
- 作為一個程式設計師我最大的遺憾程式設計師
- 作為一個j2ee程式設計師的困惑!程式設計師
- 作為一個新手程式設計師該如何成長?程式設計師
- 作為一個菜鳥程式設計師跳槽可行嗎?程式設計師
- 一個程式設計師的數學學習探索之旅程式設計師
- 作為一個程式設計師,數學對你到底有多重要程式設計師
- 38歲,終於明白怎麼學習作為程式設計師程式設計師
- 作為一個程式設計師,進步完全取決自己程式設計師
- 作為雲端計算的互動設計師需要學習哪些?
- 成為一個女程式設計師程式設計師
- 作為一個Java 程式設計師 你應該會什麼Java程式設計師
- 為什麼你作為一個.NET的程式設計師工資那麼低?程式設計師
- 程式設計師學習程式設計需要攻克的8個障礙程式設計師
- 如何成為一個糟糕的程式設計師程式設計師
- 如何成為一個卓越的程式設計師程式設計師
- 一個程式設計師的Java和C++學習之路(整理)程式設計師JavaC++
- 一個C++程式設計師的Delphi學習筆記 (轉)C++程式設計師筆記
- 一個程式設計師要扔掉多少程式碼,才能成為真正的程式設計師程式設計師
- 作為一名Java程式設計師一定要不斷關注學習最前沿的技術Java程式設計師
- 我想成為一個真的程式設計師程式設計師
- 成為一個喜鵲程式設計師程式設計師
- 如何成為一個程式設計師高手程式設計師
- 程式設計師從書本學習程式設計的 5 個建議程式設計師
- 作為程式設計師的我的生活日常程式設計師
- 為什麼應該投資程式設計師的學習?程式設計師
- 成為優秀程式設計師的最佳學習方式程式設計師
- 作為一個程式設計師,你的進步完全取決於你自己程式設計師
- 作為一個程式設計師 你的進步完全取決於你自己程式設計師
- 成為高效程式設計師的7個重要習慣程式設計師
- 作為一個程式設計師,告訴你一些編碼知識程式設計師
- 作為一個程式設計師程式設計中經常碰到且覺得難的事是什麼?程式設計師
- Java入門基礎學習,成為一個Java程式設計師的必備知識Java程式設計師
- 15個IT程式設計師必須思考的問題程式設計師
- 10個習慣助你成為一名優秀的程式設計師程式設計師