你應該要嘗試的 WDL(Writing-Drive Learn,寫作驅動學習)

神Q超人
Starbugs Weekly 星巴哥技術專欄
10 min readSep 15, 2020
Photo by Glenn Carstens-Peters on Unsplash

Hi!大家好,我是神 Q 超人!這篇文章一樣先不談技術,想要和大家說說我已經持續快三年的習慣(其實我滿訝異自己能夠維持一個習慣那麼長的時間),那就是打技術文章這件事情。

先說結論,我認為編寫技術文章加速了我學習的速度和深度,也開拓了我與許多人的連結,包含各位正在看的 StarBugs 😃。

這篇文章會分成以下三個部分,說明寫技術文章的幾個階段:

  1. 為什麼要寫技術文章
  2. 寫技術文章的優點和幫助
  3. 不寫技術文章的可能原因

我會試著不讓文章的長度大暴走 😂,希望可以藉由自己的經驗幫助到大家囉!

為什麼要寫技術文章

這個問題非常有趣,大家可以試著回想一下,從以前開始讀書,就會透過書寫來加深記憶力,或是把常用到的東西用自己的方式筆記下來,讓以後可以更容易且快速的翻閱和理解。

上方那理所當然的事實,在程式上卻有點變化,我們不會想說要把程式碼給筆記下來,因為程式碼本身就是一種撰寫。寫過的程式碼會被保存起來,所以寫程式本身就是一種紀錄方式,當我們忘記某些用法時,就會去找曾經做過的類似功能,遇到沒經驗的問題,就會到 stack overflow 中尋找答案來複製貼上

到最後寫程式這件事情,就會讓你產生你有在思考或你已經會了的錯覺

你學會的只是寫程式,而不是程式。

很多時候新手都會在實戰中學習程式,不論是工作或是 Side Project,我們都用最短的距離去學會某些程式語言,然後用程式達成目的以及我們的目標。透過實戰來累積開發經驗是很棒的一件事情,但是當你在開發的時候,有曾經想過為什麼要這樣子寫程式嗎?

聽起來可能很奇怪,但是知道為什麼寫下程式碼其實是很重要的事情。因此我們需要去思考、閱讀然後了解程式碼,就像小時候讀課本學習單字以及文法一樣,但偏偏能夠好好閱讀程式碼的機會卻很少。

而寫下技術文章,就是其中一種方法,一種好好理解程式碼的方法。

當然還有其他方式,像是 Code Review 或…呃…對,像是 Code Review 等等,能夠讓自己或和別人一起再一次閱讀寫過的程式碼,並且討論用意也是很棒的選擇!但是邊緣人如我,沒有朋友可以陪我 Code Review 或討論怎麼辦 😭?

試著寫些技術文章吧!或是說當成自己的小筆記,安排一些時間記錄自己學到了什麼,在紀錄的過程中,你會把程式碼一一列在文章裡,並且試著解釋這段程式碼發生了什麼事情。

寫文章就像是和自己對話,你會告訴自己程式碼所做的一切,以及思考為什麼這麼做和意義是什麼。

寫技術文章可以讓你更加了解自己和本身擁有的知識。

寫技術文章的優點和幫助

就像上一段最後說的,寫下技術文章或是一些筆記,是能讓自己更了解程式碼的機會,所以其實打文章不為別的,最主要的原因就是幫助自己,不再只是寫程式,還能夠了解程式。接下來就說說打技術文章能夠帶來什麼幫助吧!

發現自己的不足,內化知識

察覺到自身的不足在只打程式的時候特別難注意到,因為工作上的需求大部分都可以透過 Google 得到答案,這時候就會覺得自己已經有做過或是會了,然後就把它放在角落,等需要再拿出來使用。

對你已經會用了,但你了解它嗎?不知道大家是否曾經有過類似的經驗,就是想試著和其他人解釋一段程式碼,但是卻怎樣都無法擠出一些好的說明。這就是問題所在,因為你根本就不知道你自己做了什麼。

打技術文章或筆記放大了這一點的存在。因為你必須要在文章裡解釋它,所以當看到不懂的程式碼,就會讓自己思考「這一段的意思是什麼?」、「為什麼要這麼寫?」、「我要怎麼解釋會比較好?」,你會透過詢問自己,一直到把它在 Google 查到的許多文章中遊走,最後找到你能夠理解的說明,並用屬於自己的文字再闡述一遍。

