Agile, Tản mạn

TÌM HIỂU VỀ SCRUMBAN TRONG PHÁT TRIỂN PHẦN MỀM

From https://viblo.asia/Thanh/posts/3ZabG9A5GzY6

By Thanh

I. Khái lược về Scrum

1.Scrum

Scrum cơ bản là bộ khung làm việc (framework) hay có thể hiểu nôm na là cách thức làm việc để trở nên “linh hoạt” trong phát triển phần mềm.

Scrum là khung làm việc được sử dụng để quản lý quá trình phát triển các sản phẩm phức tạp. Scrum không phải là một quy trình hay một kĩ thuật cụ thể để xây dựng sản phẩm; hơn thế, nó là một khung làm việc cho phép ta sử dụng nhiều quy trình và kĩ thuật khác nhau. Scrum làm rõ hiệu quả của công tác quản lý và phát triển sản phẩm, từ đó cho phép ta cải tiến nó.

2.Scrum có các tính chất:

  • Scrum (hay agile nói chung) được xếp vào nhóm “Feature-driven development“. Sản phầm được phát triển theo tính năng, chứ không phát triển sản phẩm theo kiến trúc hệ thống.
  • Scrum khác với các mô hình Agile khác ở chỗ nó là mô hình hướng khách hàng (Customer oriented), vai trò của khách hàng trong việc đánh giá sản phẩm rất quan trọng. Chỉ sau mỗi sprint (2-4 tuần) khách hàng sẽ thấy được sự thay đổi của sản phẩm của mình qua đó đưa ra phản hồi sớm để định hướng.
  • Scrum giảm thiểu tài nguyên dành cho việc quản lý mà tập trung nhiều hơn cho những công việc liên quan trực tiếp đến việc làm ra sản phẩm. Bằng cách giảm vai trò quản lý (PM) bằng cách đẩy việc quản lý tới từng người
  • Giảm thời gian dành cho việc viết tài liệu bằng cách tăng thời gian trao đổi trực tiếp. Thông thường khi estimate công việc, thì team estimate cả thời gian dành cho communication để hoàn thành task đó nữa.

Khung làm việc Scrum bao gồm một Nhóm Scrum với các vai trò được phân định rõ ràng, các sự kiện và các quy tắc. Mỗi thành phần trong khung làm việc phục vụ một mục đích rõ ràng và là nòng cốt trong việc sử dụng cũng như thành công của Scrum.

Image

3.Vai trò trong Scrum

Trong Scrum có 3 vai trò: Chủ sản phẩm (Product Owner), Nhóm phát triển, và Scrum Master. Trong Scrum sẽ không có vai trò Quản lý dự án (Project manager) hay Trưởng nhóm kỹ thuật (Technical lead)

  • Product Owner: Là người chịu trách nhiệm cao nhất đối với sản phẩm và nhóm phát triển. Chủ sản phẩm có trách nhiệm làm việc với chủ đầu tư để hiểu yêu cầu về sản phẩm, quản lý những yêu cầu đó, tạo ra những “câu chuyện người dùng” đối với sản phẩm và truyền đạt những thông tin đó đến đội phát triển. Cơ bản là nếu nhóm gặp những vấn đề hay thắc mắc gì liên quan đến sản phẩm, hãy tìm gặp Product Owner.
  • Nhóm phát triển: Là một tập hợp những kỹ sư “liên chức năng”- nghĩa là công việc của họ không cố định ở lập trình, kiểm thử, phân tích hay thiết kế. Tùy theo yêu cầu công việc mà họ sẽ đảm nhận những vai trò tương ứng. Nhóm phát triển được quyền chủ động tổ chức công việc, ước lượng khối lượng công việc và cam kết hoàn thành công việc đã cam kết. Trong Sprint, nhóm phát triển có tiếng nói lớn nhất và những bộ phận khác có nhiệm vụ hỗ trợ những điều kiện tốt nhất để nhóm làm việc hiệu quả
  • Scrum Master: Nhiệm vụ của Scrum Master là giúp mọi người trong nhóm hiểu được Scrum, làm theo Scrum đồng thời hỗ trợ nhóm phát triển để họ có thể toàn tâm toàn ý làm việc. Vừa giống ông chủ vừa giống osin, kiểu vậy. Nếu có ai đó thắc mắc về quy trình trong Scrum, ý nghĩa của Scrum hay những vấn đề liên quan đến Scrum khác, hãy tìm gặp Scrum Master.Image

