《Soft Skills 軟實力:軟體開發人員的生存手冊》:成為全方位的軟體開發人員

這是一本不是在講技術的軟體相關書籍,而是作者結合自身經驗,聚焦在如何成為「全方位的軟體開發人員」這件事情上。

這本書的是 “Soft Skills: The software developer’s life manual” 的中譯本,其實簡中版本出來一段時間了,我也一直列在待讀書單。趁著最近看到出了繁中版本,大概花了一週的晚上把它讀完。書中安排的七個 sections,依序講講自己的心得摘要。

Career

我想每個人都知道職涯管理的重要性,但可能很少人會以「企業」的角度來思考、管理自己的職涯。事實上,不只是軟體工程師,如果能夠以經營一家企業的角度來思考自己的職涯人生,將會改變我們的思考方式,並且更留心、更積極主動地管理自己的職涯。

以商業角度而言,每家企業提供的產品與服務也不大相同,因此發展自己的專業很重要,你可能是一個網頁前端工程師、後端工程師、 App 開發者或是 DevOps 維運人員。甚至,我們可以思考是否能專為某個特定類型的客戶或產業提供服務?身為一位軟體工程師,我們所提供的服務就是創造軟體。在這個資訊化的時代,各行各業都有資訊系統、軟體開發的需求,但是一個軟體真正有價值的地方,並不是技術,而是解決了什麼樣的問題。程式語言只是工具,是需要結合各種 domain knowledge,才能產生作用。

Marketing Yourself

當我們願意把自己的職涯視為企業來經營,「自我行銷」理所當然地就變成很重要的一件事。何謂行銷?—行銷的核心就是把產品(服務)和需要該產品(服務)的人連結在一起;何謂自我行銷?顧名思義就是把自己和那些對你提供的能力有需求的人連結起來。

我們在應徵工作時,個人履歷基本上就是個廣告,用於行銷自己所提供的服務。而在履歷之外,還有許多可以為自己爭取曝光的機會。例如:部落格文章、Prodcast 節目、線上影片、雜誌文章、書籍、程式研習營、研討會等。其中,寫部落格文章可能是最容易入門的方式,寫文章的許多好處就不在此贅述。寫文章不難,但能夠持之以恆並不簡單,這也是我自己持續要努力的方向。

Learning

資訊技術是個無時無刻都在更新的領域,身為軟體從業人員,必須保持不斷學習的熱忱,自主學習更是必須具備的基本能力。也許跟從小沒有補習的學習經驗有關,自主學習以及學習新技術對我來說不是太困難的事。個人學習經驗不一定適用於每一個人,不過這一章節提供的「十步驟學習法」,也是很值得參考,這十個步驟分別是:

  1. 綜觀全貌:針對想學習的主題,進行基本的研究。
  2. 決定範圍:根據第一步驟收集到的資訊,提出適當的學習範圍。
  3. 定義成功:提出言簡意賅的敘述,定義投入學習後所能獲得的成功樣貌。
  4. 尋找資源:為你要學習的主題,盡可能尋找更多的資源。
  5. 建立學習計畫:針對學習主題,建立自己的學習路徑。
  6. 篩選資源:瀏覽在步驟四蒐集到的資源,找出哪些內容最有助於學習。
  7. 學習恰到好處的基礎知識:只學剛好夠用的資訊,盡快進入實作階段。
  8. 實作:把在步驟七所學到的知識,實際付諸行動。
  9. 具備足夠學以致用的知識:瀏覽蒐集的資源,深入學習計畫裡的模組。
  10. 教導他人:透過教導他人的過程,補足自身的學習落差。

其中,針對想學習的主題,步驟 1 至 6 做一次,然後就你所建立的學習計畫,重複步驟 7 至 10。

Productivity

各種分心的事物容易轉移我們的注意力,讓我們無法專注,必須花更多的時間才完成預定的工作。提高生產力的關鍵就在於提升專注力。