這就是一個將知識內化的過程。

在這個過程裡,你先是認知到了自己的不足,然後尋找答案並且吸收,最後再將學習到的知識輸出。所以打文章不只是打文章而已,它是一個思考的過程,就像現在我也不斷的在思考該怎麼正確地寫下我想表達的 😂。

全世界的工程師都在幫你 Code Review

因為你將文章發表到網路上,而不是自己在筆記本抄抄寫寫,所以會有許多人能夠看見你的文章,當你對自己理解的知識感到疑惑,希望有人可以討論,將文章發表到社群也是很棒的選擇,我一直相信程式之路一個人走絕對很辛苦,你會不曉得自己的程式碼到底好不好、想法正不正確,這些疑慮都在只有自己的時候,沒有辦法得出答案

但當你把文章發布出去的瞬間,你就不是一個人了。

代表你想法的文章會被其他人看見,他們在閱讀完後也會留下他們的想法讓你參考,你可以在網路上和所有工程師一起討論你正在學習的技術,並且了解其他人如何思考同一件事情。這時候你的學習之路就不是一個人了,而是與所有看過你文章的人一起前進,如果你能夠靠自己的思考與理解打出一篇好文章,那你一定能再透過其他人的建議將文章變得更好 🙌。

與他人的連結

我覺得這一點算是附贈的,但是對我而言真的因為寫文章而認識了許多人。如同前言說的 StarBugs 的團員、社群的大大們,只要見面通常都可以聊上幾句,然後加個聯絡資訊,之後遇到問題也能請教或聊天喇賽。但關於被認出來這件事也可能是我的筆名太ㄎㄧㄤ了,辨識度夠高,或許大家也可以選擇取個特別的暱稱 😂?

除了見面可以用「我有在寫文章」開頭當作裝熟外,打文章也讓我得到一些特別的機會,例如被邀請當講者,分享一些對方有興趣的主題等等。說不定還會有一兩個案子找上門哦!

但最後還是要說,這些都是附贈的。只是因為對我來說這些遭遇太奇妙才決定把它列出來,在這段我主要想表達的是,打文章最大的收益者絕對是自己,而其他的一切都是看你如何用文章呈現你的熱情,以及紀錄學習的過程和思考方式而得到的效益。

建議各位不要把那些效益當成主要的目標,想著文章必須要做到一定的程度才會有人看到,而遲遲不踏出第一步,蹲的越久,腳只會麻掉而已。技術文章是慢慢累積起來的東西,它會跟著你一起成長,不論一篇文章內有多少都無所謂,因為你是為了自己、為了學習程式而寫,其他的一切就當作浮雲吧 ☁。

不寫技術文章的可能原因

最後來聊聊為什麼不寫技術文章吧!其實寫文章就像做 Side Project 一樣,雖然明白的知道可以學習到很多東西,但是總有些理由會讓你遲遲不踏出第一步,以下是我詢問幾個朋友和陌生人(咦?)歸納出的幾個原因,阿我也會針對那些理由提出我的看法。

不知道要寫什麼

這是一個很常見的問題,但這個問題的盲點在於,大家都會覺得技術文章就是要打自己知道的知識,如果自己什麼都不會,就沒什麼好打的。

大錯特錯!

如果你現在還這麼想,就代表你沒有好好看文章上方的內容,打文章是一個內化知識的過程,即使你在開始之前什麼都還不會,你也會透過查資料、閱讀、打範例、學習、內化、輸出,這一連串的過程中,在打完一篇文章的同時學習到一項新的技能,打文章能讓你在學習的時候不只是看和使用而已!也包含了 input 和 output!

怕寫的內容太淺了

如果你現在還有這個想法,那也代表你沒有了解我上方所說的。打文章是為你自己的學習而打,完全不需要去在乎其他人的眼光。今天你自己打了一篇文章,那學習到的知識就是那篇文章裡的內容,就算淺淺的又怎樣?能不能透過撰寫文章的過程學習到自己想要的知識,才是最重要的

根本就不會有人因為你寫的文章內容太淺了,而和你說「欸!我覺得你應該要刪掉這篇文章,畢竟變數宣告那麼簡單,不需要特別打一篇文章說明。」

