《軟技能》:軟體界的「原則」

今天想要來介紹一本對軟體工程師來說很棒的書,叫做軟技能:代碼之外的生存指南 (Soft Skills : The software developer’s life manual)。最一開始會關注到這本書是因為有人介紹說這本書堪稱是軟體界的「原則」。由於對「原則」有還不錯的評價,所以就有了閱讀的興趣。這本書號稱是給軟體工程師看的書,但是裡面卻沒有任何一行程式碼,作者希望告訴讀者的是要成好的軟體工程師,不能只專注在專業上,要把重點放在「整個人」上。書中分享了如何找工作、自我營銷、自我學習等等,甚至還有理財、健身和愛情。同樣身為軟體工程師,我認為可以從前人身上觀察和學習他的經驗應該是蠻有幫助的,因此下面會分享幾個從書中學到比較重要的概念。

第一個是就算是受聘於公司,也應該要當作自己是在經營生意。只有把「我」當成是一家公司看待,才能做出好的商業決策。在一般公司朝九晚六(如果沒加班的話)的生活,很容易把個人的思維限制住,認為就是把固定事情做好然後領固定的薪水。然而,如果從經濟學的角度來看,其實我們都是在販賣服務並且獲取報酬,只是販賣的對象是固定某個客戶而已。當可以用比較宏觀的角度看待工作的時候,就會發現可以選擇的策略比想像中多很多,例如開始評估自己所提供的服務和價錢跟當前市場狀況是否有吻合,不吻合的話就會進一步精進服務的內容(提升能力),或是開拓其他可能的客戶(找其他公司)。這種心態上的轉變會讓我們不會只是被動接受現況,而會有積極的思維去影響現實,獲得更好的結果。

再來關於自我行銷的方面作者也提到很多,自我行銷其實跟前面相呼應,如果要把工作當作在經營生意,怎麼讓潛在客戶知道自己就很重要。找工作最容易的方法是讓工作來找你,當別人有求於你時,就更容易得到比較好的條件。對軟體工程師來說,最好的行銷方式就是寫blog,有許多有價值的文章,自然知名度就會打開。書中強調了好幾次經營blog的重要性,然後還提到最重要的就是毅力,只要持之以恆地撰寫文章,就已經勝過大多數的同行了。雖然我本身已經有意識地在經營blog了,但是常常都只是想說留個紀錄供自己未來參考。然而作者反對這種做法,他認為如果要能吸引別人最重要的是出發點是對他人有益,如果能夠對他人產生價值,就會受到關注,因此文章不是自己寫開心就好。這對我過去寫文章的方式是一種震撼,現在開始會思考我的記錄事情的角度是否可以解決讀者遇到的問題,是否容易閱讀及理解。

在變動很快的科技業中,如何自我學習是非常重要的,特別是軟體業,沒多久就有新的framework或程式語言出現,這些技術大概很難透過學校老師教導,只能靠著自己尋找資源去學習。書中作者介紹了十步學習法,不過我不打算在這裡細部講解這個方法,取而代之,我想分享作者提到的四個自學方式循環:學習、實踐、掌握、教授。我們不應該期待自己把某個領域學完後再開始應用,要盡量在最短時間內找到必須要學會的內容,然後就去實踐,從實踐過程中一定會遇到問題,這時再回去翻資料掌握這些問題,當有一定程度的理解後,嘗試跟他人分享,確認是否真的理解。透過這樣的循環,可以幫助自己更快掌握該領域知識。其實這套方法跟之前我看過的有效自學方式很類似,例如最小必要知識架構術費曼法,很明顯這些方法已經成為主流了。我想,不應該被傳統的學習概念(從基礎知識一步步慢慢學習)所限制,而是從應用面來學習,也就是知道自己要做到什麼,反推回去需要學習哪些知識,不但有效率,而且也更符合這個社會緊湊的腳步。

關於時間管理的部分,作者推薦用使用番茄鐘(通常代表的是工作25min後休息5min),如果不知道番茄鐘可以參考wiki的介紹。這一年下來,其實我都是用番茄鐘來管理我的時間,目前也覺得透過番茄鐘,確實可以幫助專注力,然而我卻從書中發現自己並沒有善用番茄鐘最大的威力。番茄鐘並不只是用來幫助自己提升效率的工具,更重要的是可以用來幫助時間規劃。在時間管理上,最常遇到的問題就是不知道每項工作到底要花多少時間做完,而在固定時間內,到底可以做完多少事情。這兩個問題番茄鐘都幫忙解決了,透過把一項大任務切割成番茄鐘的長度,代表的是強迫自己分割大任務變成可估算完成時間的小任務,而每個人每天可以完成多少的番茄鐘是有數量限制的,也代表我們會很清楚每天可以做多少事情,這樣規劃方式可以加強預測工作進度的準確度。另外番茄鐘帶來的另一個好處是可以更安心地進行休閒活動,大家應該會有經驗如果去玩樂會有種罪惡感想逼自己去工作,如果清楚每日能做到的番茄鐘數量,那休息享樂時就不會感到內疚,因為每天該完成的工作都已經達成了!

最後一點是關於自我弱點的方面,從小到大我們所受的教育都是要把缺點彌補起來,然而這在專業上其實是說不通的,大家應該常聽過樣樣通,樣樣鬆。與其告訴他人自己會很多東西,不如專精在比較小的領域(或是大領域中的某種應用),也許在市場上並沒有那麼多的需求,但是錄取機率則會大幅增加。不過也是有要去彌補弱點的情況,那就是該弱點會大幅影響效率時。當不知道某項技術其實可以很容易達成某件事前,可能都會很排斥去學習,但其實只要花幾個小時就能獲得很大的效益,也就是常聽到的CP值很高。然而要怎麼找到這些CP值高的技術呢?我們可以記錄每個自己沒聽過技術的遇到頻率,當遇到頻率高於一定值時,那就代表有學習的價值。舉個例子,其實我有時候看經濟新聞都會聽到A輪、B輪等等名詞,但是都一直沒動力去搞懂,結果對新聞內容都一知半解。在看本書的理財部份時,作者有做一個簡單的解釋,結果花不到半小時,就對這些常見名詞有初步認識了,也變相了加深我對經濟新聞理解,像是這種知識就很值得花時間投資。

當然這本書還有很多很有價值的內容,不過受限於篇幅,無法每個都說。如果對上面的分享心有戚戚焉的話,我想這本書應該蠻適合你。進入科技業也不過快三年而已,未來應該還有很長的職業生涯,如何好好經營是很大的課題。目前還是以多多參考前輩們的經驗以及不斷自我反省為主,找出真正適合自己的道路。