91 哥寫過一篇文章叫做《我為什麼鼓勵工程師寫 blog》,跟大家談談我經營部落格的原因以及部落格成長的歷史。

呼籲工程師要來寫部落格的文章不少,但儘管如此,還是許多人遲遲沒有開始行動。前陣子的教學帶了一些學生,我也是不斷提醒他們寫部落格的好處並且建議他們有空的時候可以寫寫心得,但是會這樣做的人還是不多。

寫心得是需要練習的,就跟說話以及分手也是需要練習的一樣,你看我這樣批哩啪啦咻咻咻就完成一篇文章以為我天生神力,卻不知道我從小學二年級就開始練習了。

身為一個老師十分需要學生的回饋,有了這些回饋才能幫助我改善課程。若是大家都不太敢寫也不太會寫心得,那我的進步空間就十分有限。有鑑於此,我決定來寫一篇文章跟大家說說寫心得的好處,以及為什麼初學者更應該寫心得(其實 91 哥那篇就寫得很棒了,強烈建議大家先看過那篇)。

寫心得的好處是什麼?

直接開門見山跟大家講最大的一個好處:

幫助自己

對,不是為了流量、不是為了名聲,也不是為了可以放在履歷上博得好感,寫部落格最大的好處是可以幫助自己。

舉例來說,一些比較少用的技術你不可能時時刻刻都記著,你一定會忘記。忘記的時候怎麼辦?只好重新學一次囉,或是看能不能找回一點記憶,可以更快想起來。這時候如果你以前寫過心得,事情就變得容易多了,只要把自己以前的心得再看一次就好。

為什麼這樣就可以?

廢話,因為是你寫的啊。只要不要過太久,當時寫的內容你一定會記得一些,看到心得筆記的時候整個回憶都會被喚醒,用更快的時間幫助自己重新學習一次。

像是我忘記 Generator 時可以看 ES6 Generator 基礎,忘記 iTerm2 的設定時可以看 [心得] iTerm2 + zsh,打造更好的工作環境,根本超級方便。

或者像是我前陣子教我學生一些部署相關的東西,他寫了一篇《一小時完成 VPS (Virtual Private Server) 部署》,每次要處理相關的問題時就可以直接參考這篇而不是從頭開始重新查一次相關資料。

我先不跟你談什麼寫部落格可以幫助其他人,那都是之後的事了,先幫助到自己比較重要。

除了幫助未來的自己喚醒記憶以外,還有一個好處是能夠幫助自己重新整理知識。無論你文章寫得好或壞,光「寫」這件事情本身就是個把資訊消化以後重新輸出的過程。

先簡單總結一下,好處之一是幫助自己日後喚醒記憶,好處之二是幫助自己重新整理知識,總而言之,最大的目的就是幫助自己。

破除妨礙你寫心得的迷思

寫心得筆記的好處或許大家都知道,但阻礙自己寫作的原因往往勝過於好處,所以大家才會不敢行動,接下來就讓我們來破除一下這些迷思。

我怕我寫得不好,被別人看到很丟臉

第一,你又沒有知名度,誰會來看你寫的筆記?不要在那邊假想觀眾了,你的部落格可能根本沒人看。

第二,就算真的有人看好了,那又怎麼樣?阿我就只是寫個心得筆記放在部落格,你也只是剛好路過看到而已,我寫得很爛又怎麼樣?又不是寫給你看的。

給大家看一下我部落格的第四篇文章的內容,標題是 [Android] 筆記集合

Android Open Source Projects
https://github.com/Trinea/android-open-project
筆記一下 以後或許有機會用的到

對,不要懷疑你的眼睛,就是這三行。可是又怎麼了?我本來就是寫筆記給自己看的又不是寫給其他人,我只是把它當作免費的 Evernote 在用而已。

所以呢,何必擔心其他人的眼光。

再退一步好了,如果你還是很擔心的話你就寫在一些私人筆記軟體上好了,這樣就沒話說了吧。

最後我要引一段 葉妮姍 Nissen Yeh《Day30:鐵人賽  — — 30 天可以給自己多大轉變?》中寫的一段話來作為這個段落的總結:

▌ 最好,是更好的敵人
剛開始覺得好焦慮啊。
因為學期真的太忙了,平時已經有 23 學分+工讀,還要一次寫兩個挑戰,還要抽時間去運動
今天寫完,明天就來了,覺得時間根本不夠自己把文章寫到讓人看懂,而且都不夠有深度,讓人覺得很不專業。
但是回想自己的初心,我不過只是想逼自己每週多學一點東西而已
我本來就是初學者,我為什麼要害怕讓別人知道我不夠強呢 XD?
如果有力氣,那就把學習心得整理的讓人看得懂;如果力不從心,就老老實實認真記錄自己的進度就好,不用在意他人是否能夠閱讀。
我最喜歡的計算機科學家吳軍說過  — — :**最好,是更好的敵人**
進步總是一點點日積月累的,很少是一步到位。
一開始就完美主義,只會導致自己裹足不前。
只要從現代開始慢慢變強,相信總有一天,我也能成長成得以寫出有深度內容的人。

我怕寫的東西別人已經寫過了,跟別人觀點差不多

前面我有講過,寫文章最大的好處是幫助自己。

既然是幫助自己,那何必擔心寫的東西跟別人差不多?在學習的初期基本上都是從模仿開始,而且文章的靈感或是內容可能都是某本書或是某堂課程所帶給你的,所以寫出來的東西跟別人的差不多是很正常的一件事。

尤其是很多文章其實都是「看完某個教學之後的心得筆記」,既然是筆記,就代表是用自己的話、自己的理解把課程內容再闡述一遍,所以所有跟你看同一個教學的人寫出來的東西都差不多(例如說 JavaScript: Understanding the Weird Parts 的筆記文)。如果是教學文,重複也很正常,因為一般的流程就是介紹、安裝、帶著實作等等。

如果你有獨特的觀點那當然很好,但沒有也沒關係。要想想自己寫文章的目標是什麼?是為了成一家之言,擁有自己獨特的觀點,分享給別人之後可以得到讚賞嗎?還是為了幫自己消化吸收而來的知識,重新整理之後再輸出?

如果只是幫助自己重新複習學到的知識,那何必擔心跟別人的內容類似?

我不知道要寫什麼

如果這是你唯一的問題,那恭喜你,你的問題很好解決。

不知道寫什麼的話,就從流水帳開始。你就當作日記在寫,寫一下自己今天做了什麼、學了什麼就行,或甚至只貼幾個當天看過的文章連結也行。

寫自己今天做了什麼應該沒什麼困難吧?沒有限制字數,你要寫長寫短都可以,但重點是你一定要寫些什麼。

舉例來說,我今天的心得筆記可能長這樣:

看了跟 PWA 有關的一篇文章,覺得跟想像中不太一樣,把之前說要寫的文章寫完,明天準備發布。有了新的 idea 開始了一個新的主題,被朋友問了 JS 相關的問題

看起來很沒重點而且沒什麼內容,廢話,因為這是日記啊。

誰說寫部落格不能當日記在寫?誰說心得筆記就一定要寫得很專業?誰說技術文章一定要寫的很有品質?

那些都是後話,都是你現在不用考慮的事情。初學者做事情要一步一步來,先求「有」再求好,你連「有」都沒有了要怎麼求好。

不知道寫什麼的話就從日記開始寫,簡單記錄一下自己今天做的事情或是想研究的東西,寫著寫著一定會有靈感,你就知道該寫什麼了。

為什麼一定會有靈感?

因為你一定會碰到問題,而且是會讓你想要記起來的問題。例如說今天寫程式碰到一個 bug 解超久,我相信你解開的時候會很想要寫一篇文章記錄,因為你不記起來的話下次碰到又要再花一堆時間。

或者是你解決了一個很難的 bug 覺得很有成就感,也會想要寫成文章記錄下來,算是幫自己留個紀念。

就算沒有靈感也沒關係,反正就當日記在寫就好。

解決了害怕寫得不好以及不知道寫什麼兩個問題以後,你大概就沒什麼藉口來逃避寫心得筆記這件事了。

