TÌM HIỂU VỀ MÔ HÌNH KANBAN
-
Kanban là gì?
Kanban là một phương pháp quản lý và cải tiến công việc, trong đó công việc được trực quan hóa để các thành viên có thể dễ dàng theo dõi trạng thái và tiến độ của từng công việc.
Trong phát triển phần mềm, Kanban thường sử dụng một bảng Kanban gồm các cột thể hiện từng trạng thái của công việc. Các công việc sẽ được di chuyển qua các cột từ lúc bắt đầu cho đến khi hoàn thành.
Ví dụ một bảng Kanban đơn giản có thể gồm:
To Do → In Progress → Testing → Done
Mỗi công việc sẽ được biểu diễn bằng một thẻ (card). Khi công việc thay đổi trạng thái, thành viên sẽ di chuyển thẻ sang cột tương ứng.
Kanban có nguồn gốc từ phương pháp sản xuất tinh gọn và được áp dụng trong nhiều lĩnh vực, đặc biệt là phát triển phần mềm.
-
Bảng Kanban hoạt động như thế nào?
Bảng Kanban giúp cả nhóm nhìn được toàn bộ luồng công việc thay vì mỗi người chỉ biết phần việc của mình.
Ví dụ khi phát triển một website bán hàng, bảng có thể được tổ chức như sau:
Backlog → To Do → Development → Testing → Done
Trong đó:
-
Backlog: Các công việc hoặc yêu cầu chưa được thực hiện.
-
To Do: Công việc đã được chọn và đang chờ thực hiện.
-
Development: Công việc đang được lập trình.
-
Testing: Chức năng đã lập trình xong và đang được kiểm thử.
-
Done: Công việc đã hoàn thành.
Khi một task hoàn thành ở cột hiện tại và có khả năng tiếp nhận công việc mới, task tiếp theo có thể được đưa vào xử lý.
Điều này giúp nhóm dễ dàng nhận biết công việc đang nằm ở đâu và phát hiện những bước đang bị chậm hoặc bị tồn đọng.
-
Các nguyên lý quan trọng của Kanban
Kanban có một số nguyên lý quan trọng giúp nhóm quản lý công việc hiệu quả hơn.
3.1. Trực quan hóa luồng công việc
Đây là một trong những đặc điểm dễ nhận biết nhất của Kanban. Các công việc được thể hiện trực tiếp trên bảng để mọi thành viên có thể theo dõi tiến độ.
Nhờ đó, nhóm có thể biết được công việc nào chưa làm, công việc nào đang thực hiện và công việc nào đã hoàn thành.
3.2. Giới hạn WIP
WIP (Work In Progress) là lượng công việc đang được thực hiện cùng lúc.
Kanban giới hạn số lượng công việc được phép thực hiện đồng thời trong một trạng thái. Ví dụ cột Development chỉ cho phép tối đa 3 task. Khi đã có đủ 3 task thì nhóm không đưa thêm task mới vào cho đến khi một task được hoàn thành và chuyển sang bước tiếp theo.
Việc giới hạn WIP giúp nhóm tránh tình trạng một người làm quá nhiều việc cùng lúc nhưng không hoàn thành được việc nào.
-
Hệ thống Pull trong Kanban
Một điểm quan trọng của Kanban là Pull System – hệ thống kéo.
Thay vì liên tục giao thêm công việc cho thành viên khi họ đang bận, công việc mới chỉ được đưa vào khi có khả năng tiếp nhận.
Ví dụ:
Development → Testing
Nếu cột Development đã đạt giới hạn WIP thì nhóm không tiếp tục kéo thêm task mới vào Development. Khi một task được chuyển sang Testing và tạo ra một vị trí trống, nhóm mới có thể kéo task tiếp theo vào Development.
Có thể hiểu đơn giản:
Có chỗ trống thì kéo công việc tiếp theo vào.
Cách làm này giúp luồng công việc được duy trì ổn định và tránh việc công việc bị dồn quá nhiều ở một giai đoạn.
-
Quản lý luồng công việc
Kanban không chỉ sử dụng bảng để theo dõi công việc mà còn chú trọng đến việc quản lý và cải thiện luồng công việc.
Ví dụ, nếu cột Testing thường xuyên có rất nhiều task nhưng ít task được chuyển sang Done, nhóm có thể nhận ra rằng công đoạn kiểm thử đang trở thành điểm nghẽn.
Khi đó, nhóm có thể xem xét nguyên nhân và điều chỉnh cách làm, chẳng hạn tăng người hỗ trợ kiểm thử hoặc giảm số lượng task được đưa vào Development cùng lúc.
Việc theo dõi luồng công việc giúp nhóm phát hiện vấn đề và đưa ra những thay đổi dựa trên tình hình thực tế.
-
Kanban có cần Sprint không?
Đây là một điểm khác giữa Kanban và Scrum.
Scrum thường tổ chức công việc theo các Sprint có thời gian cố định. Nhóm lựa chọn một số công việc để thực hiện trong Sprint và đánh giá kết quả sau Sprint.
Trong khi đó, Kanban không bắt buộc phải chia công việc thành các Sprint cố định. Công việc được thực hiện theo luồng liên tục. Khi một task hoàn thành, nhóm có thể tiếp tục kéo task tiếp theo vào nếu có khả năng xử lý.
Do đó, Kanban phù hợp với những công việc cần xử lý liên tục và thường xuyên có công việc mới phát sinh.
-
Ví dụ thực tế
Ví dụ một nhóm đang phát triển website bán laptop.
Ban đầu nhóm có các công việc:
Các công việc này được đưa lên bảng Kanban.
Khi nhóm bắt đầu làm chức năng đăng nhập, thẻ công việc được chuyển từ To Do sang Development.
Sau khi lập trình xong, thẻ được chuyển sang Testing.
Nếu kiểm thử đạt yêu cầu, thẻ được chuyển sang Done.
Trong trường hợp cột Development đã đạt giới hạn WIP, nhóm sẽ không tiếp tục nhận thêm công việc mới mà ưu tiên hoàn thành những công việc đang thực hiện trước.
-
Ưu điểm của Kanban
Kanban có một số ưu điểm:
-
Dễ theo dõi công việc: Thành viên có thể nhìn vào bảng để biết tiến độ.
-
Trực quan: Trạng thái công việc được thể hiện rõ ràng.
-
Hạn chế làm quá nhiều việc cùng lúc: Nhờ giới hạn WIP.
-
Dễ phát hiện điểm nghẽn: Có thể nhìn thấy công việc đang bị tồn đọng ở bước nào.
-
Linh hoạt: Không bắt buộc phải chia công việc thành các Sprint cố định.
-
Cải tiến liên tục: Nhóm có thể theo dõi quy trình và điều chỉnh khi phát hiện vấn đề.
Việc giới hạn công việc đang thực hiện giúp giảm lượng công việc tồn đọng và có thể giúp công việc được hoàn thành nhanh hơn.
-
Nhược điểm của Kanban
Bên cạnh những ưu điểm, Kanban cũng có một số hạn chế:
-
Nếu bảng không được cập nhật thường xuyên thì thông tin trên bảng có thể không phản ánh đúng thực tế.
-
Nếu đặt giới hạn WIP không hợp lý thì có thể làm ảnh hưởng đến tiến độ.
-
Nếu nhóm không tuân thủ quy trình thì bảng Kanban chỉ trở thành nơi ghi chú công việc.
-
Kanban không đưa ra một quy trình phát triển phần mềm hoàn chỉnh như Scrum mà tập trung nhiều vào việc quản lý luồng công việc.
Vì vậy, để Kanban hoạt động hiệu quả, nhóm cần thống nhất cách sử dụng bảng, giới hạn WIP và cách chuyển công việc giữa các trạng thái.
-
Kanban và Scrum
Kanban và Scrum đều có thể được sử dụng trong môi trường Agile nhưng cách tổ chức công việc khác nhau.
Scrum:
-
Là một framework.
-
Làm việc theo Sprint có thời gian cố định.
-
Có các vai trò như Product Owner, Scrum Master và Developers.
-
Có các sự kiện như Sprint Planning, Daily Scrum, Sprint Review và Sprint Retrospective.
Kanban:
-
Tập trung vào việc quản lý luồng công việc.
-
Công việc được thực hiện liên tục.
-
Không bắt buộc phải có Sprint.
-
Sử dụng bảng Kanban để trực quan hóa công việc.
-
Chú trọng giới hạn WIP và hệ thống Pull.
Có thể hiểu đơn giản:
Scrum: Chia công việc thành từng Sprint.
Kanban: Quản lý công việc theo một luồng liên tục.
Kanban cũng có thể được sử dụng kết hợp với Scrum hoặc các phương pháp khác.
-
Khi nào nên sử dụng Kanban?
Kanban phù hợp khi nhóm có công việc phát sinh liên tục và cần theo dõi trạng thái công việc một cách trực quan.
Ví dụ:
-
Nhóm phát triển và bảo trì phần mềm.
-
Nhóm xử lý lỗi và yêu cầu hỗ trợ.
-
Nhóm cần liên tục tiếp nhận và hoàn thành các task mới.
-
Dự án có yêu cầu thay đổi thường xuyên.
-
Nhóm muốn cải thiện luồng công việc hiện tại mà không cần thay đổi toàn bộ quy trình.
Kanban cũng có thể được áp dụng kết hợp với các phương pháp khác thay vì sử dụng độc lập.
-
Kết luận
Kanban là phương pháp quản lý công việc tập trung vào trực quan hóa, giới hạn WIP và quản lý luồng công việc. Thông qua bảng Kanban, các thành viên có thể dễ dàng theo dõi công việc từ lúc bắt đầu cho đến khi hoàn thành.
Điểm đặc trưng của Kanban là hệ thống Pull, tức là công việc mới chỉ được đưa vào khi nhóm có khả năng tiếp nhận. Điều này giúp hạn chế việc làm quá nhiều công việc cùng lúc và giúp nhóm tập trung hoàn thành những công việc đang thực hiện.
Theo em, Kanban phù hợp với những nhóm có công việc phát sinh liên tục và cần một cách quản lý trực quan, linh hoạt. So với Scrum, Kanban không yêu cầu Sprint cố định mà tập trung nhiều hơn vào việc duy trì và cải thiện luồng công việc.
Bài viết khác
TÌM HIỂU VỀ SCRUM
Scrum là gì? Scrum là một framework được sử dụng để tổ chức và quản lý công việc theo cách tiếp cận Agile. Scrum thường được sử dụng trong phát triển phần mềm, đặc biệt là những dự án có nhiều công việc và yêu cầu có thể thay đổi trong quá trình thực hiện. […]
TÌM HIỂU VỀ MÔ HÌNH WATERFAL
Waterfall là gì? Waterfall hay còn gọi là mô hình Thác nước, là một mô hình phát triển phần mềm dựa trên quy trình tuần tự và liên tiếp. Các giai đoạn trong dự án được thực hiện theo một trình tự nhất định, giai đoạn sau chỉ bắt đầu khi giai đoạn trước đã […]
TÌM HIỂU VỀ MÔ HÌNH AGILE
TÌM HIỂU VỀ MÔ HÌNH AGILE Tổng quan về Agile Agile là một cách làm trong phát triển phần mềm, được sử dụng để giúp nhóm làm việc linh hoạt hơn trong quá trình xây dựng sản phẩm. Điểm em thấy dễ hiểu nhất ở Agile là không nhất thiết phải làm toàn bộ dự […]
Git
1. Git là gì? Git là một hệ thống quản lý phiên bản phân tán (Distributed Version Control System – DVCS) được sử dụng để quản lý, theo dõi và kiểm soát các thay đổi trong mã nguồn của một dự án. Git giúp lập trình viên lưu lại lịch sử phát triển của project, […]
Kanban
Kanban là gì? Kanban là một phương pháp quản lý công việc tập trung vào việc trực quan hóa công việc, kiểm soát lượng công việc đang thực hiện và cải thiện dòng chảy của công việc. Kanban giúp team nhìn thấy toàn bộ công việc đang ở trạng thái nào, công việc nào đang […]
Scrum
Scrum là gì? Scrum là một framework được sử dụng để tổ chức và quản lý quá trình phát triển sản phẩm, đặc biệt phổ biến trong phát triển phần mềm. Scrum giúp một team biến những nguyên tắc của Agile thành một cách làm việc cụ thể hơn. Nếu Agile là tư duy, thì […]