如果學習程式設計可以重來

edithfang發表於2014-11-30
在過去的幾個月裡,我一直在學習用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的動機比以前學習任何其它語言都要強烈,因為我想開發的私人專案在鼓勵著我。

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

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

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

注1:小黃鴨除錯法,又稱橡皮鴨除錯法,黃鴨除蟲法(Rubber Duck Debugging)是軟體工程中使用的除錯程式碼方法之一。就是在程式的除錯、糾錯或測試過程中,耐心地向小黃鴨解釋每一行程式的作用,以此來激發靈感。
相關閱讀
評論(1)

相關文章