我為什麼鼓勵工程師寫 blog

  • 工程師該怎樣才能突破自己能力瓶頸?寫 blog!
  • 工程師該怎樣精進自己在職涯上所需要的能力?寫 blog!
  • 工程師該怎樣才能保持學習與成長的動能?寫 blog!
  • 工程師該怎樣才能證明自己的潛力與特質?寫 blog!
  • 工程師該怎樣才能發揮與養成影響力?寫 blog!

本文打算老生常談,從幾個很實務的面向來整理,寫 blog 對你有什麼好處。如果你不需要這樣的好處,或是有更好的方法獲得這些好處,Just do it!如果願意分享讓我可以跟著你一起學習,我將感激不盡。

前言

開始本文之前,我想先引用 Jeff Atwood 在 2007 年一篇文章《How To Achieve Ultimate Blog Success In One Easy Step》中的一段內容:

When people ask me for advice on blogging, I always respond with yet another form of the same advice: pick a schedule you can live with, and stick to it. Until you do that, none of the other advice I could give you will matter. I don't care if you suck at writing. I don't care if nobody reads your blog. I don't care if you have nothing interesting to say. If you can demonstrate a willingness to write, and a desire to keep continually improving your writing, you will eventually be successful. 

大意如下:

當別人請我給他們一些寫 blog 的建議,我總是回他:挑個你自認為可以的時間行程安排,什麼時候開始寫 blog,預計多久寫一篇文,開始動工,並堅持下去。在你這麼做之前,任何建議對你來說都是不重要的你文章是否寫得很糟糕不重要,是否沒有任何人會看你的 blog 不重要,是不是沒啥有趣的東西可以紀錄也不重要。重要的是,只要你能透過寫文來表現出寫作的意願,而且渴望持續地寫作,檢視、思考與改善自己的寫作,你終究會成功的。

對我而言,我很清楚我再怎麼寫,也無法比 Jeff Atwood 在他的 blog Coding Horror 與他的著作《高效能程序員的修煉 (Effective Programming: More Than Writing Code) 》中的內容寫得更好。但我還是會寫一篇 blog 文章,因為我說的是我的 insight,是我思考消化完且累積自己經驗後,整理出來的內容。

我寫文不是要證明我比他們厲害,也不是濫竽充數的拾人牙慧,而只是個練習。練習思考的過程,練習把這麼多 input 的資訊有系統、結構地整理好的過程,練習怎麼表達可以最好理解的過程,練習怎麼透過 blog 來跟外界接觸的過程,練習怎麼建立與發揮影響力的過程。

寫 blog 文章,是種與自我的對話,也是種與外界的聯繫,也是獲得 level up 或 skill learned 的契機。

藉口:我不太會寫文章,不太會表達,沒有東西好寫,沒人會看我的文章

你想讓自己表達能力變好嗎?如果答案是「Yes」,那你覺得沒有練習,表達能力就會變好嗎?

「從腦袋裡面接收到資訊,思考,做出反應外顯出來,達到效果」這個過程是需要大量練習才能縮短反應時間並精準地達到效果。

我想大家都同意,這是個資訊爆炸的時代,每一天都湧出正常人根本負荷不了的龐大且混雜的資訊量。怎麼從這些爆炸多的資訊中,將你有興趣的東西篩選出來在腦袋中分門別類,有系統有組織地過濾與建立知識點、線、面。從 data 到 information 到 knowledge base 也是需要對的方式、工具與大量練習,這是有效學習、快速學習的最基礎運作單位。

當只有內在的整理或只有整理成自己看得懂的素材,其實只是內隱知識的一種存在形式。就像敏捷軟體開發重視的,是發揮價值,快速交付以取得回饋,進行修正與改善。要讓自己真正改善、變強、內化,將內隱知識轉成外顯知識是最後的臨門一腳。

相信很多有在寫 blog 文章的朋友一定都有過這樣的感受:素材整理了八九成,但開始寫作時,往往會再多個 20 % ~ 60 % 的內容是原本素材沒有的,一邊在寫的過程,其實是迅速的在過程中校準自己的知識點。因為你知道,如果有東西表達地不夠清楚,代表自己瞭解地還不夠透徹。

