-
Scrum là gì?
Scrum là một framework được sử dụng để tổ chức và quản lý công việc theo cách tiếp cận Agile. Scrum thường được sử dụng trong phát triển phần mềm, đặc biệt là những dự án có nhiều công việc và yêu cầu có thể thay đổi trong quá trình thực hiện.
Theo em hiểu đơn giản, Scrum giúp một nhóm chia công việc lớn thành những phần nhỏ hơn và thực hiện theo từng khoảng thời gian nhất định. Sau mỗi khoảng thời gian, nhóm sẽ kiểm tra kết quả, nhận phản hồi và xem cần cải thiện gì cho phần tiếp theo.
Ví dụ, khi làm một website bán hàng, nhóm có thể không làm tất cả chức năng cùng lúc mà chia ra thành các phần như đăng nhập, sản phẩm, tìm kiếm, giỏ hàng và thanh toán. Mỗi phần sẽ được đưa vào kế hoạch và thực hiện theo từng giai đoạn nhỏ.
Scrum thường được sử dụng cùng với tư duy Agile vì nó giúp nhóm áp dụng những nguyên tắc như làm việc theo từng phần, nhận phản hồi thường xuyên và cải tiến liên tục.
-
Scrum hoạt động như thế nào?
Điểm dễ nhận biết nhất của Scrum là công việc được thực hiện trong các khoảng thời gian cố định gọi là Sprint.
Có thể hiểu quy trình đơn giản như sau:
Product Backlog → Sprint Planning → Sprint → Daily Scrum → Sprint Review → Sprint Retrospective → Sprint tiếp theo
Đầu tiên, nhóm có một danh sách những công việc cần thực hiện cho sản phẩm. Sau đó, nhóm lựa chọn những công việc phù hợp để đưa vào Sprint.
Trong thời gian Sprint, các thành viên thực hiện công việc và thường xuyên trao đổi với nhau. Khi Sprint kết thúc, nhóm xem lại kết quả, nhận phản hồi và tìm cách cải thiện cách làm việc trong Sprint tiếp theo.
Nhờ cách làm này, nhóm không cần chờ đến khi toàn bộ dự án hoàn thành mới kiểm tra kết quả.
-
Scrum Team
Một Scrum Team gồm các vai trò chính là:
Product Owner: là người chịu trách nhiệm tối đa hóa giá trị của sản phẩm và quản lý Product Backlog. Product Owner cần hiểu nhu cầu của khách hàng hoặc người dùng, từ đó xác định những công việc nào cần ưu tiên thực hiện trước.
Ví dụ với website bán hàng, Product Owner có thể xác định rằng chức năng đăng nhập, xem sản phẩm và đặt hàng cần được ưu tiên trước những chức năng khác.
Scrum Master: giúp mọi người hiểu và thực hiện Scrum đúng cách. Scrum Master cũng hỗ trợ nhóm loại bỏ những trở ngại đang ảnh hưởng đến công việc và giúp nhóm cải thiện cách làm việc. Scrum Master không đơn giản chỉ là người giao việc cho các thành viên.
Developers: là những người trực tiếp tạo ra sản phẩm. Trong dự án phần mềm, đây có thể là lập trình viên và những người có chuyên môn liên quan đến việc tạo ra sản phẩm. Các thành viên cùng phối hợp để hoàn thành công việc đã thống nhất trong Sprint.
-
Sprint
Sprint là một khoảng thời gian cố định trong Scrum, trong đó nhóm thực hiện một số công việc đã được lựa chọn. Một Sprint có thời gian tối đa 1 tháng và được lặp lại liên tục trong quá trình phát triển sản phẩm.
Trong mỗi Sprint, nhóm cố gắng tạo ra một phần sản phẩm có thể sử dụng hoặc đánh giá được. Sau khi Sprint kết thúc, nhóm sẽ xem lại kết quả và tiếp tục lên kế hoạch cho Sprint tiếp theo.
-
Các hoạt động chính trong Scrum
Trong Scrum có một số hoạt động chính:
-
Sprint Planning: Nhóm cùng nhau xác định mục tiêu của Sprint và lựa chọn những công việc cần thực hiện.
-
Daily Scrum: Là buổi trao đổi ngắn hằng ngày để Developers kiểm tra tiến độ và điều chỉnh kế hoạch làm việc khi cần thiết.
-
Sprint Review: Được thực hiện khi Sprint kết thúc. Nhóm xem xét kết quả đã hoàn thành và nhận phản hồi từ những người liên quan.
-
Sprint Retrospective: Nhóm cùng nhìn lại quá trình làm việc trong Sprint, xem những điểm nào làm tốt, điểm nào chưa tốt và cần cải thiện gì trong Sprint tiếp theo.
-
Product Backlog và Sprint Backlog
Product Backlog là danh sách các công việc và yêu cầu cần thực hiện cho sản phẩm. Danh sách này có thể được thay đổi hoặc sắp xếp lại khi nhu cầu của sản phẩm thay đổi.
Sprint Backlog là những công việc được nhóm lựa chọn từ Product Backlog để thực hiện trong Sprint hiện tại.
Có thể hiểu đơn giản:
Product Backlog = Tất cả những việc cần làm cho sản phẩm
Sprint Backlog = Những việc được chọn để làm trong Sprint hiện tại
-
Ví dụ thực tế
Ví dụ nhóm được giao làm một website bán hàng. Product Backlog có thể gồm đăng nhập, quản lý sản phẩm, tìm kiếm, giỏ hàng và thanh toán.
Trong Sprint đầu tiên, nhóm có thể chọn làm giao diện và chức năng hiển thị sản phẩm. Sau khi hoàn thành, nhóm kiểm tra kết quả và nhận phản hồi.
Ở Sprint tiếp theo, nhóm có thể tiếp tục làm đăng nhập và giỏ hàng. Nếu trong quá trình thực hiện có yêu cầu mới hoặc phát hiện vấn đề, nhóm có thể điều chỉnh kế hoạch cho những Sprint tiếp theo.
-
Kết luận
Theo em hiểu, Scrum là một framework giúp nhóm tổ chức công việc theo từng Sprint thay vì thực hiện toàn bộ dự án cùng một lúc. Nhóm thường xuyên trao đổi, kiểm tra kết quả và nhận phản hồi để cải thiện sản phẩm cũng như cách làm việc trong quá trình phát triển.
Bài viết khác
BÀI 5: TÌM HIỂU CHUYÊN SÂU VỀ LANGUAGE SWITCHING TRONG FLUTTER
1. Language Switching là gì? Trong một ứng dụng hỗ trợ nhiều ngôn ngữ, việc có sẵn các bản dịch chưa đủ để tạo ra trải nghiệm đa ngôn ngữ hoàn chỉnh. Ứng dụng còn cần xác định ngôn ngữ nào sẽ được sử dụng và cho phép thay đổi ngôn ngữ khi cần thiết. […]
TÌM HIỂU CHUYÊN SÂU VỀ UTC & LOCAL TIME CONVERSION TRONG FLUTTER
1. UTC & Local Time Conversion là gì? Trong một ứng dụng Flutter, thời gian xuất hiện ở rất nhiều chức năng như ngày tạo tài khoản, thời gian đặt hàng, lịch sử giao dịch, lịch hẹn, thời gian gửi thông báo và thời hạn của chương trình khuyến mãi. Khi ứng dụng chỉ chạy […]
TÌM HIỂU CHUYÊN SÂU VỀ DATE / NUMBER / CURRENCY FORMATTING TRONG FLUTTER
1. Date / Number / Currency Formatting là gì? Trong một ứng dụng Flutter, dữ liệu thường được lưu trữ và xử lý dưới dạng số, ngày giờ hoặc các kiểu dữ liệu có cấu trúc. Tuy nhiên, dữ liệu dùng để tính toán không nhất thiết giống với cách dữ liệu được hiển thị […]
TÌM HIỂU CHUYÊN SÂU VỀ LOCALIZATION (l10n) TRONG FLUTTER
1. Localization (l10n) là gì? Khi một ứng dụng được sử dụng ở nhiều quốc gia, sự khác biệt không chỉ nằm ở ngôn ngữ mà còn ở cách người dùng đọc ngày tháng, số, tiền tệ, đơn vị đo lường và các thông tin trên giao diện. Ví dụ, một ứng dụng bán hàng […]
TÌM HIỂU CHUYÊN SÂU VỀ INTERNATIONALIZATION (i18n) TRONG FLUTTER
1. Internationalization (i18n) là gì? Trong quá trình phát triển ứng dụng, lập trình viên thường xây dựng giao diện bằng một ngôn ngữ ban đầu, chẳng hạn như tiếng Việt. Khi ứng dụng được sử dụng bởi người dùng ở nhiều quốc gia, việc chỉ hỗ trợ một ngôn ngữ có thể khiến người […]
TÌM HIỂU CHUYÊN SÂU VỀ APP RELEASE & DEPLOYMENT TRONG FLUTTER
1. App Release & Deployment là gì? Trong quá trình phát triển ứng dụng Flutter, sau khi hoàn thành các chức năng, lập trình viên cần đưa ứng dụng đến người dùng thực tế. Ví dụ, một nhóm đã xây dựng xong ứng dụng bán hàng với những chức năng như đăng nhập, xem sản […]