最後再給你一顆定心丸,也就是我要談到標題所說的那句了。

初學者才更應該要寫心得筆記

前幾天跟一個朋友聊天,他說覺得弱弱的心得文被厲害的人看到會有點丟臉,我回他說:

弱弱的心得文才珍貴好不好,因為一堆人都抱持著這樣的心態,導致這種新手心得文變得稀少,物以稀為貴

這不是什麼安慰的話或是心靈雞湯,我是真的這麼想的。

你今天不知道什麼是 Session,網路上有一堆教學文;你不知道什麼是 React,也能找到一輩子都看不完的資源。

可是假如你今天寫到迴圈的時候卡關,你大概只能找到迴圈的教學,而不是曾經卡在迴圈的人的心得。

為什麼?因為沒什麼人分享,大家在新手階段的時候都沒有培養起寫心得筆記的習慣,大多數人都是學一陣子甚至是工作之後才開始寫的,所以這期間就變成了一段空白格,你很難找到剛學程式的人的心得。

我很喜歡看程式新手的各種學習心得,例如說《Ruby on Rails 新手自學的各種血淚與經驗分享》、《從學習者角度探討跨領域線上自學時的心態議題:以 MOOCs 學習網頁前端設計為例》以及《[心得] 轉職工程師,自學程式失敗心得》

這些對我來說是很珍貴的心得,因為這些心得文告訴了我們程式新手最真實的感想。身為一個不斷想要試圖讓學程式這件事情變容易的人,這些是很珍貴的寶藏,因為這些心得都是我沒辦法辦到的事。

什麼意思?

我記得我一開始接觸 C 語言的時候,光是看語法就被嚇傻了,那些大括號跟分號讓我覺得程式語言好複雜。但是我現在看 C 語言的程式碼,可以很清楚地看到架構、看到一行行程式碼所代表的意思。對十年前的我來說,就算是 C 語言的 hello world 也是很困難的東西,可是對現在的我來說,我會覺得 hello world 很簡單,就算是 C 語言也很簡單。

我失去了站在初學者的角度去看事情的能力,而且這能力我沒辦法找回來,因為我已經不在那個階段了。你寫程式的那些陰影魔障,對我來說都不放在心上。

儘管我可以試圖去同理,試圖一行行去解釋雙層迴圈到底在做什麼,但我沒有辦法感同身受,因為我怎麼看雙層迴圈都覺得這很簡單,不就是那樣嗎。我可以認同雙層迴圈對新手很難,因為十年前的我也是那樣,但十年後我並不知道難在哪,我也忘記當初卡關的點是什麼了。

沒辦法感同身受,那我要怎麼教的更好?

靠你跟我說。

靠學生跟我說他們卡關卡在哪裡、哪個地方覺得不懂,是對整個語法都不懂,還是對概念也不懂?我拆成這樣之後會幫助你理解嗎?我用這種方式教學會幫助你理解嗎?

這就是為什麼我說初學者的心得對我來說很珍貴,因為你們才是那個最能感同身受的人,而不是我,現在不是我,以後也絕對不會是我。從心得裡面我可以看出你卡在哪裡,甚至可以看出你是得到了怎樣的幫助後才破關。

我在設計課綱的時候,是從我的角度出發,我覺得這個對新手來說 ok,我覺得這個作業應該不會太難。但真正要寫作業的是誰?是那些程式的初學者,難不難是由他們來認定的,而不是我。我能做的只有猜測還有盡可能地同理。

像是我之前的課綱我以為還行,但學生實際上過之後才發現根本不行,進度趕火車,喔不,根本就趕高鐵,一大堆的人進度跟不上。就是因為有學生的心得與回饋,我才能知道程式初學者到底在想什麼以及卡在哪裡。

我從以前就一直認為教學這種事,程度差異越大就越難教,就像你讓一個二十年經驗的工程師教別人 if else 跟 for 迴圈,他大概只會覺得這那麼簡單有什麼好教的,不就寫個兩三次就上手了嗎。可是對初學者來說絕對不是那樣,絕對沒有那麼簡單。

