Agile là gì, và 4 giá trị cốt lõi

Agile thực sự là gì?

Agile nghĩa là linh hoạt, thích nghi. Nó là một bộ giá trị và nguyên tắc để định hướng cách làm phần mềm, chứ không phải một framework cố định, cũng không phải quy trình bắt mọi team phải làm y chang nhau.

Agile quan tâm mấy thứ này:

  • Tạo giá trị cho khách hàng
  • Lấy phản hồi sớm và thường xuyên
  • Thích nghi khi yêu cầu đổi
  • Con người hợp tác với nhau
  • Liên tục cải thiện cả sản phẩm lẫn cách làm việc

Phân biệt Agile, Scrum và Sprint

Hình dung theo từng tầng:

  • Agile: tư duy, giá trị, nguyên tắc (nghĩ thế nào, quyết định ra sao)
  • Scrum: một framework áp dụng tư duy đó, cho team cái khung để làm sản phẩm phức tạp
  • Sprint: chu kỳ làm việc có độ dài cố định bên trong Scrum

Dưới Agile còn nhiều nhánh khác ngoài Scrum: Kanban (quản lý luồng công việc), XP (thiên về kỹ thuật), Crystal (thiên về con người và giao tiếp)…

Lỗi phổ biến nhất là gán Agile = Scrum. Sai nha. Một team có thể làm Agile bằng Scrum, Kanban, XP, hoặc trộn vài cái lại.

Agile Manifesto: 4 giá trị cốt lõi

Manifesto là “tuyên ngôn”. Bản Manifesto for Agile Software Development ra năm 2001, gồm 4 giá trị và 12 nguyên tắc. Bài này nói 4 giá trị trước.

Giá trị 1: Individuals and interactions over processes and tools

Con người và sự tương tác quan trọng hơn quy trình và công cụ.

Không phải công cụ với quy trình không quan trọng, mà là con người nói chuyện, phối hợp với nhau còn quan trọng hơn. Ví dụ trong project web bán hàng:

Dev A: “Tao tưởng API trả productId.”
Dev B: “Ủa, tao trả id mà.”

Nếu hai ông chỉ dựa vào Jira, Git, tài liệu mà không chịu nói chuyện với nhau thì frontend với backend ghép lại là nổ liền. Agile coi trọng việc trao đổi để gỡ mấy cái hiểu nhầm kiểu này sớm.

Giá trị 2: Working software over comprehensive documentation

Phần mềm chạy được quan trọng hơn tài liệu đồ sộ.

Chỗ này đừng hiểu lầm là Agile ghét viết tài liệu. Ý là đừng chỉ mải mê làm tài liệu mà chưa ra được sản phẩm có giá trị. So sánh nè:

  • Trường hợp A: 50 trang tài liệu hoàn chỉnh, 0 chức năng chạy được
  • Trường hợp B: 10 trang tài liệu cần thiết, Login, Register, Checkout chạy thật

Agile nghiêng về B, miễn là mấy chức năng đó đáp ứng được yêu cầu và tạo ra giá trị.

Giá trị 3: Customer collaboration over contract negotiation

Hợp tác với khách hàng quan trọng hơn việc cứ bám vào thương lượng hợp đồng.

Không phải bỏ hợp đồng, mà là đừng để cái hợp đồng ban đầu lớn hơn việc làm ra sản phẩm đúng nhu cầu thật. Ví dụ: khách yêu cầu website 10 chức năng. Hai tháng sau khách thấy chức năng A không cần nữa, mà muốn thêm chức năng B. Tư duy Agile là ngồi lại với khách, xem lại độ ưu tiên và chỉnh kế hoạch cho hợp lý, chứ không phải “hợp đồng ghi vậy rồi, làm đúng vậy đi”.

Giá trị 4: Responding to change over following a plan

Thích nghi với thay đổi quan trọng hơn việc bám theo kế hoạch.

Cái này được xem là giá trị quan trọng nhất để hiểu Agile. Kế hoạch vẫn cần, nhưng khi có thông tin mới thì phải chỉnh được. Ví dụ:

  • Sprint 1: làm Product Filter
  • User phản hồi: “Filter này khó dùng quá”
  • Team xem lại và chỉnh UI
  • Sprint 2: cải thiện Filter

Câu quan trọng đi kèm 4 giá trị

Manifesto có một câu giải thích:

“While there is value in the items on the right, we value the items on the left more.”

Nghĩa là vế bên phải (quy trình, công cụ, tài liệu, hợp đồng, kế hoạch) vẫn có giá trị, chỉ là vế bên trái được ưu tiên hơn. Không phải “quy trình xấu, tài liệu xấu, kế hoạch xấu”. Mà là:

  • Quy trình và con người (con người đi trước)
  • Tài liệu và phần mềm chạy được (phần mềm đi trước)
  • Hợp đồng và hợp tác (hợp tác đi trước)
  • Kế hoạch và thích nghi (thích nghi đi trước)

Bài viết khác

Test Automation(Kiểm thử tự động)

1.Test Automation (Kiểm thử tự động) là gì? Trong các dự án phát triển phần mềm truyền thống trước đây, toàn bộ quy trình kiểm thử (Testing) đều được thực hiện thủ công (Manual Testing) bởi con người. Các kiểm thử viên trực tiếp thao tác trên giao diện, nhập dữ liệu, kiểm tra kết […]

Logging – Monitoring – CI/CD

Logging, Monitoring và CI/CD là gì? Vai trò trong phát triển Backend 1. Tổng quan Khi xây dựng một ứng dụng Backend, viết code và chạy được chương trình mới chỉ là bước đầu. Khi ứng dụng được đưa vào sử dụng, lập trình viên còn cần biết ứng dụng đang hoạt động như thế […]

Redis & Caching là gì?

Redis & Caching là gì? Hướng dẫn sử dụng Redis trong Go 1. Caching là gì? Vì sao cần cache khi đã có database? Caching (bộ nhớ đệm) là kỹ thuật lưu tạm dữ liệu thường được truy cập để có thể lấy lại nhanh chóng khi cần, thay vì phải thực hiện lại toàn […]

Background Jobs & Queues

1. Background Jobs & Queues là gì? Trong một ứng dụng backend, không phải công việc nào cũng cần hoàn thành ngay trong lúc xử lý HTTP request. Ví dụ, khi người dùng đăng ký tài khoản, hệ thống có thể cần: Lưu thông tin người dùng vào database. Gửi email xác nhận. Gửi thông […]

Saga Pattern

Saga Pattern là gì? Quản lý Transaction trong kiến trúc Microservices 1. Saga Pattern là gì? Saga Pattern là một mẫu thiết kế được sử dụng để quản lý các nghiệp vụ phân tán gồm nhiều bước xử lý, trong đó mỗi bước có thể thực hiện một local transaction tại một service hoặc Database […]

Two-Phase Locking (2PL)

Two-Phase Locking (2PL) là gì? Cơ chế khóa hai pha trong Database 1. Two-Phase Locking (2PL) là gì? Two-Phase Locking (2PL — khóa hai pha) là một giao thức quản lý khóa trong Database, quy định cách một transaction được phép lấy và giải phóng lock trong quá trình thực thi. Khi nhiều transaction cùng […]

Leave a Reply

Your email address will not be published. Required fields are marked *