完整過程

把寫 blog 當作是你給訂立的目標,在安全的環境下給自己的挑戰,有個不需花費額外成本(除了時間與心力)且有效的練習過程,自然會「驅使」(不是很想用強迫,因為強迫不來的)你開始找到方向,過濾每天龐大的資訊量,篩選與整理素材,把新的資訊跟自己過去的知識與經驗慢慢建立連結。

給自己一個舒適的環境(例如我現在就在一間我喜歡的咖啡廳寫作)開始動手寫作,檢視與欣賞自己外顯出來的整理成果,如果不到欣賞的程度,就代表還有改善的空間。最後將你寫完的文章貼出去後,透過一些 community 或 social media 的平台分享,期許社群朋友給予你建議、回饋、補充,如果你不夠好,他們會讓你變得更好。如果你很好,你將建立起自己的影響力,獲得成就感。

有了這篇文章當基底,你將發現後續你會很自然地寫出系列相關文章,因為知識是有連結性的,沒有與過去知識進行連結的知識,大概兩個禮拜它就會自然被你的腦袋封存掉。系列文章將讓你的知識連結版圖更加堅實穩固,讓你對該領域知識深度更深,影響力更大。

I don't care if you suck at writing. I don't care if nobody reads your blog. I don't care if you have nothing interesting to say.」因為,你是在跟自己對話,是在讓自己變強變好,是在練習著讓自己吸收更多、反應更快、表達更好。

好處一:產生學習動機,有方向性地篩選資訊

人是習慣性動物,而且是習慣怠惰的

大家都知道學習的重要性,但大家又不由自主發懶。沒有方向跟目標,自然只能漂流。

當給自己訂立一個自我承諾且可行的目標,例如一個月寫一篇 blog 文章,你有接近一個月的時間開始去感受新的資訊,往往這個感受新資訊的過程,你會找到你喜愛的領域。有了喜愛的領域,你會為了想多瞭解一些,想多蒐集一些文章的素材,而開始自發性且有目標地找尋相關資訊。

不管有沒有後續動作,你已經把一些你目前不關心的資訊全部篩掉,而有方向有目標的去篩選出你感興趣的資訊。

人的腦袋跟時間有限,過多龐雜的資訊就等於無用的資訊,跟白噪音一樣會被你的腦袋自然過濾掉。

好處二: 檢視自己既有知識,將input的新資訊與既有的知識建立連結

因為你並不打算只是翻譯、只是整理文摘,而是想要整理成有用的資訊,甚至內化成自己的知識。

當你開始蒐集某個你感興趣的領域的素材時,你會不由自主地開始為這些資訊分門別類建立關聯。(這也是為什麼心智圖總在整理素材時發揮效用)你不只會把新的資訊分類整理,你也可以輕易地把既有的知識與經驗,跟這些新的資訊建立關聯。某個知識點如果只是個孤島,沒被時常使用、回憶、刺激,大腦會自動的封存它,因為你的腦袋得存放更重要的東西。

太多朋友只有在要換工作整理履歷、面試、或自我介紹時,才會去檢視自己會哪些東西,有哪些技能。這就像冷凍庫裡面放著過期兩年的食品一樣,放在那邊是不會發揮任何效益。在敏捷的精神中,我們重視定期回顧檢視,自己是否有所成長,有需要改善的地方,有無盲點。因為當你發現自己有所成長時,你會滿足動機的內在激勵條件:「專精」(Mastery),這是給自己持續 on fire 狀態的動能補給。

因此,當你想寫 blog 文章,有方向性地篩選與蒐集相關資訊,進行整理並建立知識關聯時,會讓你重新檢視自己的知識,一旦 connect 建立起來,腦袋裡面那份知識就像 cache 被 hit 後重新計時一樣,新舊知識將在腦袋中調高權重。不幸的是,更新完權重如果不再刺激、使用它,它仍會隨著時間而消逝,被再度封存。

所以,我們需要練習、刺激大腦這一塊被重新建立的區塊。

持續檢視自我,才能發現不足之處,進行改善。才能發現自我成長的亮點,保持持之以恒的動能。所以,你需要給自己創造持續檢視自我的機會。你的定期寫文規劃與行動,就是最好的事件點。

