如果學習編程可以重來

jopen 10年前發布 | 6K 次閱讀 編程

英文原文:What I would do differently if I was learning to code today

  譯/臘八粥

  在過去的幾個月里,我一直在學習用 Objective-C 編寫 iOS app,最后我開始理清思緒。這比我想象中要難很多,也花了太長時間。

  我經常遇到困難、感到沮喪,修復 bug 比實際寫代碼要花太多時間。但是,在我的手機上把玩我從頭開發的 app 有一種讓人驚奇的感覺。

  用這種方式我學到了很多,除了開發 iOS app,還有平常的編程。我還遇到了一些問題,如果用不同的方法學習 Objective-C,或許我就可以避免了。

  回頭看,如果我今天要學習編程,那么我會做一些不一樣的事情。

  找到一名編程小伙伴

  我還找到一種學習方法,那就是有一個可以交談的、活生生的人。

  我的合伙創始人 Josh,主要做 Python 開發,實際上和我一起學習 Objective-C,并為我解答了很多編程理論方面的問題(“怎么讓一個 if 語句再次起作用?”),在我真正遇到難題時幫我調試。

  至少有了極具耐心的編程伙伴,他可以解釋基本的編程原則,這是莫大的幫助。在我用 Objective-C 搞清楚具體細節之前,Josh 經常幫助我思考解決某個問題的大部分邏輯方法。

  善用資源

  如果你不夠幸運,身邊缺少有耐心的程序員解答問題,那么,其它一些地方可以讓你從真實的人那里獲得幫助:

  Stack Overflow

  關于具體語法或實現的問題,Stack Overflow 是我最近訪問最多的網站之一。我自己還沒有在那兒問過問題(由于該社區對初學者相當友好,我對提問持謹慎態度),因為我很少需要去問——通過瀏覽其他人的問題的答案,我的大部分問題就得到解決了。

  Treehouse

  Treehouse 通過視頻課程教授編程,還建立了社區論壇,你可以在這里討論有困難的 bug,或者你在聽課過程中碰到的具體練習。

  askadev

  在你需要幫助的時候,askadev 支持你聯系到有經驗的開發者。我還沒有嘗試過這項服務,因此我不知道有多大用處、或是否囊括了所有編程語言,不過它是免費的,下次你有需要,不妨一試。

  Codementor

  如果你想給有經驗的開發者支付現金來獲得幫助,Codementor 會把你和熟悉你在學的語言的人匹配到一起。它們涵蓋了 Android、iOS、HTML、CSS、PHP、Python,以及很多技術。

  小黃鴨問題的解決

  如果你以前沒有看到,《小黃鴨式解決問題》的博文是非常有用的。具體操作是:對著一個小黃鴨或其它靜物,比如面包機,闡述你的問題,大聲點兒。 大聲講述問題的過程,經常有助于你自己意識到答案(或至少知道錯在哪里了)。我已經發現,大聲地討論我的代碼是一種難以置信的好習慣,每次在我找別人幫忙 之前,我都要盡量這樣做。

  學習規范

  在我學習編程的時光里,最影響我的就是對于我正在使用技術的誤解和陌生。比如,開發 API 意味著我需要理解 API 的工作原理、怎樣使用 POST 和 GET 請求、怎樣分析 JSON 數據,甚至我需要掌握接收 JSON 數據。

  學習 Objective-C 不是開發 iOS app 所需要知道的全部,至少,不是我想開發的那種。我犯了個錯誤,我認為只要知道 Objective-C 就行了。甚至更糟糕的,我經常遇到困難,因為 Stack Overflow 回答問題的人、在線教程和書籍章節都在解釋如何用 Objective-C 開發,完全跳過了必需的、我需要知道的、基于 web 的原則,因為他們認為我知道了。

  如果我今天重新開始,我將首先補充、積累 HTML 和 CSS 方面的知識。當我開始碰到一些我不太了解的新技術時,在準備用 Objective-C 實現之前,我會大概了解一下。

  任何語言都可以起步

  如果你真的不確定從哪里開始,或者你想開發什么,請不要因此受到影響。雖然我花時間學習 Ruby 和 Python、還沒有用它們完成任何項目,但是我不覺得時間被浪費了。

  初學者通常的起點是學習 HTML 和 CSS 去開發網站。它們實際上是標記語言,如果你想開發移動或 web app,貌似學習 HTML 和 CSS 是浪費時間。但是在這種情況下,你將獲得知識和經驗,對你繼續學習編程語言是有幫助的。

  如果你急切希望開始學習編程卻不知道從哪兒開始,就挑一本書、教程或在線課程,只要你喜歡,就搞定它!一旦你對想開發的東西有了更好的理解,你總是可以選擇學習一種不同的語言。

  找到你真正關心的項目

  對我而言,最大的學習曲線可能就是找到讓我堅持學習代碼的動機。過去我嘗試了很多次:在我小時候學習 HTML 和 CSS,幾年后學習 Ruby 的基礎知識,最近在學 Python。

  我決定學習 Objective-C,不是因為它勝過了 Ruby 或 Python 我才喜歡,也不是因為我認識學 Objective-C 的人,只是因為我有一個 iOS app 的想法清單,我想完成——我真的想去開發。

  我學習 Objective-C 的動機比以前學習任何其它語言都要強烈,因為我想開發的私人項目在鼓勵著我。

  最重要的是,隨著難度加大,我感到沮喪、遇到困難時,我沒有放棄——因為我正在開發我真正關心的項目。每次我設法實現一些新功能,運行良好,得到的收獲甚至更好了,因為它是我有激情的項目的一部分。

  如果你正在考慮學習編程,而你沒有選擇語言或平臺的任何限制,我明確建議選擇你真正有激情的項目,這樣才能為項目需要所選擇的語言打下基礎。


  每個人的學習方法都不同,因此你可能有著與我不同的經歷,不過如果你只是剛起步、或在考慮學習編程的事情,那么希望我的經驗和錯誤能幫你學得更快。

                    <span id="shareA4" class="fl">                  
                        </span>
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!