2021年7月10日 星期六

[Books] 貝佐斯傳 讀後感

  • 整體心得
    • 以 Amazon 發展為時間軸線, 從 Bezos 幼年到 Amazon Kindle (2013出版, 還沒有 Echo)
      • 主要利用實際案例(e.g. 併購、出版社風波、刀具定價)了解 Amazon 文化以及 Jeff Bezos 的商業策略, 膽大心細的處事原則
      • 公司願景: 什麼都賣的電子平台
      • 公司策略
        • 顧客為主 / 崇尚節儉 / 行動至上(做就對了) / 創新為王 / 主人翁精神 (員工視自己為老闆來解決問題) / 高標準招募人才
          • 人才標準
            • 聰明的方法努力的態度、所有時間的投入工作
            • 注重事實分析, 做事講求精確, 要求一次就把事情做好 (科學家/工程師)
            • 管理階層: 以身作則, 地位越高抗壓性要越強!
          • 有效的會議
            • 需要溝通是功能不良的訊號。應該想辦法減少而不是增加溝通的頻率。
            • 最接近問題的人, 才是解決問題的最佳人選。
        • 可以與目前公司策略對比
          • Quality (價值!) / Service (no raw data, turn-key sol.) / Innovation / Customer (主要差異在 Quality) / 當責
      • 產品策略:
        • 守成: 精實生產(不浪費、不庫存)
        • 創新: 能跳脫穩定的熱賣產品, 提供研發 (柯達穩賺的底片, 削減數位相機產品帶來的衝擊) ⇒ 可參考創新的兩難
      • 競爭策略(併購對手): 這部分滿值得閱讀一下, 個人轉職可借鏡公司思考的角度
        • 雖然號稱只專注商品開發, 但併購策略看起來主要是對手策略
        • 如果在競爭者那裡看到最好的想法, 要好好學起來。
          • 個人覺得最好的例子就是 Apple/Microsoft 偷了 Xerox GUI design
      • 知識系統決策分析: 以6頁文章做報告
      • Promotion: 抓住每一個在公共場所露臉的機會
      • 投資策略: 以長遠目標做決定, 看到有取得市場領導優勢的機會就大膽前進, 大筆投資. 有些投資獲得豐厚報酬, 有些則否, 不管如何, 我們都將學到寶貴的一課
      • 客戶策略:
        • 賣貴一點
        • 幫客戶省錢, 賣久賣多, 創造飛輪效應 (Amazon choice)
    • 公司發展方向
      • 領頭羊思維: 我還能提供客戶什麼?
      • 老二思維: 我們還贏對手什麼?贏多少?
      • 個人發展方向: 想清楚你要滿足的對象
        • 做個大人願意投資的小孩
        • 不要輸給隔壁小孩的小孩
    • 產品發展歷程
      • Develop (pre-study): 最歡樂
      • Promote: 需有亮點 (注意廣告和定價策略)
      • Challenge: 在市場上與對手競爭
      • Steady/Fall: 攻佔市場佔有率
      • Keep: 保持品質(鞏固) / 創新開發 (擴展) / 永續經營
    • Bezos 自我管理
      • 內省, 重紀律, 講求精確, 隨時寫下自己的所思所想, 擁有瘋狂的幹勁和膽識
      • 面對各事務各層面, 有一套自己的解決方法 (e.g. 連雇人都有一套 SOP or ranking 機制)
      • 競爭者比你更有優勢時, 這次交易就讓給他們吧, 但該好好了解為什麼別人做得到
      • 自立自強和靈機應變的精神, 骨子裡痛恨效率低落 (家庭上, 貝佐斯的父母總是鼓勵他, 培養他的創造力)
  • Quote
    • “人生到頭來, 我們的選擇, 決定了我們是什麼樣的人”
    • “在這個世界, 總有人會告訴你該怎麼做, 但你必須好好思考: 這真的是你想做的嗎?”
    • “衝擊圖書出版業的不是亞馬遜, 而是未來”
    • “一家公司要產生新點子, 過程的複雜和辛酸往往不足為外人道, 沒有所謂的靈光乍現時刻。“
    • “只要還有機會, 我們總是願意考慮" (考慮更多市場機會)
    • "你們每天早上醒來, 都要戰戰兢兢. 但你們該憂慮的不是對手, 反正他們不會給我們錢, 你們該擔心的是, 能不能滿足顧客需求, 然後為此專心苦幹."
    • "如果你一心一意想要達成, 必然有成功的一天。這完全取決於態度和能力, 你是否願意不斷地鑽研經營管理的秘訣, 並提出疑問." (P.107)
    • "只要不斷向前, 就算目標看起來遙不可及, 終有達成的一天. 挫折只是短暫的, 如果有人唱衰你, 別理他們就是了." (P.205)
    • "如果成立能夠自主的部門, 讓其以突破性科技建立全新、獨立的事業, 才能解決創新者兩難的問題, 獲得成功" (P.293)
    • "真理越辯越明, 有時只有透過激烈的唇槍舌戰, 才能顯現點子和不同的看法“ (P.400)
    • "在亜馬遜做得好的人通常是像個鬥士, 越鬥越勇", "群體共識不是他要的, 他寧可看部屬拿出數據和熱情出來據理力爭", "要有骨氣:敢於諫言, 勇於任事"(P.402-403)
    • "他對設計鉅細靡遺, 對成本也錙銖必較“ (P.414)
  • 延伸閱讀

 