如果有請這麼回覆它:「我發技術文章有吃到你家的米是不是?」

除此之外,也想告訴大家打文章的心態一定要正確,也許你會遇到有人說「欸你打那麼多幹嘛?又沒有什麼用。」、「你那些文章根本沒人會看吧?」、「有時間打文章不如多做工作啦!」(我都遇過哦 😆)

但是如果你很清楚你的目的是為了學習,那上面那些話都不會是讓你停止學習的理由。我相信只要你別失去初心,那一件事情的對與錯,就不會是來自於其他人的同意或是反對。

都有人寫過了啊

你會因為朋友去領了振興券而自己不去領嗎?有錢大家花,有福大家爽,好主題大家一起寫啊!

每個人都有自己獨特的思考方式,以及描述事情的技巧,一雙好鞋子絕對不可能適用於世界上的每一個人,文章也是。舉例來說,當你在查資料的時候一定會遇到打開了文章,卻發現你完全看不懂裡面的內容,但這不是文章寫得不好,只是不適合你。

就像一件綠色的底子帶白色方格的衣料,有些人看起來像棋盤、有些人覺得是綠豆糕或是稿紙,每個人思考同一事情的切入點不一定會相同,所以就算是同一個主題,只要分別透過十個人寫出來,也會有十種不同的風格(和 React 的專案一樣),所以你的文章一定也可以成為世界上某個人的 Mr.Right

怕誤人子弟

這個就比較嚴重了,我現在在打文章的壓力幾乎也都是來自於這一點,但這是很正常的事情,如果不小心對某項技術理解錯誤,然後又發布在大家都看得到的網路上,那會有多少人因為看了自己的文章而吸收了錯誤的資訊?

會有這個考量其實就代表你是個很棒的人,因為你想要把正確的知識傳達給其他人,所以才會擔心。對於這點,我建議大家打完文章後,可以請朋友幫你檢查看看,確認內容是否正確,如果有問題的話就可以趕快改一改,儘早修正自己的觀念和文章的內容。

那沒有朋友怎麼辦?放心!只要把你的文章分享到 Facebook 之類的社群平台,全世界的工程師都在幫你 Code Review,很快地就會得到大量的回饋!不論是好是壞的留言都可以成為你進步的動力。

不過我不會希望你是怕被罵,而不去做這件事情,因為這樣你等於放棄了學習更多的機會。嚴重的話可能就會一直擁抱錯誤的知識開發,反而造成惡性循環。

花太多時間

我常聽到有些人會覺得寫技術文章太花時間了,但這不就是你學習花費的時間嗎?也有另外一種說法是,我懂這個技術啊!但是要描述出來就又是另外一回事了,這個我非常認同,但是如果你不試著說說你會的技術是什麼東西,那你在面試的時候該如何對面試官解釋?

個人覺得寫文章所花費的時間是相當有價值的,因為你所做的一切都是在思考,你尋求完成這篇文章的內容,你會渴望去學習到對應的知識量,並且將那些知識從你的頭腦重現到文章裡。

順帶一提,其實更新文章的頻率也不需要太高,可能一兩個禮拜甚至是一個月一次都可以,只要能夠安排個固定時間讓自己學習就好,盡量別為了寫文章造成自己的壓力,這樣子很快就放棄了 😂。

那以上是我整理出來比較多個大家提到的理由,如果各位還有其他猶豫的點,願意的話再麻煩留言告訴我,我很樂意和大家聊聊 😃。

結論

雖然本篇的內容感覺把寫文章這件事情神話,但也想告訴大家,寫文章並不是唯一一個學習的方法,像是文章裡也有說到,每個人思考的方式都不同,學習的方式也有可能會不同。

就像開發模式也有 TDD、DDD 或 BDD 一樣,WDL 也只是一種透過撰寫技術文章來讓讓自己沈浸在學習裡的方法,並且為每一次的學習都留下紀錄,還能夠時常回去閱讀自己稚嫩(?)的模樣,對於愛講幹話又愛寫作分享的我,真的很推薦給大家!身邊已經有好幾個人被我推坑而開始寫文章了 😂。

如果你也決定開始了,歡迎在下方留言告訴我你的 Blog,我通通訂閱訂起來!

--

--