Agile là gì? – Phần 2

Tiếp theo phần 1, hôm nay mình sẽ tiếp tục viết về phần 2 quy trình Agile.

Lần trước ta nói tới khái niệm của Scrum rồi, bây giờ tìm hiểu làm sao để tiến hành thực hiện Scrum.

Scrum là gì?

Scrum là gì nhỉ?

Để tiến hành thực hiện Scrum vào dự án, đầu tiên phải hiểu được nó là một phương pháp linh hoạt, tuân theo nguyên tắc Agile Manifesto. Scrum tổ chức việc phát triển sản phẩm thành các chu trình làm việc (không quá một tháng) được gọi là các Sprint. Các Sprint sẽ được định đoạt ngày kết thúc, hay nói theo ngôn ngữ coder là có deadline đó. Khi qua deadline rồi thì sẽ không được kéo dài thêm thời gian dù có hoàn thành được công việc hay chưa.

Các Sprint sẽ được chia thành hạng mục nhỏ và cho các team chọn, theo đó các team sẽ cam kết thời gian hoàn thành và không được thay đổi hạng mục của mình. Mỗi ngày, các team sẽ tự tổ chức họp, báo cáo tình hình với team-leader, team-leader có nhiệm vụ điều chỉnh và đẩy tiến độ dự án để hoàn thành theo đúng thời gian đã cam kết. Vì vậy, nếu bạn vô một công ty mà suốt ngày họp để đánh giá dự án và lập kế hoạch phát triển tiếp theo thì có thể nó đang theo quy trình Scrum đấy. Sau khi kết thúc sprint, mỗi team sẽ báo cáo tình hình với các team liên quan hoặc Project Manager và đi vào Sprint tiếp theo.

Thật sự, bản chất của Scrum chỉ quan tâm tới phần đã thực hiện được ở cuối mỗi Sprint, tức là mã nguồn đã qua kiểm thử có thể chuyển giao được. Scrum hoạt động theo cơ chế thích nghi nên rất linh hoạt, vì trong mỗi dự án nhiều khi có những thay đổi, những yếu tố bất ngờ mà khách hàng yêu cầu mình theo họ, sẽ rất khó hoàn thành sản phẩm hoàn chỉnh theo ý khách hàng nếu như ta cứ đi theo chu trình đã định sẵn từ trước.

Scrum model - Jusfunny Blog

Quy trình mô hình Scrum

 

Các vai trò quan trọng trong Scrum

Trong Scrum có 3 vị trí có vai trò quan trọng nhất, ảnh hưởng lớn nhất tới chất lượng dự án.

1. Product Owner

Họ là ai? Họ là chủ sản phẩm, là những người chịu trách nhiệm tối đa lợi nhuận trên tổng vốn bỏ ra bằng cách đề ra các chức năng của sản phẩm, chuyển các chức năng thành một danh sách có thứ tự ưu tiên thực hiện trong các Sprint đã nói ở trên đó các bạn. Họ chịu trách nhiệm về toàn bộ lợi nhuận và tổn thất của sản phẩm nếu đó là sản phẩm thương mại (tức là bán ra thị trường cho người khác xài). Nếu đó là sản phẩm nội bộ (làm để công ty dùng) thì họ không chịu trách nhiệm lợi nhuận nhưng vẫn phải tối ưu hóa giá trị nhận được từ sản phẩm đó trên tổng số vốn đã bỏ ra để tạo ra nó. Hiểu nôm na là phải làm sao cho đáng đồng tiền bát gạo. He he!. Thường thì vị trí này là Product Manager (PM) tức là Giám đốc sản phẩm.

2. Nhóm phát triển

Họ là ai? Họ là người phát triển sản phẩm mà PM giao cho, họ đảm bảo việc đưa ra sản phẩm đúng thời gian và có thể chuyển giao được sau khi qua kiểm thử. Họ là những nhóm tự quản nên phải có tinh thần và trách nhiệm rất cao, họ có thể là nhóm 7 người (có khi 5 hoặc 9) có kỹ năng về phân tích, thiết kế cơ sở dữ liệu(CSDL), thiết kế giao diện, code skills thần thánh, kiểm thử, viết document ….. Nhưng theo mình thấy thường họ sẽ chia ra các team có chung chức năng với nhau, ví như team QA(Quality Assurance), team QC(Quality Control), team Developer, …..

3. Scrum Master

Họ là ai đây? Vâng, họ chính là những người hiểu biết sâu rõ nhất về Scrum, master cơ mà. Họ sẽ giúp Nhóm phát triển học và áp dụng Scrum để làm sao đạt được nhiều giá trị nhất (kiếm nhiều tiền nhất). Tất nhiên họ không phải là quản lý của PM hay Nhóm phát triển, họ chỉ có nhiệm vụ giúp cho Nhóm phát triển và PM vận dụng Scrum sao cho khéo léo nhất, giúp cho mọi người hiểu và làm theo Scrum, giúp họ vượt qua tất cả khó khăn thường gặp trong quá trình thay đổi của khách hàng. Scrum Master rất quan trọng nên họ phải là người cởi mở, hết mình giúp đỡ mọi người khi họ gặp khó khăn, nếu không Nhóm phát triển và PM sẽ rất dễ thất bại.

