Agile là gì?
Agile là một quy trình cho phép một nhóm quản lý dự án hiệu quả hơn bằng cách chia nhỏ dự án thành nhiều giai đoạn, mỗi giai đoạn cho phép hợp tác một cách nhất quán với các bên liên quan để thúc đẩy các cải tiến ổn định ở mọi giai đoạn. Agile cũng cho phép nhóm quản lý dự án đẩy nhanh tiến độ của dự án hơn thông thường.
Agile Manifesto (Tuyên ngôn Agile)
Agile lần đầu tiên được mô tả trong Tuyên ngôn Agile vào năm 2000 bởi một nhóm các nhà phát triển, những người đã tìm ra một phương pháp viết phần mềm mới. Tuyên ngôn trích dẫn bốn giá trị:
- Cá nhân và sự tương tác hơn là quy trình và công cụ;
- Phần mềm chạy tốt hơn là tài liệu đầy đủ;
- Cộng tác với khách hàng hơn là đàm phán hợp đồng;
- Phản hồi với các thay đổi hơn là bám sát kế hoạch.
Hiểu một cách đơn giản là tuyên ngôn Agile sẽ ưu tiên các giá trị bên trái hơn là bên phải dù chúng vẫn còn giá trị.
12 nguyên tắc của tuyên ngôn Agile
Tuyên ngôn Agile cũng ban hành 12 nguyên tắc liên quan đến phát triển phần mềm và sau đó được chỉnh sửa lại để phù hợp với quan điểm rộng rãi hơn của người dùng:
- Sự hài lòng của khách hàng
- Giao hàng sớm và liên tục
- Đón nhận những thay đổi
- Giao hàng thường xuyên
- Sự hợp tác của các doanh nghiệp và nhà phát triển
- Nỗ lực của mỗi cá nhân
- Đối thoại trực tiếp sẽ được ưu tiên
- Đảm bảo chức năng của sản phẩm
- Chú trọng vào kỹ thuật
- Sự tối giản
- Các đội tự tổ chức
- Quy định, phản ánh và điều chỉnh
Scrum là gì?
Nói một cách ngắn gọn, Scrum là một quy trình phát triển phần mềm theo phương pháp Agile. Chính vì thế, Scrum tuân thủ các nguyên tắc của Agile Manifesto.
Tuy nhiên, Agile và Scrum không phải là một. Agile là một phương pháp, bao gồm những giá trị cốt lõi và nguyên tắc nhất định còn Scrum là quy trình “hiện thực hóa” những giá trị và nguyên tắc của Agile.
Khung làm việc (Framework) Scrum có gì?
Để có thể dùng Scrum, chúng ta cần hiểu rõ và vận dụng đúng các thành tố tạo nên Scrum bao gồm các giá trị cốt lõi (còn gọi là “ba chân”, hay ba trụ cột của Scrum), các vai trò, các sự kiện, và các công cụ (artifacts) đặc thù của Scrum.
Vậy thì ba chân (hay giá trị cốt lõi) của Scrum là gì?
Minh bạch (transparency)
Muốn thành công với Scrum, thông tin liên quan tới quá trình phát triển phải minh bạch và thông suốt. Các thông tin đó có thể là: tầm nhìn (vision) về sản phẩm, yêu cầu khách hàng, tiến độ công việc, các khúc mắc và rào cản v.v.
Từ đó mọi người ở các vai trò khác nhau có đủ thông tin cần thiết để tiến hành các quyết định có giá trị để nâng cao hiệu quả công việc.
Các công cụ và cuộc họp trong Scrum luôn đảm bảo thông tin được minh bạch cho các bên.
Thanh tra (inspection)
Công tác thanh tra liên tục các hoạt động trong Scrum đảm bảo cho việc phát lộ các vấn đề cũng như giải pháp để thông tin đa dạng và hữu ích đến được với các bên tham gia dự án. Truy xét kỹ càng và liên tục là cơ chế khởi đầu cho việc thích nghi và các cải tiến liên tục trong Scrum.
Thích nghi (adaptation)
Scrum rất linh hoạt như các phương pháp Agile khác. Nhờ đó nó mang lại tính thích nghi rất cao. Dựa trên các thông tin minh bạch hóa từ các quá trình thanh tra và làm việc, Scrum có thể phản hồi lại các thay đổi một cách tích cực, nhờ đó mang lại thành công cho dự án.
Ba Vai trò trong Scrum là gì?
Trong Scrum, đội ngũ tham gia phát triển phần mềm được phân chia ra ba vai trò cùng với trách nhiệm rõ ràng để đảm bảo tối ưu hóa các công việc đặc thù như sau:
- Product Owner (chủ sản phẩm): Là người chịu trách nhiệm về sự thành công của dự án, người định nghĩa các yêu cầu và đánh giá cuối cùng đầu ra của các nhà phát triển phần mềm.
- Scrum Master: Là người có hiểu biết sâu sắc về Scrum và đảm bảo nhóm có thể làm việc hiệu quả với Scrum.
- Development Team (Đội sản xuất, hay Nhóm phát triển): Một nhóm liên chức năng (cross-functional) tự quản lý để tiến hành chuyển đổi các yêu cầu được tổ chức trong Product Backlog thành chức năng của hệ thống.
Bốn Cuộc họp (4 Events)
Scrum định nghĩa quy tắc cho bốn sự kiện chủ chốt (các cuộc họp) nhằm tạo môi trường và quy cách hoạt động và cộng tác cho các thành viên trong dự án.
Sprint là một phân đoạn lặp đi lặp lại trong quy trình phát triển phần mềm, thường có khung thời gian ngắn (từ 1 – 4 tuần).
Sprint Planning (Họp Kế hoạch Sprint)
Nhóm phát triển gặp gỡ với Product Owner để lên kế hoạch làm việc cho một Sprint. Công việc lập kế hoạch bao gồm việc chọn lựa các yêu cầu cần phải phát triển, phân tích và nhận biết các công việc phải làm kèm theo các ước lượng thời gian cần thiết để hoàn tất các tác vụ.
Scrum sử dụng cách thức lập kế hoạch từng phần và tăng dần theo thời gian, theo đó, việc lập kế hoạch không diễn ra duy nhất một lần trong vòng đời của dự án mà được lặp đi lặp lại, có sự thích nghi với các tình hình thực tiễn trong tiến trình đi đến sản phẩm.
Daily Scrum (Họp Scrum hằng ngày)
Scrum Master tổ chức cho Đội sản xuất họp hằng ngày trong khoảng 15 phút để Nhóm Phát triển chia sẻ tiến độ công việc cũng như chia sẻ các khó khăn gặp phải trong quá trình phát triển phần mềm suốt một Sprint.
Sprint Review (Họp Sơ kết Sprint)
Cuối Sprint, nhóm phát triển cùng với Product Owner sẽ rà soát lại các công việc đã hoàn tất (DONE) trong Sprint vừa qua và đề xuất các chỉnh sửa hoặc thay đổi cần thiết cho sản phẩm.
Sprint Retrospective (Họp Cải tiến Sprint)
Dưới sự trợ giúp của Scrum Master, nhóm phát triển sẽ rà soát lại toàn diện Sprint vừa kết thúc và tìm cách cải tiến quy trình làm việc cũng như bản thân sản phẩm.
Các công cụ (artifacts) Scrum là gì?
Scrum sử dụng các công cụ rất đơn giản nhưng hiệu quả để trợ giúp công việc.
Product Backlog
Đây là danh sách ưu tiên các tính năng (feature) hoặc đầu ra khác của dự án. Có thể hiểu như là danh sách yêu cầu (requirement) của dự án.
Product Owner chịu trách nhiệm sắp xếp độ ưu tiên cho từng hạng mục (Product Backlog Item) trong Product Backlog dựa trên các giá trị do Product Owner định nghĩa (thường là giá trị thương mại – business value).
Sprint backlog
Đây là bản kế hoạch cho một Sprint; là kết quả của buổi họp lập kế hoạch (Sprint Planning).
Với sự kết hợp của Product Owner, nhóm sẽ phân tích các yêu cầu theo độ ưu tiên từ cao xuống thấp để hiện thực hóa các hạng mục trong Product Backlog dưới dạng danh sách công việc (TODO list).
Burndown Chart
Đây là biểu đồ hiển thị xu hướng của dự án dựa trên lượng thời gian cần thiết còn lại để hoàn tất công việc.
Burndown Chart có thể được dùng để theo dõi tiến độ của Sprint (được gọi là Sprint Burndown Chart) hoặc của cả dự án (Project Burndown Chart).
Biểu đồ burndown không phải là một thành tố tiêu chuẩn của Scrum theo định nghĩa mới, nhưng vẫn được sử dụng rộng rãi do tính hữu ích của nó.
Lợi ích của Agile
Đối với khách hàng
Khách hàng nhận thấy rằng nhà cung cấp phản hồi nhanh hơn với các yêu cầu phát triển. Các tính năng có giá trị cao được phát triển và phân phối nhanh hơn với chu kỳ ngắn, so với chu kỳ dài hơn được các quy trình “thác nước” truyền thống được ưa chuộng.
Đối với nhà cung cấp
Các nhà cung cấp giảm lãng phí bằng cách tập trung nỗ lực phát triển vào các tính năng có giá trị cao đồng thời giảm thời gian đưa ra thị trường so với quy trình “thác nước”, từ đó giảm chi phí và tăng hiệu quả. Sự hài lòng của khách hàng được cải thiện đồng nghĩa với việc giữ chân khách hàng tốt hơn, kéo theo nhiều lượt giới thiệu khách tiềm năng hơn.
Đối với nhóm phát triển phần mềm
Các thành viên trong nhóm thích công việc phát triển và thích thấy sản phẩm của họ được sử dụng và đánh giá cao. Scrum mang lại lợi ích cho các thành viên trong Nhóm bằng cách giảm bớt công việc phi năng suất (ví dụ: viết thông số kỹ thuật hoặc các hiện vật khác mà không ai sử dụng) và cho họ nhiều thời gian hơn để làm công việc mà họ yêu thích. Các thành viên trong nhóm cũng nhận thức được rằng công việc của họ được coi trọng, bởi vì các yêu cầu được lựa chọn để tối đa hóa giá trị cho khách hàng.
Đối với người quản lý sản phẩm (Product manager)
Product manager, những người thường đảm nhiệm vai trò Product owner, chịu trách nhiệm làm cho khách hàng hài lòng bằng cách đảm bảo rằng công việc phát triển phù hợp với nhu cầu của khách hàng. Scrum làm cho việc liên kết này trở nên dễ dàng hơn bằng cách cung cấp các cơ hội để sắp xếp lại thứ tự ưu tiên công việc một cách thường xuyên, nhằm đảm bảo mang lại giá trị tối đa.
Đối với người quản lý dự án (Project manager)
Project manager (và những người khác) đảm nhiệm vai trò ScrumMaster nhận thấy rằng việc lập kế hoạch và theo dõi dễ dàng hơn và cụ thể hơn, so với các quy trình “thác nước”. Việc tập trung vào theo dõi cấp độ nhiệm vụ, sử dụng Biểu đồ Burndown để hiển thị tiến độ hàng ngày và các cuộc họp Scrum Hàng ngày, tất cả đều mang lại cho Project manager nhận thức sâu sắc về trạng thái của dự án mọi lúc. Sự nhận thức này là chìa khóa để giám sát dự án, đồng thời nắm bắt và giải quyết các vấn đề một cách nhanh chóng.
Lợi ích đối với PMO và Giám đốc điều hành
Scrum cung cấp khả năng hiển thị cao về trạng thái của một dự án phát triển, hàng ngày. Các bên liên quan bên ngoài, chẳng hạn như giám đốc điều hành và nhân sự trong Văn phòng quản lý dự án, có thể sử dụng khả năng hiển thị này để lập kế hoạch hiệu quả hơn và điều chỉnh chiến lược của họ dựa trên nhiều thông tin khó hơn và ít suy đoán hơn.
Tạm kết
Qua bài viết trên, chúng ta đã tìm hiểu một cách khái quát về phương pháp Agile Scrum cũng như những lợi ích mà chúng mang lại trong quản lý dự án. HR1Tech hy vọng rằng bài viết này sẽ hữu ích cho quý đọc giả và mong rằng sẽ được đồng hành cùng các bạn trong các blog tiếp theo.