# 自學程式，你應該知道的四件事情（二）喜歡上寫程式

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

Published: 2020-03-06
URL: https://kaochenlong.com/enjoy-programming

---

在這「全民學寫程式」的年代，寫程式的門檻逐漸降低，無論你是打算成為軟體工程師、還是希望透過「自學寫程式」來提升自己的職場競爭力，我都想跟各位分享四件事情；這四件事情是我過去寫程式二十多年以及教學十年經驗來所累積的心得，目的很簡單：

「協助你縮短程式語言的學習時間，並達到更好的成效」

我們現在開始吧！

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/)

這幾年來，我曾到許多大專院校做授課，也接觸了許多所謂的「本科生」，我發現大家在學完基礎的程式語言以後，就會面臨分岔點，開始變得「更喜歡寫程式」或是「覺得寫程式很無趣」。甚至我在課堂上問同學：「請問哪些同學在畢業之後還願意選擇寫程式當做工作的？」，結果幾乎都只有不到一半的同學舉手。

是什麼樣的因素，讓經歷同樣課程的一群人，有的喜歡寫、有的討厭呢？是天賦嗎？還是個人性向？天賦可能有影響、性向可能也有影響，而從我的觀察中，發現最大的影響因素，是「過少的實作」。

## 過少的實作會導致什麼結果？

許多完成第一個步驟「學習完一個基礎程式語言」以後的同學，無論是自學的學習者、還是在學校經歷大一「程式設計」課程的同學，也許就會開始思考：「我到底適不適合寫程式？」

對於認為自己不適合的同學，我常會內心大喊：「同學，你還沒有體驗到寫程式最棒的樂趣啊！」

當然，「樂趣」這點其實是很主觀的，對有些資工狂人來說，寫出最有效率的演算法、了解底層運作的原理是最棒的樂趣；對實用主義者，寫出很多人會使用的系統或網站，透過自己的程式碼，讓使用者能因為這個軟體而過得更開心；也有些程式語言愛好者，對於該程式語言的語法與文化著迷，因此從中找到樂趣（笑）。

從我的經驗中，發現超過 50% 以上的工程師，當他們發現「自己開發出來的產品有人真的在使用，且讓使用者因為這個軟體而過得更開心」時，就會獲得巨大的成就感，我稱之為「寫程式的 Aha-moment」，也就是令人突然開竅、茅塞頓開的一個瞬間。

如果你已經會寫「基本的程式」但卻無法從中找到樂趣，那麼，我建議你可以開始做一些實作！所謂的實作，可能是網路爬蟲、一個簡單的 app 或是一個能連接資料庫的動態網站！

許多想自學寫程式的朋友，動機其實很單純，可能是：

- 「想把自己部份的工作自動化」
- 「做一個自己想用的工具」
- 「只是想了解一下寫程式是怎麼一回事」

那麼，或許你可以試著用 Ruby on Rails 這套網站開發框架 ，來達到你想要的目的！

你可以使用線上的開發環境 [PaizaCloud Cloud](https://paiza.cloud/en/) 來進行體驗，內容可以參考小弟的拙作「[為你自己學 Ruby on Rails](https:railsbook.tw)」一書的[第 4 章](https://railsbook.tw/chapters/04-your-first-rails-application.html) 。我會帶著你一步一步實作書上的內容，你可以不需要任何程式基礎，只要你有一台可以上網的電腦，就可以跟著我一起體驗一下寫程式的樂趣！

&lt;figure class=&quot;youtube-video&quot; data-id=&quot;QDu1bZeNcbk&quot; data-size=&quot;75&quot; data-caption=&quot;https://www.youtube.com/watch?v=QDu1bZeNcbk&quot;&gt;
&lt;/figure&gt;

如果覺得畫面太小，可直接至 [Youtube](https://www.youtube.com/watch?v=QDu1bZeNcbk) 上觀看。

需要注意的是，開發 Ruby on Rails 的應用程式的過程，常常會使用到「command line」也就是所謂的終端機指令，通常工程師們會稱這個叫做「shell」，各位在我的書裡面出現的 `$` 符號開頭的指令或程式碼，都是在這個「shell」裡面輸入的，但在跟著打的時候那個 `$` 是不需要輸入的。

上面的範例是一個簡單的「部落格系統」，其實就是將資料存進資料庫、並且讓死板板的資料賦予意義後，變成一個「軟體」。因此，如果你將這些概念學起來，你可以完成更多變化的「軟體」！ 舉例來說，剛剛我們建立的是「文章 Post」，但如果你創造的是「書籍 Book」可能就變成圖書館的書及管理系統，如果你創造的是「訂單 Order」，就會變成業務管理系統。

如果你完成上面的小範例，你也覺得有趣的話，就跟著我們往[下一階段](/2020/03/07/despite-of-desert/)走吧 : D

\--待續--