2021年5月29日 星期六

[Books] 致富心態 讀後感

 

  • 整體心得
    • 非常實用的一本理財思維的書
      • 沒人真的是瘋子
        • 不要自滿且鐵齒, 事情就是怎樣怎樣...
        • 人人看待世界運作的方式都不同, 因為每個人背景跟擁有的優勢都不同
        • 每個人對待“財產“與“時間“都有自己的見解, 應該尊重並理解這是別人的作法, 不一定適合你
      • 風險管理
        • 記得評估下檔風險值不值得
          • 若玩俄羅斯輪盤, 連續四格都安全, 則送你 1000萬, 但六格中有一格會致命, 你怎麼選?若類比成融資借貸炒股, 你怎麼選? 不要“高估獲利, 低估風險“
      • Mindset 調整
        • 持久
          • 長時間的複利永遠是最佳投資, 但困難的地方是不間斷的複利
        • 滿足
          • 打破持續投資往往來自與他人比較, 尤其是消費行為
          • 不花你不曾擁有的錢→ 只花你擁有的錢→ 不花你擁有的錢
        • 儲蓄
          • 開源與節流, 其實節流容易得多
        • 事先計劃與隨時調整
          • 訂定目標與隨時按照計畫持續修改計畫都很重要, 外在會變, 你自己也會變
          • 沒有人可以永遠做出正確的決定
        • 自由
          • 掌控你的時間, 就是金錢付給你最高的紅利
        • 無視其他人眼光
          • “車主買下法拉利的時候想的是這會帶來眾人羨慕的眼光, 但卻不知道包括我在內的絕大多數人眼中根本就只有車子, 實際上沒有一秒鐘想到車主嗎?
      • 致富與守財需要兩種極端的技能
        • 致富就得冒險, 還得保持樂觀, 勇於踏出舒適圈
        • 守財則得保持謙卑, 還要擔憂很快就會失去你所獲得的一切
      • 長尾效應
        • 少數事件會產生大部分的結果, 而在少數其實也許歷經了幾百次的淬煉才達成
        • 多數事情會失敗
        • 綜合上述, 分散投資風險, 一檔壓對就可以 cover 很多檔失利
      • 預留犯錯空間, 黑天鵝無處不在
      • 獨立思考
        • 不要因別人的建議亂了自己的節奏
          • 聽到的建議通常建議者並不了解你的處境或甚至你根本不是他們的目標聽眾
        • 做決定時, 不要考慮沈沒成本
        • 第二層思考
          • 思考表象背後的細節
            • Youtuber賺很多錢?背後需要經歷什麼?若是我當 YouTuber, gap有多少? 機會成本有多少?
        • 不要思考太極端, 跳脫線性思維
          • “極好與極壞的情況鮮少長即保持一致性,因為供給與需求以一種難以預測的方式自我調適。”
          • “問題會修正、人們會自我調適。”
            • 油快用光了⇒ 2030就要世界末日了?⇒問題會被調整, 電動車會被發明、油的轉換效率會被精進
        • 不要高估意外獲獎的機率或低估風險的機率
        • 過去是現在定義的
          • 你現在成功了, 說的話就是金言; 你現在失敗了, 說的都是鬼扯淡
  • Quote
    • 沒有人真的是瘋子
      • “你對生活的信念、目標與預測都與我大不相同。這不是因為誰比較聰明, 或是誰掌握更好的資訊, 而是因為我們一直過著不同的人生, 都被不同但同樣有說服力的經歷所形塑而成。“
      • “人們應該依據自己的目標, 以及當時可以使用的投資選項特徵, 做成投資決策“
      • “每個人做成的每一道財務決定在當下都是有意義的, 而且都是一再確認過各項條件的結果。他們會告訴自己一則可以自圓其說的故事。“
    • 貪得無厭
      • “沒有理由為了自己沒有、不需要的事物, 堵上自己擁有、不可或缺的事物。“
      • “最困難的理財技能是實現目標後停止繼續追逐“
      • “社會比較的天花板實在太高了。這根本是一場打不贏的戰爭, 要不然, 打贏的唯一方法就是一開始就別參戰“
    • 預留犯錯空間
      • “預留犯錯空間的智慧是承認不確定性、隨機性和偶然性等未知都是生活中永遠存在的部分, 和他們打交道的唯一之道, 就是把“你預想未來會發生什麼事”與”可能會發生什麼事”的差距拉大, 同時還能讓你再戰一回。“
      • “你必須承擔風險才能成功, 但是不值得承擔任何會摧毀你的風險“
    • 你會改變
      • “長期財務計畫至關重要, 但事情會改變, 不僅周遭的世界會改變, 你的目標與慾望也會改變”
      • “十八至六十八歲的人會低估自己未來可能改變的幅度”
      • “複利的首要原則是, 沒必要的話, 絕對不要打斷它“
      • "持久是主要關鍵。當你考慮到我們有隨著時間改變心意的傾向, 在人生中的重要時點取得平衡就變成一套避免未來遺憾、並鼓勵自己持久下去的策略。
      • “在工作生涯的每個時間點誒力求每年有足夠金額的存款、足夠的自由時光、沒有太多的通勤時間, 與至少有足夠的家庭生活時間。“
    • 天下沒有白吃的午餐
      • “你不是實際做事的人, 所以每個工作看起來都會很簡單。“
      • ”因為在競爭場裡的人面對的的挑戰, 往往是群眾看不到的。”
      • “多數事情在執行時遠比紙上空談時困難得多。有時候這是因為我們過度自信,更常見的情況是,我們不善於辨識出成功的代價有多高,讓我們不知道是否真能負荷。”
    • 你和我
      • “沒有人真的是瘋子。眾人會做出讓自己後悔的財務決定,而且往往是在資訊缺乏、毫無邏輯的情況下做成。但是他們在做決定的當下都覺得這些決定看起來很有道理。“
      • ”當投資人有不同的目標時間規劃時,對某個人來說看似荒謬的價格,可能對另一個人來說很合情合理,因為這些投資人關注的要素並不相同。“
      • ”當消費者新聞與商業頻道的股市評論員說, "你應該買進這支股票。“請謹記在心,他們不知道你是誰。
      • “在與金錢相關的事情中,很少事情比理解自己的時間規劃,以及不被玩不同遊戲的玩家所採取的行動與行為說服更重要。”
    • 當你相信任何事情
      • “每個人看待世界的視角都不完整,但我們會想像一套論述來填滿其中的空白。”
      • “後見之明就是解釋過去的能力,提供我們世界可以理解的幻想。”
      • “我們需要相信自己生活在一個可以預測、可以控制的世界,所以我們請教聽起來夠權威的專家,他們承諾滿足那股需求。”
    • 我的自白
      • “財務獨立並不意味要停止工作,而是意味著只要你想要,就可以再想的時間和喜歡的人做喜歡的工作。”
      • “真正的城郭就是退出一場永無止境的競爭,調整自己的活動,但求心靈平靜。”
      • “每一名投資人都應該選擇一套策略,他有最高的機率可以成功實現目標。”
    • 後記 美國消費者的養成之路
      • “消除階級,意味著生活方式也趨於一致。”
      • “人人都會與同儕比較自己的幸福感。”
      • “債務危機如何開始:從人們開始承擔超過自己能夠負擔的債務那一刻起算。”
      • “經濟運作對某一些人有利,卻不利於其他人。”
      • “網際網路提供人們共多新觀點,人們知道不同觀點存在就越容易火大。”
  • 延伸書單
    • 納西姆塔雷伯, “隨機騙局”
    • 葛拉漢, “智慧型股票投資人”
    • 丹尼爾康納曼, “快思慢想”

