Updated: 2021-06-19 18:33:48 CST +08

獨角獸專案 The Unicorn Project

Ch. 1

  • 她早有體會錯誤與無序才是人生現實。她見證過恐懼文化所造成的腐蝕效應,犯錯的人經常受罰,而代罪羔羊會被開除。嚴懲失敗和「解決提出問題的人」只會讓人們隱藏自己的失誤,最後,所有創新的希望之苗都消失無蹤。

  • 她是個喜歡函式語言程式設計的開發者,因為純函式和可組合性對於思考更有幫助。她避開指令式程式設計,更傾向於選擇宣告式程式設計的思考模式。她對狀態變動和非參照透明嗤之以鼻,並且懷有別招惹它們的畏懼感。比起圖靈機,她更偏好 Lambda 演算的數學邏輯。她喜歡 LISP,這是因為她喜歡將程式碼視為資料,將資料視為程式碼。

  • 我期望的是領導者能讓人們遠離所有政治與官僚主義,而不是將他們扔進這種瘋狂中。

Ch. 2

  • 當工程師將「顧客」視為抽象概念,而不是當作真實的人來看待時,你很難得到正確的結果。
  • 最在乎的三項指標:員工參與度、顧客滿意度和現金流。如果我們所有的員工每天都能帶著興奮的心情來上班,如果我們持續創新,為顧客提供優質服務,現金流自然會跟上來。
  • 僅僅覺得自己很忙並不代表真的做了什麼有意義的事情。
  • 她拒絕感到無能為力,任由遙不可及的上位者任意擺佈,受困於冰冷無情的官僚體系,無以施展抱負,無人回應她的需求與目標。

Ch. 5

  • 在這裡,打破規則是唯一的成事辦法。
  • 這就是菁英人脈的意義所在─你可以集結一群充滿動力的人來解決一個大問題,儘管這個組合人選和官方組織架構圖一點關係也沒有。

Ch. 7

  • 程式碼部署的交付週期、程式碼部署頻率以及解決問題的時間長度,是軟體交付、營運成效和組織績效的預測因素,這些和職業倦怠、員工參與度等諸多因素有所關聯。
  • 保持簡潔非常重要,因為簡潔性與區域性相輔相成。程式碼的區域性可以讓系統維持鬆散耦合的狀態,幫助我們更迅速地交付功能。 團隊可以更快速且獨立地開發、測試以及部署價值給顧客。組織內的區域性允許團隊自行決策,無需與團隊外部的人進行溝通或協調,因為如果要從位處高位的管理層或委員會獲得批准,他們可能缺少對於實際業務的相關知識,無法做出適宜決策。

技術債

技術債是你覺得下一次要對其作出改動的感覺。

複雜債(技術債進化版)

  • 是一個無法提供快速開發人員回饋的軟體佈建和測試系統,或者是一個完全故障的系統
  • 技術債是當簡單的組件變得錯綜複雜,如果沒有付出巨大努力或鋌而走險,你很難對其進行疏理或改動。
  • 技術債是當決策流程或組織架構失去了區域性的時候,連小小決策都要上報。

它們都不只是技術問題它們是業務問題。況且,這種狀況都是咎由自取。你可以選擇構建新功能,或者選擇償還複雜債。當一個傻瓜將所有時間投注在開發功能上,不可避免的結果就是,即便是最簡單的任務也變得棘手,還需要花上更長的時間來執行。不論你有多麼努力,不論你有多少幫手,最終,系統都會不堪負荷,驟然倒塌,逼迫你從頭開始。

五大理念

第一個理念:區域性和簡潔性 (Locality and Simplicity)

我們必須設計一些東西,在系統和組織中實現區域性。保持簡潔是任何工作的第一原則。我們最不希望看見複雜性出現在內部,不管是在程式碼、組織,或是流程中。現實世界就已經夠複雜了,如果連我們可以控制的東西也變得無比複雜,那將是忍無可忍!

第二個理念:專注、流暢和快樂 (Focus, Flow and Joy)

這關乎我們對於日常工作的感受。

