---
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角度

* 從軟工角度
)
* Lean vs. Agile詳細比較

* 依照規範多寡比較

## 精實開發的七大原則
### 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. 讓需求有優先級別