好處三: 透過寫文,刻意強化刺激知識轉化,進行內化知識過程

只有內隱的知識,會存在很多似懂非懂的模糊空間,很多人臨場會冒出一些「知其然而不知其所以然」的內容,其實就是沾了醬油,卻沒深入瞭解、建立連結的情況。

如上一段所提,腦袋就像 memory cache 一樣,越常用的越會被保留。不斷刺激,可以讓它刻的更深,這就是內化。

input 資訊的整理,其實你只是在整理,這仍然是別人的東西。只有想辦法以自己的方式表達出來,把自己的經驗與領略融入其中(就是 insight),這份資訊才會轉成自己的知識,並被存入腦袋中。

因此這個步驟很重要,把「別人提供的資訊,轉成自己的知識」。兩者界接的橋樑是整理資訊的功夫,催化劑則是外顯的過程。而最簡單的外顯,就是寫 blog 文章。

在外顯的過程中,偶爾會發現在骨幹上銜接不上,這代表原有知識與新資訊中間少了重要的連結。「發現」就是最大的價值所在,促使你去找到那塊重要的拼圖。

偶爾會發現,表達上不順遂,這通常代表著你對要表達的內容還不夠透徹,所以說不清楚。真正懂了,你會用大家都聽得懂的話,講給不懂的人聽,而不是一直用專有名詞吊書袋地呼嚨別人。另一種表達不順遂,在於表達能力不到位,練習表達能力最簡單的方式,就是多看經典好書、欣賞別人的表達能力、渴望自己能跟他一樣、刻意練習表達能力。

當你看 Jeff Atwood 的《高效能程序員的修煉》或是提及 engineer 的軟技能、職涯發展的書籍時,你總會看到溝通表達能力有多重要。因為你得團隊合作,你得有能力把思路表達清楚,甚至反應在文件、程式碼、設計、簡報上,寫文章就是在練這一塊的基礎功。

心魔

為什麼許多人會自己整理學習筆記、讀書心得,卻少了這一段外顯知識的過程?大部分的人都是說自己沒那時間、沒那衝動,其實很多是卡在自己心裡那一關:不敢展露出自己學習的結果,怕被別人笑,怕被人酸

所以 Jeff Atwood 才說,自我承諾,做就對了。在你開始做之前,別人給的任何建議都是屁。因為自己的心魔自己解,怕東怕西都是自找的。要學習就先得不要臉、抱對大腿,建立正確的心態。敏捷精神講究,先有東西出來,才能取得回饋,檢視並持續改善。有東西交出來,才不會只是自己在嗨。為何敏捷講究擁抱變化?因為任何需求的改變,往往都是更貼近真實需求,往往就是產品進化變得更好的契機點。

你寫了文章,別人給你批評指教、建議,就是在創造自我進化、改善的契機點。你不一定需要全盤接收,你不需要跟無意義的酸民吵架,但你總會從中獲得一些對你自己有用的資訊。

知識只有內隱還不足夠,那會讓你存在很多似懂非懂的模糊空間。只有外顯過程刺激催化,才能強化內化知識的程度。才能把別人提供的資訊,轉換到自己的知識庫裡面建立連結。

好處四:取得回饋,突破盲點 

什麼事情最可怕?抱著錯誤的觀念而不自知,而且一直在錯誤的基底下維持下去。要命的是,沒人跟你講真話,或是沒人有機會跟你說真話。就像你褲子拉鍊沒拉,在鬧區溜了內褲一整天而不自知,大家都在笑你,卻沒人告訴你。

即使已經從內隱狀態,透過外顯來內化知識,你「覺得」你已經會了、懂了某些東西,但等等,你有可能是「自以為會了」、「自以為懂了」的情況。

我拿我自己來當一個例子,在我幾年前剛開始學習依賴注入(DI)的觀念與設計時,我寫了篇文章,我連 DI 的全名都寫錯,我寫成了 delay injection, 延遲注入。之後好友小朱直接回覆,應該是依賴注入, dependency injection 我才赫然發現自己的無知。我原本的知識基底是建立於「延遲」的目的與好處,而「依賴」注入的重點其實在於依賴的生成與建立。可以想像,如果沒有小朱的指導,我不知道還要保持這個錯誤的觀念多久。