我們的工作日常是無聊和等待他人幫忙完成任務嗎?我們是否一葉障目,僅僅關注系統中一小部分,忘了顧及大全?我們是否只在部署的那一刻看見整體工作成果,結果一切都爆炸,搞得大家急著滅火,殺雞儆猴,人人精疲力竭?還是,我們以小批量的方式工作,在理想狀況是單一工作流,獲得迅速而持續的工作回饋?這些是促成專注、流暢、挑戰、學習、探索,精通工作領域,甚至是獲得快樂的必要條件。

第三個理念:持續改善日常工作 (Improvement of Daily Work)

我們必須重視日常工作的改善勝過執行日常工作。

第四個理念:心理上的安全感 (Psychological Safety)

我們要創造能夠安全談論問題的工作環境,因為唯有預防才能真正解決問題,這需要誠實以待。想要人們誠實以對,必須消除恐懼。

第五個理念:以顧客為中心 (Customer Focus)

我們須時刻保持一絲不苟,質疑某個東西對客戶來說是否真的很重要,比如,客戶願意為這個東西付錢嗎?還是它只是對各行其是的職能部門有所價值?

Ch. 8

  • 軟體就像一座城市,不斷地變化面貌,要時時翻新和維護。
  • 成為一切事物的中心很有樂趣,卻不一定能持久。這條路一直走下去,等在前方的只有連續的起床鈴聲、精神疲勞、憤世嫉俗和職業倦怠。

Ch. 9

  • 技術債,就像死線一樣,真實存在於生活中。商業人士懂死線,但經常將技術債的存在完全拋諸腦後。技術債本質上不好不壞─它之所以存在於我們的日常生活,是因為我們總是在做取捨。
  • 如果開發者必須在實現功能和提高安全性做取捨,他們必須選擇安全性,因為這攸關公司的生存。– Bill Gates
  • 如果開發人員必須在開發功能和提升開發人員生產力之間做出選擇,他們始終應該選擇後者。– Satya Nadella
  • 史蒂芬·史貝爾博士(Dr. Steven Spear)所言極是:「無知是一切問題的根源,唯一能夠克服它的只有學習。」
  • 當任何人遇到問題時,所有人都應該隨時尋求幫助,因為這是一個改善日常工作的珍貴機會。因此,問題很快被發現、聚焦和解決,然後這些工作知識被廣泛傳播,讓許多人都可能受益。

Ch. 10

  • 我們建立了這些規則,也有權打破規則。
  • 「這不是僕人領導,這是變革型領導。」「變革型領導需要充分理解組織願景、敢於質疑現行的工作執行方式、鼓舞人心的溝通技巧、認可個人成就,以及支持性的領導風格。」 變革型領導是追求卓越,對於完美的無盡追求,對於實現使命的緊迫面,永遠不安於現狀,還有渴望幫助組織更上一層樓的不懈熱情。

Ch. 11

  • 「有一位 QA 工程師走進酒吧。點了1杯 啤酒。點了杯啤酒。又點了999,999,999 杯啤酒。點了1隻蜥蜴。 點了-1杯啤酒。最後點了一份『sfdeliknesva。」
  • 不變性是函式程式設計的另一個概念,它讓世界變得更能預測,更加安全。

Ch. 12

  • 盡量把握任何機會讓人們站在同一陣線。

