Scrum có thể là một cái tên quen thuộc đối với hầu hết những bạn làm trong nghành phần mềm. Đã có vô số lời khen dành cho Scrum vì cách tiếp cận đơn giản và vô cùng hiệu quả của nó trong quy trình sản xuất phần mềm. Có thể các bạn đang làm việc với Scrum, có thể không, nhưng liệu các bạn có thực sự hiểu Scrum là gì? Và tại sao lại nên áp dụng nó trong quá trình phát triển phần mềm? Trong bài viết này tôi sẽ giới thiệu với các bạn những điều cơ bản về Scrum dưới góc nhìn của tôi.
Scrum thực ra chỉ là một trong những cách hiện thực của Agile vào quy trình phát triển phần mềm.
Vậy Agile là gì?
Agile là cách thức làm phần mềm linh hoạt sử dụng một tập hợp các phương thức phát triển lặp đi lặp lại để làm sao đưa sản phẩm đến tay người dùng càng nhanh càng tốt và ở một khía cạnh nào đó nó được xem như là sự cải tiến khi đặt cạnh những mô hình cũ như Waterfall hay CMMI.
Ngoài ra còn có một số cách hiện thực khác để sử dụng Agile trong quy trình phát triển như Kanban hay Extreme programming, có thể tôi sẽ nói về chúng trong những bài viết tới. Tất cả các cách hiện thực này đều mang trong mình những quy tắc chung về cách mà mọi người làm việc với nhau trong team như:
- Làm hài lòng khách hàng
- Bàn giao sản phẩm một cách định kì và thường xuyên
- Business team và development team làm việc cùng nhau
- Đo lường kết quả dựa trên tỉ lệ hoàn thành công việc
- Cho phép các team tự quản, không cần team leader
- Phản ánh thường xuyên về tiến độ công việc, cái gì làm, cái gì không
Scrum trong thực tế
Trong thực tế, Scrum được tối ưu hoá để team làm việc trong dự án có thể chia nhỏ thành nhiều thành phần công việc dựa trên chức năng sẽ được bàn giao trong một khoảng thời gian cố định như một hay hai tuần làm việc, còn được gọi là Sprint trong Scrum. Scrum sử dụng thuật ngữ Story
để mô tả các thành phần chức năng đó, và team sẽ phải ước tính xem mất bao nhiêu Story Point
để hoàn thành một story, Story Point
cho mỗi story được đánh giá thông qua độ phức tạp, công sức bỏ ra, và những risk có thể gặp phải trong quá trình phát triển chức năng đó.
Không giống như các cách tiếp cận phát triển phần mềm truyền thống, Scrum không cần thiết việc một mình Product Manager phải hoàn chỉnh các tài liệu về yêu cầu khách hàng hay chi tiết kĩ thuật dài loằng ngoằng, mà tất cả đều phải được toàn team thông qua.
Scrum đủ linh hoạt để một team có thể bắt đầu chỉ bằng một story đơn giản, có thể giữ cho team bận rộn vài tuần liền. Trong thời gian đó, nếu có phản hồi mới từ người dùng, sự thay đổi về thị trường, bất cứ thông tin gì mới đến từ nội bộ hay bên ngoài dự án, hay thay đổi về mặt công nghệ thì story mới sẽ được đưa ra và triển khai trong một vài tuần tiếp theo.
Scrum cũng ủng hộ việc thường xuyên giao tiếp mặt đối mặt trong team. Điều này thường được áp dụng bằng cách tổ chức daily meeting, có thể chỉ là stand up meeting trong nhóm để các thành viên có thể nói cho nhau biết về việc họ đã làm ngày hôm qua, việc họ sẽ làm trong hôm nay cũng như các vấn đề mà họ đã gặp phải hoặc sẽ gặp phải. Ngoài ra Scrum cũng khuyến cáo nên có meeting cho việc lập kế hoạch, demo, và nhìn lại quá trình làm việc (retrospective) trong mỗi sprint.
Việc thực hành daily meeting nghe thì có vẻ xa xỉ, và tốn thời gian đối với developer, tuy nhiên, nó sẽ được tinh chỉnh bởi Scrum master để phù hợp với dự án trong quá trình làm việc, thường thì daily meeting sẽ không bao giờ được quá 15 phút.
Tóm lại
Tóm lại, các bạn có thể hiểu Scrum là một cách hiện thực Agile để đưa sản phẩm đến với khách hàng càng nhanh càng tốt, với việc tối ưu hoá quá trình phát triển bằng cách chia ra thành nhiều Sprint, dự trên các Story được đưa ra bởi cả team thông qua các meeting, cũng như thực hiện daily meeting để toàn team có thể nắm tình hình làm việc chung và giải quyết các vấn đề gặp phải, tất cả mọi thứ đều được giám sát bởi Scrum master, và họ sẽ tinh chỉnh cũng như đưa ra những câu hỏi cho team để làm cho quy trình phát triển trở nên tốt hơn và phù hợp hơn với tình trạng dự án.
Hy vọng, qua bài viết nho nhỏ này các bạn đã hiểu Scrum là gì, cũng như cách áp dụng Scrum trong thực tế, nếu có bất cứ chia sẻ hay ý kiến gì, đừng ngại chia sẻ ở phần comment nhé!
Thay daily meeting thành weekly meeting thì có phải là scrum không vậy bạn?
mình nghĩ là không, vì daily meeting giúp cho mọi người trong team biết được các member khác đang làm việc tới đâu, cũng như nhìn lại mình đang làm tới đâu rồi như anh codeaholicguy nói thì nếu như có bất cứ thay đổi gì thì cũng dễ để điều chỉnh hơn
Bạn HuuTinh nói rất đúng. Tuy nhiên, theo ý kiến chủ quan của mình thì Scum hay Agile đủ linh hoạt để cho phép chúng ta adapt nó vào team của mình, nếu thực sự không có nhu cầu meeting hằng ngày thì chúng ta có thể giảm số buổi xuống, nhưng vẫn phải làm sao để đáp ứng được việc mọi người trong team có thể update nhanh chóng được nhưng thay đổi và các vấn đề xảy ra