事實上,我一開始認識小朱時,很常因為一些事情與價值觀起爭執,但從這事件之後,我由衷的感謝他,一個人願意花時間指出你哪裡觀念不正確,你應該要感謝他,而不是封鎖他或跟他吵架。如果別人給的建議或指正,你總是反駁或爭論,慢慢地就沒人肯跟你說真話,而是老看你光著屁股溜大街,在心裡笑你。要珍惜、感謝願意跟你說真話的朋友,他們才是願意花時間在你身上的朋友。

透過寫 blog 文章的「過程」,想辦法把知識外顯出來,進而內化知識之後,建立正確的心態,盡可能取得回饋,來讓自己內化地更透徹,來找到自己的盲點,獲得更深入的技能敲門磚(升級道具的概念),才能讓效益更大,你已經花一份工了,就應該讓它效益滾出效益。

怎麼樣取得更多的回饋?請你謙卑地在適合的社群或社交媒體中,分享你的 blog 文章,懇請大家給予指教、建議、補充。而你需要的,就是建立正確的心態,學習溝通的技巧,建立過濾無用的嘲諷與吸收對自己有益建議的能力。

將你的 blog 文章分享到適當的社群或社交媒體上,盡可能取得回饋,過濾無用的,吸取有用的。每個人都不是天生下來就會所有的東西,每個人都有菜過的過去。路過仙人的指點,有時勝過自己閉門深造十載的效果。當你與社群有良好的互動時,往往就是在塑造你個人品牌的形象,往往你會從這些互動中去結識更多的人脈。

人脈,一者是因為你能對其他人產生價值,對他們有用。另一者則是因為,你不是單純來蹭東蹭西的 free rider,只想認識大牛大神,以從他們身上獲得好處的社交蟑螂。而是你有自己的學習過程、樂於分享與從別人的建議中吸收成長,學生挑老師,老師也是很挑學生的。你是對的態度、對的人,自然有很多前輩願意對你伸出援手、指點一二。

你的文章是對的、好的、有價值的,就可以造福更多人,這就是持續點滴累積你的影響力。你的文章有不對的,不夠深入的,表達不清楚的,別人給你的回饋簡直是夢寐以求的升級補品,因為自幹再久還是需要外力輔助才能大功告成。張無忌的九陽神功光自己練,只是練內功,最後還是因為有乾坤一氣袋跟眾多外力輔助之下,才大功告成。

好處五:受益的總是自己

人的腦袋總有極限,問題會出現兩次,就會出現第三次。最常去查自己 blog 文章的,往往就是自己。寫技術文的總會發現,其實在你寫完文章之後,你總是有機會因為實務的需求,又回去查一下 blog,自己之前是怎麼解決的?

這裡有兩個好處,第一,你可以快速地把自己過去的知識倒一份回來目前的腦袋,用最快的速度解決眼前的問題。第二,在你看過去自己整理的 knowledge base 時,因為你已經不是過去的你了,你比過去的你建立了更多的知識連結,你將以之前文章的內容為基礎,發展出更優化的解決方案,解決眼前的問題。而且因此而受益的你,內心會受到莫大的鼓舞,進而燃起你的動力,再次撰寫一篇文章來描述優化後的解決方案。這是正向循環的不二法門。

Steve Jobs 從對 Stanford 畢業生說過

you can't connect the dots looking forward; you can only connect them looking backwards. So you have to trust that the dots will somehow connect in your future. You have to trust in something — your gut, destiny, life, karma, whatever. Because believing that the dots will connect down the road will give you the confidence to follow your heart. Even when it leads you off the well worn path, and that will make all the difference. (This approach has never let me down, and it has made all the difference in my life.

簡單地說,你無法提前得知你現在學習的知識點,會在未來發生什麼樣的效果。但你得相信,它總會在適當時間點發生效用的。而透過寫 blog 文章來具現化你的知識點,將可以讓這個連結與發揮效用的機率提昇。

你在哪邊跌倒過,別人往往就會在那邊跌倒

