# 自學程式，你應該知道的四件事情（四）設定容易評量且具體的學習目標

> 在這個「全民學寫程式」的年代，寫程式變得越來越容易，很多人開始前，都會想「我該學什麼程式語言？」，這篇文章，我將帶你透過系統性的思考，來破解「該學什麼程式語言？」的迷思。

Published: 2020-04-28
URL: https://kaochenlong.com/set-your-learning-goal

---

在這「全民學寫程式」的年代，寫程式的門檻逐漸降低，無論你是打算成為軟體工程師、還是希望透過「自學寫程式」來提升自己的職場競爭力，我都想跟各位分享四件事情；這四件事情是我過去寫程式二十多年以及教學十年經驗來所累積的心得，目的很簡單：

「協助你縮短程式語言的學習時間，並達到更好的成效」

而這篇文章討論的主題是「設定容易評量且具體的學習目標」，我們現在開始吧！

&lt;!-- more --&gt;

1. [我該學什麼程式語言？](/2019/07/19/how-to-choose-a-programming-languge/)
2. [對新手來說，如何「喜歡上寫程式」？](/2020/03/06/enjoy-programming/)
3. [程式的學習曲線與大魔王「絕望沙漠」](/2020/03/07/despite-of-desert/)
4. [設定容易評量且具體的學習目標](/2020/04/28/set-your-learning-goal/)
5. 工商：[學習程式到轉職工程師](/2020/05/13/become-a-developer/)

如果你已經閱讀完前面三篇文章，你應該是屬於「會寫一點點程式、還想把程式學得更好」的朋友。從我過去十年的教學經驗裡，我發現，學習程式（甚至是任何事情），最困難的點，不是這件事情本身很困難，而是你找不到好的目標、好的挑戰，來讓自己有所成長。

有一本我覺得很適合所有學習者看的書，書名叫做「[刻意練習](https://www.books.com.tw/products/0010752714)」，在這本書裡非常強調：

1. 具體的目標
2. 實作後的反饋

為什麼我會說，「學習程式本身不困難，最困難的是，找不到好的目標作為自己的挑戰」呢？根本原因，會回到上一篇文章的「現代軟體開發」產生的結構性問題，可以參考[程式的學習曲線與大魔王「絕望沙漠」](/2020/03/07/despite-of-desert/)。

由於「現代軟體開發」所要學習的前置準備太多，如果無法設定一個具體的目標，很容易就會不小心卡在一個地方而出不去。舉例來說：

- 我的 Linux 系統的操作能力應該要學到什麼程度？我應該去買一本「[鳥哥的私房菜](http://linux.vbird.org/)」來讀嗎？
- 我的程式基礎會不會不夠？我不了解 pointer、記憶體位置這些資訊，我該去學 C 或 C++ 之類的程式語言來補足嗎？

沒有具體的目標，很容易失去焦點；一但失去焦點，就容易陷入「絕望沙漠」的陷阱，因為你不知道為何而學、學了有何用，無力感從心底湧上。

## 如果還沒有自己的作品...

如果已經會寫一點程式，但還沒有自己的作品，我該怎麼辦？

如果沒有，就現在開始動手做一個吧！如果你還沒確定要做什麼，可以跟著小弟的拙作「[為你自己學 Ruby on Rails](https://railsbook.tw/chapters/00-about.html)」一起學 ruby on Rails；如果你剛好也方便來台北，可以在每週二的晚上，參加我們舉辦的 Ruby 的社群活動[默默會](https://www.facebook.com/rubymokumokukai/)。

有了作品之後，怎麼知道它是不是個合格的作品呢？其實只要把它放到網路上給大家試用看看就知道了。開始有使用者，就會開始感受到壓力，也許使用者會喜歡、也許不會喜歡，或是給一些批評，或是提出更多的功能需求，不管如何，你一定可在這過程中學習到更多系統開發的技能。

備註：由於肺炎疫情的關係，默默會目前暫停舉辦，直到疫情較為紓緩會再繼續進行。但若有任何問題，還是很歡迎到我們的粉絲頁或加我 [Facebook](https://www.facebook.com/eddiekao) 一起線上聊聊。

## 如果已經會寫程式...

已經大概程式是怎麼一回事，也有能力做出基本的小工具，那麼該怎麼持續精進呢？

這個問題，就會回到你的「為何學寫程式」上，如果你的目標，是要幫助你在工作上更順利，例如「寫出一個文件爬蟲，協助你整理公司訂單」。那麼，或許你應該上網找程式家教，請他幫你看「你目前的解法可以怎麼修正」，甚至是「你該怎麼寫出你要的程式碼」，因為你的目標很具體、很明確，這樣的問題，相對容易解決。

如果你的目標，是要轉職成為工程師，那麼，我建議你現在就拿著你的小工具，去面試。

從面試的過程當中、從投履歷的過程當中，你就會發現自己的不足、自己的失誤；從每一次的面試去發現自己的不足 &gt; 設定新的目標 &gt; 透過下一次的面試得到回饋 &gt; 改善。從每一次的輪迴中，強迫自己進到刻意練習的「目標與回饋」的循環。

如果以上四件事情你都明白了、也都在實踐了，那麼，最後我們來談談「[軟體工程師職涯](/2020/05/13/become-a-developer/)」吧！

--待續--


