12月12日, HackerRank發布2018年度報告。他們發現全世界1萬名相關學生裡面,接近三分之二都在自學編程。IT業發達的美國,更是有五分之四的學生靠自學掌握技術。
出現這種情況並不值得奇怪。計算機領域,學校教授的知識雖然經典,但這個行業變化飛快、類似Go、kotlin這種企業需要的新技術、學校經常沒法跟上。學習程序開發、提升技能水平,「自學」是必經之路。
然後,要怎麼自學編程,又有哪些好用的輔助工具?接下來就和谷歌空間一起,看看那些自學的基本策略,與優秀的服務與應用吧。
想好做什麼,做學習規劃
一般說,編程就是人類用特定語言寫東西,讓軟體翻譯成機器指令、去做特定事情。不同語言的特點與應用領域各不相同。自學編程的人,首先要做的就是問自己「學編程幹什麼?」然後根據目標、選擇語言——
做網站(JAVA、Go、JS 、PHP)
開發遊戲(C++、C#、JS )
手機APP(JAVA、Kotlin、Dart 、Objective C、Swift)
輔助辦公、批量處理文字與表格(Python、VBA)
計算機語言種類繁多,具體的分別、沒法輕易講清。建議在網上搜索相關資料,尤其那些相關行業論壇、招聘網站信息將更為準確。
如果是初學者,筆者推薦學習Python、JavaScript這種非常主流,同時也相對簡單的語言。因為相關中文資料少、不推薦從LISP這種冷門語言起步。
確定好學什麼語言,接下來就是規劃日程了,大致上來說:
12小時可以做「簡單的計算器」
30小時可以做 「日程規劃軟體」
300小時可以做「簡單論壇或留言板」
知道要學習多少時間、接下來就可以把任務分解到每天、並根據情況調整。雖然相關技術與工具隨時在變化、未必有完美策略。但比起怕犯錯、一直猶豫不定,邁開步子學習明顯更為有利。
這些APP可以幫到你:
谷歌日曆:規劃日程的優秀工具,自帶郵件提醒功能。可以方便地添加按日期循環、精確到分鐘的學習任務。
番茄時鐘:幫助你實現「番茄工作法」的小工具。學習幾十分鐘、然後休息幾分鐘,有節奏的學習與工作,不知不覺任務就完成了。
找靠譜教程
選擇教程,需要考慮的首先是權威性。那些業界知名技術大拿編寫、或得到官方認證的教材、一般質量都比較靠譜。
如果是國內引進的書籍,還要留意下注意翻譯水平。就算原著是好書,但如果經過不懂技術的人翻譯,就經常出現一些致命錯誤。建議去亞馬遜這種網絡書城,看讀者的評價與反饋。
除了讀好書,教程還可以在網上找。各種語言官方文檔,也是學習的好材料。由於技術文檔的理解難度比一般英文內容低,所以就算英語沒那麼好,官方文檔也可以拿來利用。
新興的類似Udemy這種網絡教學服務、SoloLearn這種編程學習APP。不但能用起來更直觀,內容更新也比傳統媒體快很多,很多方面超越了紙質書籍。
這些APP可以幫到你:
SoloLearn:免費手機學習服務與APP,同時支持10幾種程式語言,可以在線運行代碼。
Coursera、Udemy、edX :世界一流的在線教學服務,名校講師、業界名家親自講課。
谷歌翻譯:久經考驗的翻譯工具,翻譯技術文檔效果不錯。
選擇IDE、配置編程環境準備編程環境、熟悉工具用法
開始學習後、新手最初遇到的問題、就是「用什麼工具寫程序、怎麼讓代碼跑起來」了吧。常用IDE、編輯器花樣繁多,讓人眼花繚亂。不同人有不同的喜好,和選擇語言一樣、爭議非常多。
對新手而言,為了降低學習難度,還是應該 「具體領域、哪個用戶多就用哪個」。舉例來說, IOS開發自然是Xcode 。C#的話,微軟家Visual Studio比較靠譜。JavaScript有輕量級的Visual Studio Code。JAVA相關,一般推薦jetbrain的IDE。
如果需要Linux命令行工具,可以考慮在PC上面安裝虛擬機(VirtualBox)。安卓手機上面,也有Termux這種運行常用Linux命令的應用。
選擇太多、不知道怎麼辦的話,按照還可以參考各種教材。掌握基本流程後,接下來就各顯神通了。對摺騰黨來說,Vim、Emacs也能定製成IDE。
這些APP可以幫到你:
Stack Overflow:絕大多數新手的問題,在這裡都有解答。還可以幫別人解決麻煩、鞏固知識。
Virtual Box:免費開源虛擬機,隨便折騰各種系統,不怕弄壞物理機。
去敲代碼
這一步大概是學習編程過程中耗時最久、也是最重要的階段了吧。不管是書籍,還是視頻教程,自學的人都要跟著寫代碼、學習基礎語法、了解「函數、類、對象」概念、做各種習題、消除意外出現的BUG。
接下來,還可以去類似Leetcode這種在線算法網站做習題。了解算法、數據結構知識。找編程工作的過程中,做題的經驗也能幫你在筆試中取得好成績。
學完基礎語法與概念,並不表示任務就完成了。將知識轉換為技能,還需要動手做項目。需要注意的是,一般人需要的功能、很可能有別人寫過了。於是,比起重複發明輪子,不如參考一下別人的做法。
借用別人的代碼,應該了解一下MIT、GPL等常見授權協議的區別,看一下在什麼前提下可以使用別人的代碼。
那麼,要到哪兒去找別人分享的代碼?那當然是全世界最大的開源平臺Github了。在這裡,還可以提交代碼、幫別人改進軟體。
這些APP可以幫到你:
算法動畫詳解:用動畫展示排序算法、還有詳細分步解釋。
OpenHub:簡潔的第三方安卓github客戶端,比官方好用。
計算機技術,一直都在快速進化。跟上時代的大潮,一生都離不開自主學習。堅持下去,除了毅力,還需要強烈的好奇心。想要行動的朋友,上面介紹的APP都可以通過谷歌空間搜索體驗。有什麼使用和學習心得,也歡迎大家留言討論。