Vậy Scrum Master họ từng là ai? Họ từng là bất kỳ ai, xuất phát từ mọi vị trí hoặc cũng có thể theo chuyên môn của họ như Kỹ sư phần mềm, Kiểm thử, Thiết kế, Quản lý dự án, Quản lý chất lượng.

Các cuộc họp của Scrum

Scrum có 4 cuộc họp nhằm tạo môi trường và quy tắc hoạt động cho các thành viên thực hiện dự án đó.

1. Họp kế hoạch trước Spring (Sprint Planning)

Cuộc họp này sẽ được tổ chức khi bắt đầu Spring, chia thành 2 phần với các chức năng khác nhau.

Phần 1: Nhóm phát triển và PM sẽ xem xét các hạng mục có độ ưu tiên cao trong Sprint, họ sẽ thảo luận với nhau để Nhóm phát triển thấu hiểu hết ý mà PM muốn nói. Họ cũng thảo luận về định nghĩa như thế nào là hoàn thành Sprint (mã nguồn phải làm được gì, sẽ được kiểm thử với TDD như thế nào, kiểm thử tự động ra sao, tài liệu viết như thế nào).

Phần 2: Nhóm phát triển sẽ lập kế hoạch công việc chi tiết để biết cách thực hiện được các hạng mục mà họ đã chọn. Điều quan trọng ở đây là Nhóm phát triển sẽ tự cam kết hoàn thành bao nhiêu phần trăm của hạng mục thay vì được PM phân công, vì họ biết rõ sẽ làm được gì qua sự phân tích và lên kế hoạch của họ chứ không phải dựa theo quyết định của người khác.

2. Họp hằng ngày (Daily Scrum)

Đây là cuộc họp sau khi đã triển khai Sprint, cuộc họp này thường kéo dài 15 phút và bắt buộc mọi thành viên trong team đều phải có mặt, đặc biệt là ai cũng phải đứng, éo được ngồi. Trong 15 phút đó mỗi thành viên sẽ báo cáo 3 vấn đề: những việc đã làm (tính từ bữa họp trước), những khó khăn gặp phải trong quá trình làm việc, những việc mình sẽ làm đến buổi họp kế tiếp cho Team leader và các thành viên khác.

Bản chất của cuộc họp này không phải để báo cáo mà là thời gian để các thành viên tự chia sẻ với nhau, giúp họ phối hợp với nhau trong công việc. Đặc biệt, sẽ không có sự tham gia của PM hay một người quản lý nào, vì như vậy sẽ khiến cho các thành viên trong team cảm giác bị giám sát, bị ức chế vì phải báo cáo các việc không đạt được, bị ngại khi phải báo cáo các khó khăn của mình.

3. Họp sơ kết Sprint (Sprint Review)

Cuối giai đoạn Sprint, Nhóm phát triển và PM sẽ họp và rà soát lại các việc đã hoàn tất, có những đề xuất hoặc chỉnh sửa cần thiết cho sản phẩm. Mình thấy mọi người hay gọi buổi này là buổi chạy thử hay là demo sản phẩm đó, qua đó cũng giúp cho nhóm phát triển biết về các yêu cầu của PM và thị trường rõ hơn. Không nên đặt nặng vấn đề chạy thử sản phẩm ở buổi họp này, mà nên tập trung nhiều vào việc trao đổi giữa PM và Nhóm phát triển, cũng có thể có sự tham gia của Scrum Master, khách hàng hoặc bất kỳ nhà quản lý nào quan tâm.

4. Họp cải tiến Sprint (Sprint Retrospective)

Nhóm phát triển sẽ rà soát lại toàn bộ quá trình Scrum dưới sự trợ giúp của Scrum Master, qua đó tìm cách cải tiến quy trình làm việc và đem đến thành quả. Đây chính là một cơ hội cho nhóm rà soát lại những gì đã làm được và những gì chưa làm được, họ sẽ phải tìm ra nguyên nhân và sẽ phải đồng thuận thay đổi để cải tiến trong Sprint kế tiếp. Scrum Master có thể làm người dẫn chương trình nhưng tốt nhất là nên dành vị trí này cho một người trung lập, giúp cho các thành viên của các team có thể trao đổi chéo với nhau.

Khởi động Sprint kế tiếp

Ngay sau buổi họp sơ kết Sprint, PM và Nhóm phát triển sẽ chuẩn bị cho một Sprint kế tiếp. Sẽ không có chút thời gian nghỉ nào giữa các sprint cả. Họ thường họp cải tiến Sprint vào buổi chiều và bắt đầu Sprint kế tiếp vào sáng hôm sau hoặc đầu tuần sau nếu trước đó là cuối tuần. Điều này khiến cho việc vận hành của Scrum được liên tục và ổn định.

OK, tất cả đây chỉ là chút kiến thức căn bản về Scrum mà mình muốn chia sẻ với mọi người. Nếu ai có ý định theo con đường Scrum Master thì nên tìm hiểu sâu hơn, kỹ hơn. Còn rất nhiều thuật ngữ khác mà mình không có thời gian viết ra đây. Cảm ơn tất cả mọi người.

Advertisements

Trả lời

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Đăng xuất / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Đăng xuất / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Đăng xuất / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Đăng xuất / Thay đổi )

Connecting to %s