- 什麼是敏捷
- 敏捷就是一種思想
- 敏捷開發是基於敏捷的一種實踐
- 一些關於敏捷的名詞
- retro
- tdd
- code review
- points
- 結對程式設計
- mvp
- 反饋
- Story Point:功能需求點
- VoC(客戶的聲音)
- Unit Test
- Functional Test(功能測試)
- show case
- small commit
- MVP:最小可行性產品
- 敏捷宣言
個體和互動 高於 流程和工具 工作的軟體 高於 詳盡的文件 客戶合作 高於 合同談判 響應變化 高於 遵循計劃 複製程式碼
- 敏捷開發12原則
- 1 我們最重要的目標,是通過持續不斷地及早交付有價值的軟體使客戶滿意。
- 2 欣然面對需求變化,即使在開發後期也一樣。為了客戶的競爭優勢,敏捷過程掌控變化。
- 3 經常地交付可工作的軟體,相隔幾星期或一兩個月,傾向於採取較短的週期。
- 4 業務人員和開發人員必須相互合作,專案中的每一天都不例外。
- 5 激發個體的鬥志,以他們為核心搭建專案。提供所需的環境和支援,輔以信任,從而達成目標。
- 6 不論團隊內外,傳遞資訊效果最好和效率最高的方式是面對面的交談。
- 7 可工作的軟體是進度的首要度量標準。
- 8 敏捷過程倡導可持續開發。責任人、開發人員和使用者要能夠共同維持其步調穩定延續。
- 9 堅持不懈地追求技術卓越和良好設計,敏捷能力由此增強。
- 10 以簡潔為本,它是極力減少不必要工作量的藝術。
- 11 最好的架構、需求和設計出自自組織團隊。
- 12 團隊定期地反思如何能提高成效,並依此調整自身的舉止表現。(即retro)
【敏捷實踐】
-
scrum
- scrum: Scrum是迭代式增量軟體開發過程,通常用於敏捷軟體開發。
- Product Owner: 負責維護產品訂單的人,代表利益相關者的利益。
- scrum master: 為Scrum過程負責的人,確保scrum的正確使用並使得Scrum的收益最大化。一般不翻譯
- team:開發團隊,由負責自我管理開發產品的人組成的跨職能團隊,團隊擁有交付可用軟體需要的各種技能。在一定的週期限制內,開發團隊則會建立可用的、 並且可以隨時推出的軟體成品。
- scrum要素:
- sprint: 衝刺,一個固定的時間週期,(通常在2周到1個月之間),開發團隊會在此期間內完成所承諾的一組訂單項的開發。(迭代)
- user story: 使用者故事 (task)
- points: 故事點塑,代表故事的大小,這裡的大小不代表開發時間,只是故事的複雜度,工作量的大小。points是用來評估team的交付能力的
- backlog: 待辦事項集合。可以預知的所有任務,包括功能性的和非功能性的所有任務
- sprint backlog: 每個迭代的開發列表
- release planning: 發版計劃
-
scrum meeting
- stand up - 站會
- sprint planning meeting - 迭代計劃會議,確認迭代要做的,以及優先順序,識別task的風險和依賴,以及是否要去調研等等,以便做好迭代開發的前期準備
- showcase - 展示迭代完成的功能,目的是及時同需求方確認功能是否和需求吻合
- retrospective - 就是retro,總結前一個迭代好的和不好的,指定action和負責人,以便在之後去進行改進和保持。
-
scrum價值觀
- 專注 - 把你的心思和能力都用到你承諾的工作上去
- 勇氣 - 有勇氣去面對各種挑戰
- 公開 - 把專案中的一切開放給每個人看(包括進展、問題、阻礙)
- 承諾 – 願意對目標做出承諾(作為一個自組織團隊,在迭代開始的時候做出承諾,並在迭代中全力完成)
- 尊重– 每個人都有他獨特的背景和經驗。(團隊是長期坐到一起,並且穩定的,有助於加深彼此的瞭解和溝通)
【敏捷實踐】
- 極限程式設計
- TDD:測試驅動開發
- CI/CD:持續整合/持續部署
- refactoring:重構
- code review:程式碼審查
- pair programming
- 看板方法:
- 限制WIP
- 減小批量
- 視覺化
- 管理度量佇列
- 反饋:
- 產品的反饋:MVP
- 團隊的反饋:Retro
- 專案的反饋:TDD CI/CD
- 個人的反饋:舒適區