2021年3月21日 星期日

[Refactoring] 編寫可讀代碼 筆記

  • 目標: 給未來的自己看懂
  • 方法: 
    • First level: 外在 - naming, alignment
      • Naming
        • 使用精確的詞: e.g. search / load / …
          • get/set 帶有 lightweight 的概念
          • first/last 代表範圍內頭與尾的指標, begin/end 來表示範圍外的指標
        • 避免 tmp, retval 等沒有解釋性的參數名詞
      • Alignment
        • 用 function / macro 等來對齊程式
        • Group 不同目的的 function lists
          • Constructors / deconstructors
          • Getter / setters
          • helper functions
        • 使用段落來註解程式
          • // 1. register database
          • // 2. init
          • // 3. CRUD operations
          • // 4. release resources
      • Comments
        • 移除沒有意義的註解, e.g. variable name has explained
        • 留下設計理念與意圖的註解 (全局觀)
        • 留下 limitation / FIXME / TODO
        • 提供 example (UT)
    • Second level: control flow
      • loops
        • 避免 do-while (except marco using do-while(0))
        • 大多時候避免 goto function
        • 最小化 embedded loops
      • Expressions / variables
        • 利用暫存的解釋變量減少長表達式, 但有時反過來要移除沒必要的中間變量
        • 盡可能縮小 variable scope (避免 global variables)
        • 善用 marcos 縮短表達式長度
    • Third level: 模組化
      • 善用 utility functions 來做到模組化
      • 利用 wrapper function 簡化 interface
      • 各 function 一次只做一件事
      • 熟悉既有 libraries
      • 善用 scripts 處理簡單工作, e.g. awk parse logs
    • Others:
      • Test-driven
      • Sample refactoring flow: from naïve solution to complete solution
    • 延伸閱讀
      • "Code Complete: A Practical Handbook of Software Construction, 2Ed", Steve McConnell
      • "Refactoring: Improving the Design of Existing Code", Martin Fowler
      • "The Practice of Programming", Brian Kernighan and Rob Pike
      • "Clean Code: A Handbook of Agile Software Craftsmanship", RobertC. Martin
      • "Design Patterns: Elements of Reusable Object-Oriented Software", Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides
      • "Programming Pearls, 2Ed", Jon Bentley

