--- tag: 軟體工程,看板法,Lean image: https://cf-assets1.tenlong.com.tw/images/90671/medium/9789865617028_bc.jpg title: 精實開發與看板方法簡介(一) disqus: hackmd ga: UA-130055634-1 --- 精實開發與看板方法簡介(一) === > 摘自 精實開發與看板方法(2015/3,李智樺,悅知文化) > 第一章:精實(Lean)概念介紹 ## 中心思想/敏捷思維 1. 認知到市場需求會不斷地變動 2. 按照精實原則,任何不能為客戶增加價值的行為即是浪費。 3. 使用者餐與並盡早取得回饋 ## 概念定義 ### 精實(Lean) - 2003年提出 - 製造業的精實製造 - 軟體業的精實軟體開發 - 源自於一本書(Lean software development : An Agile Toolkit) - 精實精神有七大原則 ### 敏捷(Agile) - 2001年初 - 敏捷聯盟 - 四大宣言和12項原則 ## 網路上許多關於Lean和Agile的差異討論 * 從UX角度 ![從UX角度](https://i2.wp.com/www.andersramsay.com/wp-content/uploads/2012/04/lean-agile-traditional.013-sm.png?resize=1200%2C800&zoom=2 =500x) * 從軟工角度 ![從軟工角度](https://www.parkinnovaare.ch/sites/default/files/inline-images/Screen%20Shot%202016-12-09%20at%2013.35.55.png =500x)) * Lean vs. Agile詳細比較 ![詳細比較](https://goleansixsigma.com/wp-content/uploads/2015/07/Lean-and-Agile-GoLeanSixSigma.com_.png =500x) * 依照規範多寡比較 ![依照規範多寡比較](https://4.bp.blogspot.com/-9vLjiCcBzn0/UTJhsCIbpcI/AAAAAAAAHis/pH88CRDiD_U/s400/Prescriptiveness+in+Agile+Processes.png =500x) ## 精實開發的七大原則 ### 1.消除浪費 1. 避免Bug 2. 盡量把晟是寫得簡單一點 3. 錯誤的時程(需要有參考依據) - 開始開發1/5-1/3,或有參考資料時再預估時程 4. 軟體業的七種浪費: - 半成品 WIP, Work-in-process - 額外過程 Extra Process - 多於功能 Extra Features - 任務切換 Task Switching - 等待 Waiting - 缺陷 Defects ### 2.增強學習 1. 科學方法是透過觀察、假設、實驗、結果的過程。當假設越正確,反而很難學到太多東西。當失敗率達到50%時,會得到最多的訊息,也就是學到最多。 2. 最小的成本產生最多的知識 3. 週期性的重構 - 一邊開發一邊進行改善設計 - 浮現式設計 Emergent Design - 用問題引導架構 4. 策式式最好的回饋 5. 團隊同步學習,短周期迭代 ### 3.盡量延遲決策 1. 對流程而言-真正需要時再做決策,提前更變只會增加無形成本 2. 對人而言-需要的資訊較充分時,判斷更正確 3. 參考平行作業的結果 4. 最後負責時刻(LRM, The last Responsible Moment)-當不決策的成本高過作出決策的成本時,稱之為LRM ### 4.盡快交付 1. 拉動系統(Pull System)-只補充已消耗的資源 - 限制理論(TOC, Theory of Constraints)-又稱緩衝管理法 - 由待辦事項的產生來主動「拉動」你去工作,而並非依照排定日期的工作方式(此稱推動系統) - 2. 即時生產(JIT)-管理者不必吩咐該做些什麼,讓工作本身起引導作用 - 當有任務信號進來,就主動執行下一個工作 - 省去PM主動輪流查看是否有工作要處理的時間 - PM無須依靠日常進度表,做許多細微的工作分配 3. 善用排隊理論 - 決定該依照需求? 還是時間順序? 的任務排班方式 - 尋找bottleneck所在 ### 5.授權團隊 1. 一群積極創造價值的人員才是組織核心 2. 簡單規則法: - 簡單的規則讓團隊顯得一致,而一致的目標讓團隊更團結。混亂和相怨的環境只會讓團隊失去內在成長動機 - 越優秀的團隊適用越簡單的規則,但那是他們表現優秀的時候 4. Lean Coffee ### 6.崁入完整性 1. 感知(外部)完整性(Perceived Integrity) - 每天持續把客戶的需求/價值觀,轉換成細部設計給開發團隊 - 累積開發單位在感知完整性的決策能力 2. 概念(內部)完整性(Conceptual Integrity) - 系統的核心概念是否能穩定的內聚,而發揮整體的作用 - 良好的溝通機制來克服系統複雜性 3. 重構 - 重構不是一種浪費,當我們在向客戶提供商業價值時,重構反倒是避免浪費的方法之一 ### 7.著眼整體 1. 局部優化容易捨本逐末 2. 小心考績因素、合約因素造成的局部優化 - 霍桑效應(Hawthorne Effect)-為了考績執行無助生產力的工作 3. 讓需求有優先級別