1. Scrum là gì?
Scrum là một framework giúp mọi người giải quyết các vấn đề thích nghi phức tạp, đồng thời giúp mang lại giá trị cao nhất có thể cho một sản phẩm theo cách hiệu quả và sáng tạo.
Scrum không phải là một quy trình, kỹ thuật hay một phương pháp. Scrum là một framework mà trong đó chúng ta có thể sử dụng các quy trình và kỹ thuật khác nhau. Scrum làm rõ hiệu quả tương đối của quản lý sản phẩm và kỹ thuật làm việc của bạn để bạn có thể liên tục cải tiến sản phẩm, nhóm và môi trường làm việc.Trong Scrum, công việc được thực hiện bởi Nhóm Scrum thông qua từng phân đoạn lặp liên tiếp nhau được gọi là Sprint.
2. Tính chất của Scrum
Bằng việc sử dụng phương pháp lặp đi lặp lại và tăng dần, Scrum giúp tối ưu hóa khả năng dự đoán và kiểm soát rủi ro. Scrum có 3 tính chất rõ ràng: tính minh bạch, tính kiểm tra và tính thích ứng. Đó chính là 3 trụ cột giúp kiểm soát quá trình thực hiện.
Tính minh bạch (transparency): Các khía cạnh quan trọng của quy trình được xác định bởi một quy chuẩn chung và phải được hiển thị minh bạch, rõ ràng cho những người chịu trách nhiệm về kết quả. 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... 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.
Tính kiểm tra (inspection): Để phát hiện những sai sót không mong muốn, việc kiểm tra thường xuyên là vô cùng quan trọng. Tần suất thanh tra không nên quá dày để khỏi ảnh hưởng đến công việc. Công tác thanh tra có ích nhất khi được thực hiện bởi người có kĩ năng tại các điểm quan trọng của công việc. 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.
Tính thích ứng (adaptation): Sau khi kiểm tra, nếu một hoặc nhiều khía cạnh được xác định là sai, đi chệch hướng so với mục tiêu của sprint và có thể sản phẩm không được chấp nhận thì các khía cạnh cần được thay đổi càng sớm càng tốt. 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.
3. Vì sao nên dùng Scrum?
- Sản phẩm của mỗi dự án phần mềm không giống nhau nên việc áp dụng để phát triển hàng loạt là rất khó khăn. Do vậy, nếu để có một quy trình chi tiết áp dụng được để phát triển cho tất cả các sản phẩm thì đó là một tác phẩm đồ sộ và tốn kém. Giả sử có một quy trình như vậy thì việc nhớ để áp dụng nó một cách hiệu quả cũng là một thách thức lớn.
- Phần mềm là một sản phẩm phức tạp nên ngay từ đầu khách hàng khó có thể hình dung đầy đủ các yêu cầu đặt ra cho sản phẩm mà phải qua quá trình phát triển những chi tiết ấy mới hình thành nên việc ứng phó tốt với những thay đổi yêu cầu sẽ giúp giảm bớt rủi ro. Scrum đáp ứng rất tốt cho vấn đề này.
- Như chúng ta đã nói ở trên quá trình phát triển phần mềm khá phức tạp và có nhiều khác nhau giữa các sản phẩm nên nếu không trực tiếp tham gia sản xuất sẽ rất khó hiểu hoặc hiểu không đúng. Do vậy, hãy để cho Team phát triển quyết định giải pháp cho sản phẩm và khách hàng quan tâm đến chức năng của sản phẩm để đáp ứng nhu cầu của họ là tốt nhất.
- Khách hàng nên tham gia vào quá trình phát triển phần mềm để đảm bảo sản phẩm đầu ra đáp ứng nhu cầu phát triển của mình.
- Một số tổ chức trên scrumalliance.org thống kê rằng trước khi áp dụng SCRUM tỷ lệ thành công của các dự án lớn chỉ 40% nhưng sau khi áp dụng SCRUM tỷ lệ này đã tăng lên 80%.
4. Các nhân tố quan trọng trong Scrum
Một cách đơn giản có 03 thành tố quan trọng cấu thành nên SCRUM: Tổ chức (Organization), Quy trình (Process), Tài liệu (Document). Trong mỗi thành tố có 03 thành tố con. Như vậy, chúng ta chỉ cần hiểu và áp dụng được 9 thành tố này là có thể áp dụng SCRUM.
- Tổ chức (Organization): Tổ chức nhóm dự án và Roles (Vai trò)
Product Owner (Người sở hữu sản phẩm)
ScrumMaster (Người điều phối )
Development Team (Nhóm phát triển)
- Tài liệu (Document): các kết quả đầu ra
Product Backlog (Danh sách các chức năng cần phát triển của sản phẩm)
Sprint Backlog (Danh sách các chức năng cần phát triển cho mỗi giai đoạn)
Estimation (Kết quả ước lượng của Team)
- Quy trình(Process): Quy định cách thức vận hành của SCRUM
Sprint Planning meeting (Họp để hoạch định cho mỗi giai đoạn)
Sprint Review (Họp để tổng kết cho mỗi giai đoạn)
Daily Scrum Meeting (Họp review hàng ngày)
4.1 Tổ chức của dự án(Organization)
Product Owner: Là người chịu trách nhiệm về sự thành công của sản phẩm đang được phát triển. Product Owner có thể là người trực tiếp sở hữu sản phẩm hoặc có thể là đại diện cho các bên liên quan khác nhưng luôn luôn là người chịu trách nhiệm và có tiếng nói cuối cùng về mọi quyết định liên quan đến sản phẩm. Công việc chủ yếu của Product Owner là tối ưu hóa giá trị của sản phẩm thông qua việc quản lý thật tốt Product Backlog.
Scrum Master: Là người đảm bảo Nhóm Scrum hoạt động năng suất nhất thông qua việc áp dụng tốt Scrum. Để đạt được điều này thì Scrum Master có thể sử dụng một số kỹ thuật như dạy, huấn luyện để nhóm am hiểu về triết lý cũng như áp dụng tốt các kỹ thuật thực tế sử dụng trong Scrum. Scrum Master cũng có nhiệm vụ loại bỏ tất cả các trở ngại mà nhóm gặp phải, bảo vệ nhóm trước tất cả những nguyên nhân gây ảnh hưởng tới công việc của nhóm.
Development Team: Là tập hợp của từ 3 đến 9 thành viên chịu trách nhiệm trực tiếp tham gia sản xuất. Hai tính chất quan trọng nhất của nhóm phát triển đó là tự tổ chức (self-organizing) và liên chức năng (cross-functional).
Tự tổ chức tức là các thành viên tự sắp xếp công việc, tự đưa ra các quyết định để đạt được mục đích của nhóm mà không bị sự quản lý, điều khiển từ bất cứ ai bên ngoài nhóm, kể cả các lãnh đạo.
Liên chức năng có nghĩa là nhóm có đầy đủ tất cả các kỹ năng cần thiết để có thể độc lập hoàn thành tất cả các công việc mà không cần chờ đợi ai khác từ bên ngoài. Nhóm liên-chức năng tức là nhóm có đầy đủ các kỹ năng chứ không phải là mỗi thành viên đều phải có hết tất cả các kỹ năng.
4.2 Tài liệu (Document)
Product Backlog: Là danh sách các hạng mục cần phát triển của sản phẩm. Danh sách này được sắp xếp theo độ ưu tiên do Product Owner quyết định. Product Owner là người chịu trách nhiệm quản lý Product Backlog, kể cả nội dung, đánh giá độ ưu tiên cho đến việc cập nhật. Các hạng mục trong Product Backlog có thể là các tính năng mong muốn của sản phẩm, hoặc các cải tiến kỹ thuật lớn, hoặc các lỗi kỹ thuật đã được phát hiện…
Sprint Backlog: Là danh sách chứa các hạng mục Product Backlog được lựa chọn cho Sprint hiện tại và các công việc cần thực hiện để hoàn thành các hạng mục đó. Sprint Backlog có thể chứa thêm thông tin về các ước tính khối lượng công việc của từng hạng mục và của cả Sprint. Sprint Backlog được quản lý bởi Nhóm Phát triển.
Estimation (ước lượng): Trong SCRUM thì các thành viên của Team sẽ tự lựa chọn Task cho mình và ước lượng thời gian phát triển dự kiến và chịu trách nhiệm với ước lượng này. Sau khi hoàn thành sẽ cập nhật vào bảng Sprint Backlog.
4.3 Quy trình(Process)
Toàn bộ quy trình hoạt động của Scrum được mô tả trong hình dưới đây.
Mỗi sự kiện trong scrum là cơ hội chính thức để thực hiện việc kiểm tra và điều chỉnh lại. Các sự kiện này được thiết kế một cách đặc biệt nhằm đảm bảo sự thanh tra và tính minh bạch. Nếu không diễn ra các sự kiện này, không chỉ tính minh bạch sẽ bị giảm mà còn mất đi cơ hội để thanh kiểm tra và điều chỉnh.
Sprint: Là khoảng thời gian cố định mà ở đó Nhóm Phát triển thực hiện công việc phát triển sản phẩm. Sprint được đóng khung thời gian ngắn hơn 1 tháng và thường thì không ngắn hơn một tuần. Các Sprint có độ dài như nhau và diễn ra liên tiếp nhau mà không bị gián đoạn. Sprint kết thúc khi thời gian đóng khung kết thúc, bất kể các công việc trong đó đã được hoàn thành hết hay chưa. Một sprint chứa các cuộc họp: Sprint Planning Meeting (Họp Lập kế hoạch sprint), Daily Scrum Meeting (Họp hàng ngày), Sprint Review Meeting (Họp sơ kết sprint) và Sprint Retrospective Meeting (Họp cải tiến Sprint).
Sprint Planning meeting (Họp lập kế hoạch Sprint): Sự kiện diễn ra đầu Sprint để lên kế hoạch làm việc cho toàn bộ Sprint. Sự kiện này được chia làm 2 phần với 2 mục đích rõ ràng: Phần 1 nhằm trả lời câu hỏi “Mình sẽ làm cái gì?“, còn Phần 2 nhằm trả lời câu hỏi “Mình sẽ làm như thế nào?“. Toàn bộ Nhóm Scrum (bao gồm Product Owner, Scrum Master và Nhóm Phát triển) phải tham dự Phần 1 của buổi Lập kế hoạch Sprint. Product Owner có thể vắng mặt ở Phần 2 nhưng phải đảm bảo sẵn sàng (có thể là qua điện thoại, công cụ chát,…) để giải đáp các thắc mắc của Nhóm Phát triển nếu có. Nhóm Phát triển có quyền quyết định lựa chọn những hạng mục mà mình sẽ làm, không ai được phép can thiệp và gán công việc cho nhóm, kể cả Product Owner hay các lãnh đạo khác. Kết quả của buổi Lập kế hoạch Sprint là: Mục tiêu Sprint và Sprint Backlog.
Daily Scrum Meeting (Họp hàng ngày): Là buổi gặp mặt ngắn 15 phút hằng ngày của tất cả các thành viên Nhóm Phát triển để cập nhật thông tin và phối hợp giữa các thành viên trong nhóm. Để giữ đơn giản và tạo thói quen thì các buổi Scrum Hằng ngày phải diễn ra tại cùng một địa điểm vào cùng một khung thời gian. Tại phiên làm việc này, mỗi thành viên sẽ trình bày câu trả lời cho 3 câu hỏi:
“Hôm qua bạn làm được gì?“,
“Bạn có gặp phải khó khăn gì không?“
“Hôm nay bạn sẽ làm gì?“,
Scrum Master không bắt buộc tham dự nhưng phải đảm bảo Nhóm phát triển đang thực hiện tốt sự kiện này.
Sprint Review Meeting (Họp Sơ kết Sprint): Diễn ra khi một Sprint kết thúc nhằm thanh tra và thích nghi sản phẩm. Toàn bộ Nhóm Scrum (bao gồm Product Owner, Scrum Master và Nhóm Phát triển) tham dự sự kiện này. Product Owner có thể mời thêm những người khác cùng tham gia. Hai nội dung quan trọng của sự kiện này là: Dùng thử phần sản phẩm vừa hoàn thành trong Sprint vừa qua và trao đổi với tất cả mọi người để có những điều chỉnh hợp lý cho sản phẩm. Product Backlog và Kế hoạch Phát hành có thể được điều chỉnh sau sự kiện này.
Sprint Retrospective Meeting (Họp cải tiến Sprint): Diễn ra sau sự kiện Sơ kết Sprint nhằm thanh tra và thích nghi quy trình làm việc. Nói ngắn gọn, sự kiện này là để cải tiến cách làm việc. Nhóm Phát triển và Scrum Master bắt buộc tham gia sự kiện này. Product Owner có thể tham gia hoặc không. Nhóm Phát triển có thể mời thêm những người khác tham dự. Kết quả của buổi làm việc này là một danh sách các thay đổi về cách làm việc được đưa vào áp dụng ngay trong Sprint tiếp theo.
5. Ưu nhược điểm của Scrum
ƯU ĐIỂM:
Một người có thể làm nhiều việc ví dụ như dev có thể test
Phát hiện lỗi sớm hơn rất nhiều so với các phương pháp truyền thống
Khách hàng nhanh chóng thấy được sản phẩm qua đó đưa ra phản hồi sớm.
Có khả năng áp dụng được cho những dự án mà yêu cầu khách hàng không rõ ràng ngay từ đầu.
Đội sản xuất sẽ thường xuyên suy nghĩ về việc làm sao để trở nên hiệu quả hơn. Sau đó điều chỉnh và thay đổi để phù hợp
NHƯỢC ĐIỂM:
Trình độ của nhóm là có một kỹ năng nhất định
Phải có sự hiểu biết về mô hình Agile .
Khó khăn trong việc xác định ngân sách và thời gian.
Luôn nghe ý kiến phản hồi từ khách hàng và thay đổi theo nên thời gian sẽ kéo dài khi có quá nhiều yêu cầu thay đổi từ khách hàng.
Vai trò của PO rất quan trọng, PO là người định hướng sản phẩm. Nếu PO làm không tốt sẽ ảnh hưởng đến kết quả chung
6. Trọng tâm và giá trị của Scrum
Trọng tâm của Scrum
Scrum có những trọng tâm, nguyên tắc mà khi sử dụng không được phép phá vỡ nó, đó là những nguyên tắc sau:
Timeboxing: không được vi phạm thời gian. Tất cả sự kiện đều quy định khung thời gian rõ ràng, tức là đã quy định khoảng thời gian tối đa cho mỗi sự kiện. Khi một sprint bắt đầu, khoảng thời gian của nó đã được cố định sẵn, không thể rút ngắn lại hoặc kéo dài hơn. Các sự kiện còn lại có thể kết thúc bất cứ khi nào đạt được mục đích của sự kiện, đảm bảo sử dụng một lượng thời gian thích hợp mà không lãng phí.
Learning from mistake and self managing: Học hỏi rút kinh nghiệm qua mỗi sprint. Việc rút gọn thời gian hoàn thiện sản phẩm theo các sprint giúp cho đội phát triển dễ dàng phát hiện các lỗi trong quá trình phát triển hơn từ đó có thể rút kinh nghiệm và học họi kịp thời sau mỗi sprint mà không phải đợi đến lúc sản phẩm được hoàn thành.
Shippable code: Sản phẩm phải chạy được là trọng tâm của dự án. Các yêu cầu phải được làm và hoàn thiện gọn gàng hoàn chỉnh và sản phẩm được đóng gói nhiều lần theo từng giai đoạn để sử dụng thử và cải tiến.
Enough to start: Vừa đủ để thực hiện, các hoạt động của scrum được diễn ra khi thông tin vừa đủ để bắt đầu không chờ đến khi mọi thứ được rõ ràng.
Definitio of "Done": Định nghĩa của "Hoàn thành" khi một mục Product Backlog hoặc Increment được mô tả là "Hoàn thành", mọi người phải hiểu "Hoàn thành" nghĩa là gì. Mặc dù điều này có thể thay đổi đáng kể cho mỗi Nhóm Scrum, các thành viên phải có sự hiểu biết chung về ý nghĩa của công việc để hoàn thành, để đảm bảo tính minh bạch. Đây là định nghĩa về "Hoàn Thành" cho Nhóm Scrum và được sử dụng để đánh giá khi công việc hoàn thành trên sự tăng trưởng của sản phẩm.
Giá trị của Scrum
Để hoàn thành dự án một cách nhanh chóng và thành công nhất, chúng ta phải tôn tọng các giá trị sau của Scrum:
Commitment: tính cam kết cao trong công việc.
Focus: tập trung vào đúng mục tiêu, chiến lược trong một thời điểm nhất định.
Openness: mọi thông tin đều minh bạch đối với cả trong và ngoài dự án.
Respect: giá trị gắn kết giữa các thành viên dự án với nhau, với khách hàng cũng như trong tổ chức.
Courage: giá trị của sự can đảm, lãnh nhận và cam kết công việc, can đảm công khai minh bạch mọi thông tin.
Kết Luận
Scrum như một ngôi nhà, với trụ cột là chủ nghĩa kinh nghiệm, và những giá trị của Scrum sẽ tồn tại trong ngôi nhà đó. Ngôi nhà đó sẽ tạo ra một vùng an toàn vừa đủ giúp cho Scrum team có thể tự quản công việc của mình, và mỗi ngày sẽ một làm tốt hơn. Với cách tiếp cận đó Scrum Team có thể từng bước, thử nghiệm để khám phá rằng điều gì là nên làm, và khi nào là thời điểm thích hợp để làm. Với Scrum chúng ta học cách làm việc thông minh hơn thay vì làm rất nhiều nhưng rơi vào sự hỗn loạn và lãng phí. Scrum là nghệ thuật của việc ra quyết định - Làm ít hơn (Nghĩ nhiều hơn) nhưng tốt hơn.
Comments