2021年3月12日 星期五

[Kid][Health] 禾馨眼科

- 費用: 掛號費(300)+部份負擔(50)+0-7歲自費視力檢查(300)
- 醫師: 王馨儀院長
    - 詳細且認真解說
    - 目前小孩視力會介於 0.6-1.0之間
    - 天生散光
    - 小孩量測時, 因為兒童自己視力的調節、專注力、表達方式都會影響視力報告結果

[Code Review] Check pointer not null

  • C 語言有非常強大的 pointer, 但也因此惡名昭彰
  • 兩個常用的情況是
    • Null pointer check
      •     	if (ptr != NULL) {
                	// do something ...
                } else {
                	// error handling
                }
            
      • 其中就相當多可以討論的地方
        • 要用 if (ptr) 還是 if (ptr != NULL) 還是 if (NULL != ptr)
        • 建議使用 if (ptr) 就好, 幾個理由如下
          • If (ptr ==) 類型的 check, 可能會少寫一個 =, 變成 assignment, 造成難追的 bug
          • NULL 的 implementation 未明確定義, 依不同 compiler 可能實作成 ((char *)0), ((void *) 0), 0, 0L 等
          • 相容於 smart pointer return bool 的 check
          • 降低不必要的 compare
        • Reference: Checking for null pointer in c
    • Memory leak
      • C++ 引入了 unique_ptr, shared_ptr, weak_ptr 等smart pointers
        • Auto release resource at desstructor

2021年1月4日 星期一

[Programming] 重要的環境變數

  • PATH
    • 這應該不用多說, 執行時期搜尋的 directory path
  • LD_LIBRARY_PATH
    • dynamically load library search path
  • RPATH
    • run-time search path
  • ORIGIN
    • executable name

2020年12月30日 星期三

[cpplint] cpplint 設定

  • What
    • cpplint 是 Google 開發的一套 open source static code checker.
    • 是一套 python tool.
    • 主要 check 原則是依據 Google C++ Style Guide
    • source repository: cpplint
  • How
    • install
    • pip install cpplint
    • usage
      • run
      • cpplint [option] files
      • configuration
        • config file: CPPLINT.CFG, 可以在資料夾內新增此檔做設定, 裡面由 set noparent 這設定來指定是否獨立於其他設定檔
        • options
          • set noparent
          • extensions=c, cpp, h
            • 會被偵測到的 file extension
          • exclude_files=regex
          • root
            • 設定 root directory, 這會影響 header file include的變數名稱
              • e.g: #ifndef _PATH_FROM_ROOT_FILE_NAME_H_
          • filter
            • 可以透過--filter= (參數為空)來查看所有filters, 透過 filter=+filter1,-filter2 來 enable filter1, disable filter2
            • build/c++11
            • build/include
              • 滿常 argue include header 須加入路徑, 個人是都用這把此 filter 關閉
          • linelength=80

2020年12月28日 星期一