在技術職涯中,你總會變資深,總會帶著 rookie (就是菜鳥啦)一起做事。你過去也菜過,而你紀錄著在這條路上哪邊曾經讓你跌倒過,哪邊有道檻,哪邊有地雷,既可以當作菜鳥的指引地圖,當他們碰到同樣問題時,也可以節省你寶貴的時間,請他們先去看你的哪篇文章,請他們試著自我解決問題看看,當他們碰到不理解、用不同方式解決、解決完時給你回饋。

如此,你可以發現你可能哪邊表達地不夠清楚(甚至是你壓根就沒搞清楚),你可能會發現他們有更有創意、更好的作法,你可能會發現現在的你也有更好的作法,以這樣方式帶著 rookie 的 mentor 往往受人尊重,而且教學相長,互相學習。

從自己 blog 受益最大的,永遠是自己。可以為未來的自己節省時間,可以為自己持續進化提昇動力,可以為自己重新點燃火種、保持動能。

好處六:證明自己的能力、特質、發展潛力

面試時總可以聽到應徵者說自己「積極好學、對技術擁有熱忱」,但一旦提及能不能給一些具體實例時,往往立馬語塞、含糊帶過。

怎麼證明超過 35 歲的你、工作經驗好幾年的你,比剛畢業的小新肝來得有用,來得有潛力?大家玩過 NBA Live 系列的遊戲就知道,rookie 的成長潛力有時比當下的能力點數更重要。要應徵的公司,當然希望聘用你之後,你的能力還是持續性成長,持續帶來更多的價值,更多正面的影響力。

然而正面的人格特質往往很難證明,往往口說無憑。對應徵者來說,最好的面試 context 就是「面試官對你已經認識很深,知道你的能力、特質、專長領域、過去的經歷,知道你可以為公司帶來什麼樣的價值」,你說這樣還要面試什麼?因為他要想辦法把你納入旗下或邀請你成為夥伴,總是需要描繪出願景、期待,提出好的工作角色、職務內容、發展跟薪資籌碼跟你對焦。

而怎麼樣才能盡可能創造出這樣的 context ? 在前面的幾個段落就是為這這樣的 context 打底。不是為了換工作、去面試,單向的介紹你自己。因為人們更相信自己看到、聽到的,而不是從你嘴巴裡面說出來的。為什麼找你來面試?因為:

  • 他從你的 blog 看到許多受用的文章,對你感興趣。
  • 他從你在社群跟其他人的互動、溝通過程、學習的態度,回饋成長的模樣,對你感興趣。
  • 他因為曾經在 blog 或社群跟你互動過,而在實體活動上更有機會跟你進一步攀談、瞭解,甚至發展到關心、協助,而更瞭解彼此,知道自己可以幫上你什麼,知道你可以幫上他什麼。
  • 當公司有了適合的好機會,或是其他人推薦適合你的好機會時,你會是他的口袋名單。他願意為你背書,願意幫你推薦,只要他是對的人,他講一句話,抵得上你講十句話。
擔心自己寫的文章內容太弱?

你曾經紀錄了弱弱的知識跟曾經弱弱的自己,又如何?你該花心思在怎麼努力讓自己變強,讓人家一看你幾年文章內容、品質的轉變,就知道你的潛力、成長動能、技術能力、擅長領域、人格特質。我回去看我一開始的文章,根本寫得跟垃圾一樣,而且那些知識現在看來根本沒用!又怎樣?我最新寫的都是很新或很有品質很有用的,這不就代表「我不是一年經驗 repeat 10次」,而是真的有 10 年經驗,而且持續在改變與成長中嗎?

你可以把過去弱弱的自己,變成加分的條件,神奇吧?

看著你 blog 的文章走向,就知道你對哪一些領域有興趣、有底子,不是沾醬油隨口虎爛的。 知道你在職涯中領域的轉換,各領域之間所發揮出來的綜效,你在社群的影響力也對應著你到公司內能發揮的正面影響力。這些要比看你面試準備的 resume 以及在1~2 小時內面試過程中的侃侃而談,要實在地多。要知道,最難得的人才之一,就是「人形自走砲」(self-driven),你只需要給他空間,他就可以自己發揮驅動出最大的價值跟影響力。