這個章節中,介紹了一種叫做「番茄鐘工作法」(Pomodoro Technique) 的時間管理方法。它的核心概念是,—規劃當天要進行的工作,開始做第一個任務,然後計時 25 分鐘,一次只做一項工作,在這 25 分鐘內,全神貫注在工作上。—如果工作被打斷,嘗試利用各種方法處理這些干擾因素。—25 分鐘結束後,計時 5 分鐘的休息時間,即是一個完整的番茄鐘。每 4 個番茄鐘,就休息長一點的時間,通常是 15 分鐘。

如果使用番茄鐘工作法,我覺得 Kanbanflow 是個不錯的平台工具,它有點類似像 Trello 這樣的專案管理平台。但是比較過後我覺得更 lightweight 一點,重點是它內建了番茄鐘計時器 (Pomodoro Timer),方便運用番茄鐘工作法於時間管理和工作上。

Financial

如果不是財務金融相關科系畢業,相信學校不會教太多關於財務的知識,但是理財卻是人生十分重要的課題。從新鮮人踏入職場的那一刻起,就應該要想想自己以後的退休計畫及目標。擬定個人退休計畫的第一步,是找出退休後每個月需要的生活費,當被動收入(就是不需要工作也能產生的收入)能達成每個月的退休生活費,就可以「正式」退休了。而究竟需要多少錢才能退休呢?這取決於我們的日常開銷,用什麼工具、手段來產生被動收入,以及有什麼樣的投資機會。

談談債務危機。現實生活中,我們時常可以看到原本是有錢人,最終卻深陷債務危機的新聞層出不窮。而—所有財務錯誤中,最大的問題就是負債,債務愈多,負擔就越重,就會離財務自由的機會越來越遠。負債的時候,存錢困難,也不太可能進行投資。雖然我們可能無法完全避開可能遭遇負債的情況,但可以避免負債時可能做出的不智行為。例如在存錢之前,應該先把債務還清;在償還債務時,根據利率來安排還款的優先序。更重要的是,應避免不必要的債務。

順便提一下,可能很多人都使用過的「就學貸款」。本書作者認為,在許多情況下,就學貸款可以算是好的債務。如果貸款能取得學位,而幫助你找到高薪的工作,那這個債務就完全值得投資。

Fitness

健康對於一個人的重要性就不必多言。多運動能使身體更健康,進而提升工作效率,在最佳體能狀態時,專注力與生產力都會提高;處於體重過重和不健康的狀態之下,將暴露於罹患各種疾病的風險之中。

健身、健身、健身。因為很重要,所以說三次。

Spirit

最後這個章節探討的是比較心靈層面的事物。不過有科學證據顯示正面思考確實可以改善健康、延長壽命,和建立人生中的各項優勢。反過來說,負面思考不僅真的會對自身造成傷害,還會妨礙我們的努力,阻礙人生的成功(參考「吸引力法則)」。

除了正向思考外,每個人也應該創造正面積極的自我形象。什麼是自我形象呢?自我形象就是去除別人對你的所有觀感,包含自我感覺良好的謊言與欺瞞後,我們如何看待自己。也許很多人會覺得自我形象是很難改變的,但事實上,每個人是有能力改變自我形象的。設定想成為的形象,然後找出能成為這個形象的目標,不斷在腦海中建立這個形象的模樣,而且表現得像自己所想的樣子,最終就能「弄假成真」。

在我們人生中一定會遭遇失敗,但是失敗不是被擊倒,而是通往成功的道路。學習擁抱失敗,在失敗中成長,讓自己一次比一次更好、變得更強。

總結

這是一本不是在講技術的軟體相關書籍,而是作者結合自身經驗,聚焦在如何成為「全方位的軟體開發人員」這件事情上。一位全方位的軟體開發人員,不是程式的功力有多好、解決問題的能力有多棒,或是多會運用單元測試(當然這些都很重要);而是具備管理職涯、實現目標以及享受人生的能力。

一位成功的軟體開發人員,絕對不是只有埋首寫程式而已,還有怎麼生活。每個人都應該專注於個人成長,讓自己成為更好的自己。