II. Scrumban là gì?

Scrum là giải pháp tốt nhất cho product và phát triển project. Kanban là giải pháp tốt nhất để hỗ trợ sản xuất. Scrumban là sự kết hợp của Scrum, Kanban và bao gồm toàn bộ những ưu điểm của cả 2 phương thức trên. Nó khuyến khích các đội phải liên tục cải tiến quy trình cùng với phương thức Kanban.

Scrumban được giới thiệu như một quy trình đơn giản để quản lý những project phức tạp. Hiện nay Scrumban được áp dụng tốt nhất khi phát triển trên web, software development hoặc maintenance.

1.Scrum

  • Chia công việc thành những list nhỏ, phân tách nhỏ để bàn giao. Sắp xếp danh sách này theo thứ tự ưu tiên và ước lượng tương đối thời gian, công sức bỏ ra cho mỗi item.
  • Chia thời gian thành những khoảng thời gian ngắn, lặp lại thường là từ 1-4 tuần, với khả năng có thể bàn giao code sau mỗi một chu trình.
  • Dựa trên những hiểu biết đã đạt được bằng cách kiểm tra các phiên bản sau mỗi lần lặp, tối ưu hóa các kế hoạch bàn giao và bản cập nhật ưu tiên trong hợp tác với các khách hàng.
  • Đánh giá quy trình bằng cách nhìn lại những gì đã làm sau mỗi chu trình.

2.Kanban

Quy trình làm việc

  • Chia công việc thành những phần nhỏ, viết mỗi phần vào một miếng giấy note và dán lên tường
  • Sử dụng tên cột để minh họa vị trí của mỗi item trong quy trình làm việc
  • Giới hạn công việc trong sự phát triển(WIP): Phân công rõ ràng giới hạn cho bao nhiêu item có thể được thực hiện ở mỗi workflow.
  • Ước lượng thời gian quản lý (thời gian trung bình để hoàn thành một item, đôi khi gọi là “cycle time”) và đánh giá quy trình để lập thời gian quản lý sao cho nhỏ nhất và có thể dự đoán.

3.Quy trình làm việc

Kết quả trực tiếp của sự khác biệt này trong các quy tắc là cách mà các work item được xử lý theo thời gian

Trong Scrum, bạn lựa chọn những việc mà bạn sẽ sẵn sàng làm cho sprint sau.

Làm lần lượt theo thứ tự, làm tất cả mọi việc mỗi sprint trong một vài tuần (khoảng thời gian thông thường cho sprint) và chuyển chúng sang trạng thái hoàn thành (cột Done) thì cuối cùng sẽ xử lý hết những sprint còn ở trạng thái chờ

Image

Ở Kanban, bị giới hạn bởi kích thước của hàng đợi, gọi là giới hạn WIP. Điều này có nghĩa là bạn có thế thay đổi items ở hàng đợi bất cứ lúc nào, và không có kết thúc sprint

Image

4.Scrumban = Scrum + Kanban

Sử dụng quy tắc tự nhiên của Scrum là Agile

Sử dụng quy trình phát triển của Kanban để team có thể tiếp tục cải tiến quy trình

Trong Scrumban, chúng ta có thể lập những kế hoạch lặp lại trong những khoảng thời gian đều đặn, đồng bộ với việc đánh giá và có thể xem lại những gì đã làm. Điều này làm giảm đáng kể chi phí.

Image

Lợi ích

  • Chất lượng
  • Đúng thời gian
  • Thời gian quản lý ngắn
  • Tiếp tục cải tiến
  • Ít rủi ro, giảm lãng phí
  • Có thể thêm chức năng vào Scrum khi cần

Khi nào nên sử dụng Scrumban

  • Dự án bảo trì
  • Dự án mà thường xuyên có lỗi không mong đợi
Advertisements

1 thought on “TÌM HIỂU VỀ SCRUMBAN TRONG PHÁT TRIỂN PHẦN MỀM”

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s