Tag notes

書摘 | Soft Skills = The software developer's life manual

公司前輩分享了 Soft Skills: The software developer’s life manual 這本書,後來又在 Soft & Share 看到推廣介紹,抱著當休閒讀物的心情來閱讀是很不錯的。 作者 John Z. Sonmez 在這本書中想要涵括的內容實在包山包海,如果對於人生迷惘的捧油,的確只要看了這本書所簡單介紹的內容就大概可以對人生重拾一些希望,也能循著這些主題繼續往深探索。比較特別的是,每個章節的篇幅被設計成大概一篇 Blog 文長度,所以閱讀起來的節奏感很是不錯,即使有些主題令人打哈欠,有些主題不斷地出現各種課程推銷,但都還能在睡著與失去耐心之前看完一個段落,這點是很值得效尤的閱讀設計技巧。 討論的主題分成七大部分: Section 1 - Career / Section 2 - Marketing Yourself 這兩部份討論的事情差不多,主要觀點是:把自己當成事業經營。 每個人的人生想成就的事物不盡相同,但大致上不出「創業」、「職員」、「自由工作者」這三種工作型態,每種工作型態都有其優缺點,沒有最好的選擇,只有最適合、最自在的選擇。制定目標的技巧:由大至小,先抓大方向,然後再去規劃要怎樣分階段性地往大方向前進,在執行計畫目標的過程當中,也不斷地去重新思考「目前的走向」是不是在往「想要的目標」前進,不斷地修正、不斷地思考,減少瞎忙的狀態。 每個人的人生想成就的事物不盡相同,但大致上不出「創業」、「職員」、「自由工作者」這三種工作型態,每種工作型態都有其優缺點,沒有最好的選擇,只有最適合、最自在的選擇。制定目標的技巧:由大至小,先抓大方向,然後再去規劃要怎樣分階段性地往大方向前進,在執行計畫目標的過程當中,也不斷地去重新思考「目前的走向」是不是在往「想要的目標」前進,不斷地修正、不斷地思考,減少瞎忙的狀態。 把自己當成事業經營,適當時候要勇於承擔風險,即使是受僱,心態上也應該將工作表現視為擦亮自己「工程師專業」這塊招牌的方法之一。心境不同,面對困難的態度也會有所不同。 除了砥礪自己的正直人格之外,也要適當地行銷自己的工作能力,名聲資產的累積管道除了被動地讓共事的同事發掘之外,可以積極地利用自媒體增加自身技術能力的曝光度,對公司內部分享技術心得、寫 blog 文章、參與 open source 專案、錄製 youtube 教學影片、參加 conference 或 meetup 活動,用開放地態度分享自己的心得,和業界的其他工程師教學相長營造正循環,累積一些口碑的被動收入(? Section 3 - Learning 作者提出了一套學習的方法論,大致上是: 了解領域範疇的大輪廓 制定學習目標 定義目標達成標準 搜集學習的資源(書、演講、課程) 制定學習計畫 過濾資源 學習可以開始動手的最小幅度知識 透過實際使用學習到的知識做一些有用的事情 第 8 步驟撞牆的時候回過頭去繼續補充所需要的進階知識 透過教學他人來融會貫通學習到的知識內容 個人覺得學習陌生領域最困難的入門點在於「不知道自己目前不知道什麼」、「不知道自己應該要先知道什麼」,所以步驟 1~6 其實已經有點「雞生蛋、蛋生雞」,有時候會遇到選一本很多人推薦的書開始讀了以後,陷入書裡面額外提到的各種細節而無法前進(其實大多時候是那種書都很厚重本身就有一種難以征服的心理壓力),又或者是努力地做了一堆「入門」練習然後就卡住無法自己融會貫通地應用在想做的專案上。 我後來發現一個簡單的方法,可以不用在學習之前就花時間搜集資料跟理解當下看再多也看不懂的材料,那就是 Udemy 的課程(或是其他已經整理好的學習計畫),特別是一些透過實作來做教學的程式課,選一些「看來像自己專案需要之技術」、「對於某特定技術的簡介與案例操演」類課程,跟著課程的模組實際動手做,不錯的課程設計已經把步驟 1~6 給完成,直接進入 7~8 階段。最後透過在自己的自媒體上分享所學到的知識內容,重新在腦中組織一次剛塞進去不久的知識,順便累積曝光資產,有時候遇到新的問題要回去查找資料時,自己寫的 blog 文章也會意外成為不錯的參考資料。

筆記 | Practical Object-Oriented Design in Ruby (POODR)

Practical Object-Oriented Design in Ruby (POODR) 不會很厚,循序漸進地介紹物件導向設計的各種重要概念,而且範例用的是 Ruby 來解說,挺親切的。 除了各種設計原則之外,也簡要解釋了 Inheritance / Module / Composition 的使用時機與差異。 最後一章介紹測試原則,除了說明一般的測試原則之外(例如主要應測試 public interface / incoming message / outgoing command ),也很清楚地說明要怎樣去分別把不同的測試責任分在 module / test double / test class 上,以及讓 test double 與實際的程式碼同步的技巧,可以反覆閱讀的參考書。 Chapter 1 - Object-Oriented Design P.4 Practical design does not anticipate what will happen to your application, it merely accepts that something will and that, in the present, you cannot know what. It doesn’t guess the future; it preserves your options for accommodating the future.