Ch. 13

  • 「空白變更」– 在 HTML 或配置檔中加入幾行空白行,理論上不會改變任何功能性。
  • 檢討會的精神和目的,是為了讓我們從經驗中學習,在記憶消退之前將事情發生經過好好紀錄下來。預防出錯需要絕對的誠實,而讓人們誠實以對的首要前提是消除恐懼。
  • 我們的目的是為了讓最接近問題的人分享他們所看到的,我們才能讓系統變得更加安全。
  • 在危機來臨時,我們永遠不會知道將會發生什麼,我們需要做好準備,畢竟在未來,我們對於世界的理解也同樣不完美。
  • 「不管我們發現什麼,我們都理解並真正相信每個人在當下都盡了最大努力,運用所知所學及可用資源來面處當下情境。」– Agile Prime Directive
  • 如果我們無法實驗假設,那又何談從中學習?
  • 要怎麼打造出優秀產品?這通常要從瞭解我們的客戶是誰開始,包括現有客戶和期望客戶。
  • 幾乎所有優秀的產品組織都會建立客戶人物誌(persona),讓所有人更加理解並連結產品所服務的對象。這就是我們進行了這麼多使用者經驗和族裔研究的简中原因。在這些客戶角色中,我們勾勒出顧客群像,描繪出他們的目標和期望,找出他們在一天之中會遇到哪些問題,並描述他們如何執行日常工作。如果我們做得好,最終能建立一套符合目標業務成果的使用者故事框架。我們應該在市場上測試並驗證這些假設,並且一直從中學習。

Ch. 14

  • 無論何時,只有你有一個充滿熱忱,擁有對的技術和能力,願意為了目標全力以赴的團隊,和他們唱反調是很危險的,因為他們會排除萬難,竭盡全力達成目標。

Ch. 16

  • 數千年來的唯一真理就是:員工參與度和顧客滿意度就是一切。
  • 研究指出,整體而言,每三個策略性點子之中,只有一個點子能產生積極效果,在這些有正面效益的點子中,也只有三分之一能夠真正帶動收入成長。
  • 技術採用生命週期:創新者、早期採用者、早期大眾、晚期大眾、落伍者。– Geoffrey Moore

三大層面:

  • 第一層面:公司的現行核心業務,轉進大量現金的搖錢樹,擁有已知客戶、商業模式和營運模式,這些都是可預期的。
  • 第二層面:新興業務能夠將公司核心能力推廣給新的客戶、鄰近市場或應用不同的商業模式。
  • 第三層面:快速學習和廣泛探索商機。主題是構思原型,盡快回應市場風險、技術風險和商業模式風險這三個問題。這個點子能夠解決真正的客戶需求嗎?技術上可行嗎?在財務上有可行的成長引擎嗎?

第一層面業務倚靠有效流程、一致標準、遵守規則和順應官僚體制,創造卓越的組織性。這些運作機制能夠讓事業屹立不搖幾十年,持續傳遞偉大價值。相較之下,在第三層面業務中,你必須持續試驗、不斷嘗試、快速前進,必須允許人們打破所有第一層面的所有規則和流程。

第一層面的領導者將會耗盡公司所有資源。他們準確地認知到第一層面是公司的經濟命脈,但卻沒意識到這只是一時的。人們有一種本能,那就是最大限度地提高獲利能力,從企業中提出現金,卻沒想過再投資到企業發展上。這是「價值管理」的論點和「成長管理』恰恰背道而馳。如果想要的是成長,必須極力保護第二層面和第三層面,讓這些地方產生的學習成果廣泛散播到公司各個角落。

霍爾法則:世界上寫程式碼的方法有兩種:編寫簡單到明顯沒有錯誤的程式碼,或者寫複雜到看不出明顯錯誤的程式碼。

Ch. 17

  • 當你的公司採取降低成本的作法,通常不過是在操弄財務報表。
  • 我們不希望管理相依項目,我們要做的是消除它們。
  • 核心業務是指企業的核心競爭力。是顧客願意為此付錢的能力,也是投資者看中的能力。
  • 脈絡業務就是除了核心業務以外的一切工作。HR、薪酬、電子郵件。
  • 被脈絡業務耽誤的公司沒有辦法專心推動核心業務。
  • 簡潔性能創造高效率,複雜性則與其背道而馳。

Ch. 18

  • 只要專注提升客戶滿意度和員工參與度,自然就能為公司帶來源源不絕的現金流。

Ch. 19

  • 資料就是新的石油

尾聲

  • 技術需要確實地嵌入業務中,而不是和業務保持距離,或僅僅和業務「保持一致」。
  • 與新創公司相比,大公司擁有更充足的資源和專業知識。我們需要的是持續專注和居安思危的企業文化,以及價值創造流程的現代管理方法學。