要證明自己有 technical passion, 積極學習、表達能力強、樂意接受學習新東西,都是相當不容易的,而 blog 有日期,有跡可循,人們知道你不是為了面試而突然抱佛腳,而是你平時就習慣這麼幹,這都騙不了人的。看這種實體的 result 比起自己講一百句自己很積極學習、擁有技術熱情等空虛的話,要來得有用多了。

從寫 blog 文章當作第一步,創造出後面這些「connect 與機會」,你不覺得這是一個絕佳且實實在在的捷徑嗎?如果你有更好的方式,請一定要教我。

重點摘要,你還要注意什麼?

上面用幾個段落來描述了寫 blog 可以帶來哪些好處,這邊重新整理一下幾個重點。

寫 blog 的過程
  1. 自我承諾:給自己訂立一個可行的目標,然後真的動手開始寫 blog。正視自己的內心,不要被自己的心魔打敗。
  2. 有方向性地篩選有用的資訊:有了目標,會促使你主動感知資訊,有目標有方向地過濾篩選資訊,蒐集與整理素材
  3. 外顯過程使得知識學習更加完整:只有蒐集素材,還只在內隱知識階段,那都是別人的東西。要透過外顯過程,例如寫 blog 來刺激自己,找到似懂非懂的盲點。
  4. 透過外力來輔助提昇自己能力,突破盲點:將 blog 文章分享到適當的社群/社團/社交平台,透過外力來找到自己盲點,創造 level up 的契機。
  5. 以 blog 文章為媒介,建立影響力:在跟社群、社交平台的人們互動時,就是最好展現自己能力與特質的機會。這會幫助你未來在實體活動或 social 場合時,人家想認識你時,不會太乾、不知道怎麼跟你攀談。
  6. 持續檢視自己的成長:其實只要你願意持續檢視自己是否有成長,你就真的會持續成長。每天進步 0.1 %,一年後你會進步 44 %,三年後你會進步兩倍,20 年後你會進步 1480 倍,25 年後你會進步九千多倍。當然,前提是你不是一招半式闖江湖,寫了兩年文章都還在同一招上轉來轉去,了無新意的濫竽充數。誠實面對自己,幫自己開啟一扇持續成長的門。
注意事項
  1. Just do it,先做就對了!
  2. 寫文章需要衝動,你要維持自己的衝動,讓自己保持在 on fire 的狀態。定期的維持節奏,找到你喜愛的領域,隨時蒐集素材,就是保持衝動的最好方式。
  3. 手感冷掉之後,要靠自己重新點燃火種相當困難。就像推動一個巨輪,你要讓它維持等速或加快速度相對簡單。一旦巨輪停止,你要面對那巨大的靜摩擦力,得付出一定的代價。我的建議是,透過外力來點燃火種,例如參加專業的培訓課程、充滿熱情的技術社群活動,對點燃火種都很有用,因為那邊接觸到的每個人都會替你的巨輪推上一把。(研討會效果比較沒那麼好,越多互動,越多同儕的合作或表現,點燃火種效果越好)
  4. 建立正確的心態,哪怕有酸民為了反對而反對,為了刷存在感而跟你在五四三,這都是在鍛鍊你判斷與過濾雜訊的好機會。更何況,那 5 % 的靠邀跟 80 % 獲得有效指導的機率,怎麼算都划算。

我自己也中斷了約莫兩年的 blog(低頻對我來說就是中斷),但我在這段時間其實是轉換其他的學習成長方式,例如寫書、讀書會、教育訓練、演講、寫技術專欄、social media/網誌,我的學習跟獲得的價值從未停過。

正視自己的內心,別再給自己一些可笑的理由了,除非你有更好的方式,否則就只是逃避而已。

扎實的訓練與累積,就是唯一的捷徑。

對敏捷開發有興趣的朋友,可以參考我的粉絲專頁:91敏捷開發之路

對 TDD 課程有興趣的朋友,課程內容、大綱與學員心得,可以參考 skilltree 的公開課程:自動測試與 TDD 實務開發

若需要聯絡我,可以透過粉絲專頁私訊或是側欄的關於我。