做個犀利的碼農(nóng):如何持續(xù)培養(yǎng)/更新自己的開發(fā)技能
我們的圈子,改變是生存的必備要素之一。計算機領(lǐng)域的改變一直在發(fā)生,從基礎(chǔ)框架到計算設(shè)備,還有幾乎每天都涌現(xiàn)出的新技術(shù),這些要求我們必須持續(xù)學習新東西。這里將為您介紹一些技巧,以使您在這從未停止的學習之旅更加輕松。
如何選擇讀物
程序員需要的技能改變是如此之快,尤其是那些熱點的/快速演變的領(lǐng)域,比如本博關(guān)注的那些領(lǐng)域,還有移動開發(fā)等。找到這些領(lǐng)域合適的閱讀材料有時不那么容易。兩點建議:
- 1.利用好關(guān)注該類技術(shù)的那些網(wǎng)站。比如,在我學習iOS的過程中,我一直關(guān)注 RayWenderlish.com 和 iOSDeveloperTips.com,它們都有定期較新的內(nèi)容發(fā)布。
- 2.如果你是想找些書籍,請盡量選擇電子書而不是紙質(zhì)書,編程是一個變革飛快的行業(yè),除非是Knuth的《計算機程序設(shè)計藝術(shù)》,很多書幾個月就過時了。例如我只在2003年買過一本紙質(zhì)的《Java核心技術(shù)2》。
- 3.《國外程序員推薦:每個程序員都應(yīng)讀的書》
此處譯者有不同看法
- 1.中國的紙質(zhì)書比外國便宜很多
- 2.很多人有閱讀紙質(zhì)書的習慣,個人喜歡閱讀紙質(zhì)書帶來的寧靜,電子設(shè)備令人緊張。
- 3.紙質(zhì)書可以隨意加批注,對眼睛傷害小
選一個實際的項目
Remember this mantra: “I hear, I forget; I see, I remember; I do, I understand”.
記住這句咒語:“我聽見的,我忘了;我看見的,我能想起來;我做過的,我理解”。
閱讀是有益處的,但要想真正的理解某個編程語言/庫或者技術(shù),你只能親自動手,真正的參與到一個使用這種語言/庫/技術(shù)的項目中。”完成一個項目并在其中運用到你想學的技能或特性”是一個很具體的可衡量的目標,”學習某種語言/庫/技術(shù)“則太籠統(tǒng)了。一個清晰的目標有助于你了解你的進展。完成一個項目則會使你獲得寶貴的經(jīng)驗,有些甚至可以寫到個人簡歷中。盡一切可能來用構(gòu)建一個完整的項目的方式來學習,而不是根據(jù)閱讀得來到東西學習一個范例。
絕大多數(shù)人都知道實際做項目而獲得的經(jīng)驗是很必要的。難處在于怎樣找到一個點子來開始一個項目。一些建議:
- 1.你這種新技能能否開發(fā)出一個家人或者朋友正需要使用的應(yīng)用?我有幾個小侄子,我發(fā)現(xiàn)給他們開發(fā)游戲是一個學習XNA/Cocos2D的絕佳方式;我很快還會為他們寫一個基于Sprite Kit的游戲。
- 2.有沒有什么開源項目正在使用你所學的新知識?你會發(fā)現(xiàn)貢獻模塊甚至創(chuàng)建項目給開源社區(qū)是一個很好的學習手段。有時從一個已有的項目繼續(xù)工作比從頭開始更加容易。
- 3.有沒有什么盈利/非盈利組織可能用到基于這種新技能的應(yīng)用?如果是這樣,搞定它不但可以使你學習并開發(fā)出一個應(yīng)用,并還可能獲得一個用戶群來給你提供大量的反饋。
教別人的同時學習
2010年”Yours Truly“,Windows Phone基礎(chǔ)游戲開發(fā)課程
當我在微軟作為布道者,想程序員們宣講時,我常常撰寫入門指南的演講稿和在線材料。有些,我負責的是一些我很熟悉的領(lǐng)域,但微軟擁有如此眾多的工具和技術(shù),并不斷有新的東西涌現(xiàn)出來,我經(jīng)常發(fā)現(xiàn)自己不得不學習新知識才能完成教程。
這也成為了一種非常好的手段來促織我學習新東西,因為教這些東西,你必須搞懂它們。由于你得把這些新東西轉(zhuǎn)化容易理解的內(nèi)容,傳遞給你的聽眾,以此為目標促使你必須有合理的學習手段和方法。Floor Drees,一個澳洲的技術(shù)宣講/布道者說到,“坦誠的說,我覺得教別人的過程能促使自己學的飛快,我鼓勵每一個人去培訓(xùn)新人,即使你覺得自己也還只是個新人”
如果你能得到合適的研究和學習資料(幸運的是,在微軟我通常能很容易的找到),并有足夠的時間和工具去試驗一些迷你的項目來得到更深入的理解,并且你很喜歡當一名老師(無論一對一或一對多)或者作者,你也許想要嘗試教學的過程中來學習。
搞定攔路虎
當你的開發(fā)技能到了一定水準,你會偶爾遇到攔路虎:一些短時間內(nèi)搞不定或理不清頭緒的問題。
這是個好事,真的!如果你從不嘗試新東西,那當然會發(fā)現(xiàn)已有東西對你來說都毫無挑戰(zhàn),這也意味著你沒有真的在“求學”。最好的/有價值的學習經(jīng)歷正是那些拼命搞定某一問題的時光。你極盡所能嘗試各種方法并最終找到了解決方案,這就好像你在黑暗中探索,努力拼接出一條成功之路,這種能力在日后也會陪伴著你。
在這段探索之路,你需要以下幾個技巧:
- 1.找找看,確認是否你自己或者別人已經(jīng)有一個項目解決了相似的問題
- 2.利用好在線開發(fā)者論壇。Stack Overflow是你的朋友,他這些年幫我解決了好多的問題。很多開發(fā)者社團也維護自己的論壇,確保自己檢查過這些站點。
參加課程
很多程序員有這樣的機會通過“構(gòu)建自己的項目/看其他人的項目/教授課程“來學習。但這不是所有人的習慣,有人喜歡在教室里接受傳統(tǒng)的課程。幸運的是這些同學也有很多可選的方案。
很多學校和社團都提供了對外公開的的編程課。如果你所在的城市有一些技術(shù)人員或者黑客交流中心,那么在那通常也有針對他們團體的一些編程指南,有時這是免費的。
在有些城市,那有新手入門課堂,在那你可以學習一門語言或一項技術(shù),它通常會有一些密集的課程和上手小實驗,這種培訓(xùn)通常持續(xù)幾天或者幾周。如果你有商業(yè)上的需求,需要對程序員進行某種企業(yè)級工具/技術(shù)的培訓(xùn),例如微軟/甲骨文/Java或者SOA/云計算/敏捷開發(fā),那么你可能需要找到某個類似Web Age Solution這樣的培訓(xùn)機構(gòu)來幫助你完成。
原文鏈接: Joey Davilla 翻譯: 伯樂在線 - NULL_文龍