Software Project Process: Kanban

Ở công ty thấy có dự án các bạn ấy dùng Kanban, một cách triển khai agile nên tôi thử tìm hiểu xem sao.

What Is Kanban?

Kanban trong tiếng Nhật là “visual sign” hay “card”, tiếng Việt là "bảng quản lý thông tin". Nó là một visual framework áp dụng Agile để hiển thị sẽ implement cái gì, khi nào và tốn effort bao nhiêu. Kanban khuyến khích việc chia nhỏ và gia tăng thay đổi trong hệ thống hiện tại và không đòi hỏi bất cứ thiết lập hay thủ tục cụ thể nào (điều đó có nghĩa là bạn có thể dùng Kanban phía trên của một workflow đang tồn tại). Kanban bắt nguộn từ tập đoàn sản xuất xe hơi nổi tiếng Toyota. Vào năm 1940s, Toyota đã cải tiến quy trình kỹ thuật của mình bằng cách mô hình hoá nó dựa trên cách mà các siêu thị sắp xếp hàng hoá trong kho. Kỹ sư Taiichi Ohno nhận thấy rằng các siêu thị chỉ cung cấp dựa vào nhu cầu người dùng, tối ưu flow giữa siêu thị và người mua. Hàng hoá chỉ được bổ sung tiếp vào kho khi có chỗ trống trên kệ. Và bởi vì hàng hoá match với sự tiêu dùng, nên siêu thị đã nâng cao hiệu quả trong việc quản lý hàng hoá.

Toyota mang nguyên lý đó vào nhà máy của họ. Các team khác nhau sẽ tạo một thẻ card (Kanban) để thông báo rằng họ đang có năng suất dư thừa và sẵn sàng nhận thêm nhiều nguyên liệu hơn nữa. Bởi vì mọi yêu cầu cho từng bộ phận được kéo về theo thứ tự, nên Kanban thỉnh thoảng còn được gọi “pull system”.

Một idea giống thế được áp dụng cho software team và IT project hiện nay. Trong context này, các công việc hiện tại (development work-in-progress (WIP)) đóng vai trò là hàng hoá, và công việc mới chỉ được thêm vào khi có "empty space" trên visual Kanban board của team. Kanban sẽ match với lượng WIP mà team có thể đảm nhận, tăng khả năng linh hoạt, trong suất và output cho sản phẩm

Theo Kanban blog, “Kanban là kĩ thuật quản lý quy trình phát triển phần mềm đem lại hiệu quả cao. Kanban là cơ sở của Toyota's ‘just-in-time’ (JIT) product system. Mặc dù phát triển phần mềm là một hoạt động sáng tạo và do đó, nó khác với dây truyền sản xuất ô tô hàng loạt, nhưng cơ chế cơ bản để quản lý dây chuyền sản xuất vẫn có thể áp dụng.”

Khi nhìn nhận về Kanban và Agile, có điều quan trong để nhớ là Kanban là một các "hương vị" của Agile. Nó là một trong nhiều framework được dùng thực hiện Agile software development.

About the Kanban Board

Kanban board là một công cụ để thực hiện Kanban method cho project. Theo truyền thống, nó là một bảng vật lý với nam châm, chip nhựa, hoặc ghi chú dính trên một bảng để thể hiện các hạng mục công việc. Tuy nhiên, trong những năm gần đây, ngày càng xuất hiện nhiều phần mềm quản lý project để có thể tạo Kanban board online.

Một Kanban board, không quan tâm nó là bảng thật hay online, đều được tạo ra bằng các lane và columns khác nhau. Board đơn giản nhất có 3 column: to do, in progress, and done. Những column trong software development có thể bao gồm các cột như backlog, ready, coding, testing, approval, and done.

Kanban cards (giống như sticky notes) biểu diễn công việc và mỗi card được đặt trên board tương ứng với status của nó. Bằng cách này, status của công việc được hiểu ngay lập tức. Bạn có thể dùng các màu sắc khác nhau cho các phần chi tiết hơn. VÍ dụ, card xanh lý để hiểu thị một chức năng, card màu cam để hiển thị một task .

Advantages of Kanban

Tính chất trực quan của Kanban là ưu thế độc nhất khi thực thi Agile. Kanban board dễ hiểu, giúp cải thiện flow công việc, và giảm vòng đời của phát triển.

Các lợi ích của Kanban bao gồm:

Tăng độ linh hoạt: Kanban là một mô hình phát triển và quan hệ lỏng. Ở đây, ko thiết lập duration của phase và độ ưu tiên được đánh giá dựa vào thông tin mới.

Giảm thiểu lãng phí: Kanban xoay quay viẹc giảm thiểu lãng phí, bảo đảm rằng team không tốn quá nhiều thời gian để làm việc không cần thiết hay làm sai loại công việc.

Dễ hiểu: Bản chất trực quan của Kanban giúp nó vô cùng sinh động và dễ hiểu. Team không cần phải học hoàn chỉnh một phương thức mới, Kanban dễ dàng thực hiện bên trên các hệ thống khác.

Cải thiện flow delivery: Kanban teams tối ưu hoá flow công việc ra tới khách hàng. Giống như cotinuous delivery (CD), Kanban focus vào các giá trị phân phối ngay tức thời (just-in-time) và phân phối công việc tới khách hàng một cách nhịp nhàng.

Giảm thiểu thời gian chu kỳ: Thời gian chu kỳ là khoảng thời gian cần cho công việc để xuyên suốt qua quy trình làm việc của nhóm. Trong các dự án của Kanban, toàn bộ nhóm sẽ giúp đảm bảo công việc di chuyển nhanh chóng và thành công.

Disadvantages of Kanban

Có nhiều nhược điểm của Kanban khi dùng sai hoặc lạm dụng Kanban board. Một board không đc update hoặc quá phức tạp sẽ dẫn đến việc nhầm lẫn, thiếu chính xác hay hiểu sai thông tin.

Dưới đây là một vài nhược điểm nữa của Kanban:

Board quá hạn sẽ dẫn đến nhiều issue: Team phải commit rằng board được update, ngược lại nếu board ko đc update, họ sẽ làm việc với thông tin kém chính xác. Và khi công việc kết thúc với một board quá đát, thật khó để quay lại từ đầu.

Team có thể phức tạp hoá board: Kanban board nên clear và dễ đọc, tuy nhiên vài team member có thể học một vài "new trick" để áp dụng vào board của họ. Thêm một vài chú thích, đánh dấu chỉ nhằm mục đích làm nổi bật thông tin quan trọng.

Lack of timing: Một trong các phàn nàn thường xuyên về Kanban là bạn sẽ ko biết được khi nào thì công việc sẽ hoàn thành. Các cột trên Kanban board chỉ được đánh dấu bởiphase (to do, in progress, complete), không có timeframe của mỗi phase, vì thế bạn sẽ không biết được một phase sẽ kéo dài trong bao lâu.

※Source

https://www.smartsheet.com/agile-vs-scrum-vs-waterfall-vs-kanban