所以教學這種事,程度相近會越好教,例如說剛領悟迴圈的學生去教還沒學會的,對學會的人來說他的知識是熱騰騰的,是剛從烤箱出爐沒多久的超級新鮮的知識,所以對迴圈的感受最深也最知道該從哪裡去突破。這樣子的教學我覺得會更有效益一點。

像我這種資深的去教初學者之所以困難,是因為我沒辦法感同身受,只能靠著經驗累積,不斷地去詢問學生卡在哪裡,再依據他們的回饋改善課程。

所以呢,就跟我開頭講的一樣,初學者的心得對我來說才是最寶貴的。為了要讓初學者們勇於寫心得我才寫了這篇文章,想告訴你們說:

嘿,真的不用害怕,你就當寫日記就好,有靈感的時候再寫其他的就好。你的心得比你想像中的更有價值,我是認真的。

我決定來寫心得了,該如何開始?

上面看了這麼多你可能有一點動心,磨刀霍霍向豬羊準備要開始來寫心得筆記了,可是要怎麼開始呢?

首先當然是找個平台嘛,找個方便好用的平台可以事半功倍。

我這邊直接推薦你一個冷門的地方,叫做 GitHub。咦,GitHub 並不冷門啊,一大堆人都在用。可是用 GitHub Issues 來寫部落格就比較冷門了,我自己也是近期才意識到這樣做的好處。

優點

  1. 程式碼支援超完善,至少比 Medium 簡單多了
  2. 完整支援工程師必會的 markdown 語法
  3. 內建評論以及 emoji 表情系統,討論方便
  4. 有其他 issue reference 到的時候會自動有標示
  5. 介面超級簡潔

缺點

  1. SEO 不太好,沒辦法修改那些 og tag
  2. 承上,會導致比較難分享出去
  3. 可能不太適合非工程師的心得筆記
  4. 沒有草稿功能(這點要寫長篇的話的確不太方便)

以我來說,我把像這篇這種偏軟文的文章放在 Medium,把比較硬的技術文章放在 GitHub,目前的體驗我都覺得滿不錯的,我兩個學生也有試著把心得筆記放在 GitHub,大家可以看看會是什麼樣子:futianshenenter3017sky

以上講的其實都比較偏工程師,如果你不是工程師的話,可以考慮以 Medium 作為首選的平台,使用起來簡單容易,沒有太多餘的功能,可以讓你很專心的在寫作這件事情。

很多人在挑選平台這件事情上會花很久,這其實是阻礙你寫作的第一步。如果你不是什麼網紅或是作家,選對平台沒有那麼重要,因為你搬家的成本很低。

假設這個平台真的很不適合你,你應該寫個五六篇就會有感覺了,這期間你也累積不到什麼觀眾,可以無痛轉移到其他平台繼續寫作。所以不要再煩惱要選什麼平台了,先開始寫比較實在。GitHub 跟 Medium 選一個吧。

(更新:後來因為 GitHub Issues 的 SEO 實在太差,所以我換到 hexo 去了)

總結

之前聽一個朋友說他修了一堂跟畫圖有關的課,老師建議大家每天畫一張圖然後拍照作紀錄,畫什麼都行,但一定要畫。有不少人參與這個活動,甚至也有不是修這堂課的人看到這個覺得很有趣所以一起加入。

這其實可以應用到寫心得筆記上面,每天寫一篇,寫什麼都可以。聽起來有點像是 iT 邦幫忙鐵人賽,但沒有競爭、沒有名次也沒有獎金,應該也會比較沒有壓力,你就算 po 個三個字也行。

當下聽到這方法我覺得滿不錯的,其實就是培養習慣,每天寫一點點,累積了三十天後會發現其實也寫了不少東西。之後的教學計畫我會把這點也加在裡面,讓學生每天都試著 po 一篇心得,不管 po 什麼都可以。沒時間只是藉口,po 一篇文章五分鐘十分鐘怎麼會沒時間。

總之呢,誠心建議初學者們可以開始寫心得筆記,先從寫日記開始,簡單記錄自己學了什麼就行,就算不完整就算寫得很爛也一樣照 po,不斷地寫不斷地寫才能進步。

每天成長一點,就能變得愈來愈好。