Tổng hợp ghi chú Agile Lean Software Development & Kanban Note – Luyện thi PMI-ACP
Lean Software Development has its principles adopted from the Lean Manufacturing Approaches. Lean is not an Agile method in the strictest sense but its values are in close alignment with Agile. This post is about the guidance principles and practices, etc. of Lean Software Development and Kanban. Lean Software Development is one of the most asked Agile framework on the PMI-ACP® Exam and has shown increase in popularity to appear in the PMI-ACP® exam over the past few years.
Lean Software Development Agile Model
Lean Software Development is based on sever core values:
- Eliminate Waste – remove any work, processes, etc. that do not deliver values
- Empower the Team (Respect People) – respect the team to make their own decisions without micro-management
- Deliver Fast – deliver values fast to maximize return on investment (ROI)
- Optimize the Whole – optimize the project parts as a whole and align to the organizational goals
- Build Quality In – quality must be in-built into the whole process through automated unit testings, continuous integration, refactoring, etc.
- Defer Decisions – make commitments as late as possible for a better informed decision as the availability of information is more
- Amplify Learning (Build Knowledge) – gather feedback and communicate often to keep learning about requirements, environments, etc.
Key Lean Techniques
- Value Stream Mapping – to investigate processes to reduce wastes
- Work In Progress (WIP) – work not yet done, requires overhead on managing these works and their relationship with others, considered wastes if too many as some work must be put on waiting
- Seven Forms of Wastes for Lean Software Development
- Defects – defective parts or documents
- Extra Features – “nice-to-haves”
- Extra Processes – processes that do not add value
- Task Switching – multitasking for different processes / projects
- Partially Done Work – any WIP that is not “done” according to definition of done
- Waiting – waiting for review, approval, etc.
- Motion – move the information / deliverable to another place (e.g. distributed teams)
- Kanban means “signboard” in Japanese.
- Can be physical cards / post-it or software-based
- Kanban is a pull system where developers take out tasks from the product / iteration backlog and work all the way to reach “Done”.
- Kanban limits Work In Progress (WIP) to identify issues with the development and reduces wastes, different WIP limits can be applied to different columns of the Kanban board.
- Kanban boards are simple information radiator ideal for all the people involved in the project (vs Gantt charts which are too complicated).
- If a developer finds out that the task time estimate is too high or low, they should amend it as soon as possible (since they are further into the project and would understand the requirements much better than at the beginning).
5 Core Kanban Principles
- Visualize the Workflow – the Kanban board make the project progress visible for optimizing and tracking
- Limit WIP – make bottlenecks visible so as to facilitate continuous improvements
- Manage Flow – optimize the flow for maximum efficiency
- Make Process Policies Explicit – since the rules for the Kanban pull system is cleared stated, objective discussions are made feasible for improvements
- Improve Collaboratively – since objective data / metrics can be collected through the Kanban board, testing and improvements can be made collectively