NGUỒN GỐC CỦA AGILE 

Trước 2001 dân phần mềm đã loay hoay thế nào

Trước năm 2001, mấy dự án phần mềm kiểu truyền thống toàn dính đủ thứ rắc rối: trễ deadline, vượt ngân sách, làm xong khách bảo “ủa không phải cái này”. Nên nhiều người tự mày mò ra cách làm khác, và có mấy cái tên nổi bật:

  • Extreme Programming (XP): lập trình cực hạn. Tập trung vào phản hồi nhanh, viết test, lập trình cặp (2 người ngồi code chung) và giữ chất lượng kỹ thuật.
  • Scrum: framework làm sản phẩm theo từng chu kỳ ngắn.
  • Crystal: nhóm phương pháp coi trọng con người và giao tiếp.
  • DSDM (Dynamic Systems Development Method): phương pháp phát triển hệ thống linh hoạt.
  • FDD (Feature-Driven Development): làm phần mềm dựa trên từng chức năng cụ thể.

Mấy cái này đều là đúc kết từ kinh nghiệm thực tế của dân làm phần mềm qua nhiều năm. Và sau này, nhiều người trong số họ gặp nhau ở Snowbird để viết ra Agile Manifesto.

Snowbird, cuộc gặp lịch sử

  • Thời gian: 11–13/02/2001
  • Địa điểm: The Lodge at Snowbird, bang Utah, Hoa Kỳ
  • Số người: 17 người

17 người này đến từ đủ các phe: XP, Scrum, DSDM, Crystal, Adaptive Software Development, FDD. Danh sách (theo trang chính thức của Agile Manifesto):

Kent Beck, Mike Beedle, Arie van Bennekum, Alistair Cockburn, Ward Cunningham, Martin Fowler, James Grenning, Jim Highsmith, Andrew Hunt, Ron Jeffries, Jon Kern, Brian Marick, Robert C. Martin, Steve Mellor, Ken Schwaber, Jeff Sutherland, Dave Thomas.

Vậy Scrum có đẻ ra ở Snowbird không?

Không Chỗ này nhiều người hay nhầm.

Scrum có từ trước đó rồi. Ken Schwaber với Jeff Sutherland đã trình bày Scrum công khai ở hội nghị OOPSLA năm 1995, và gốc gác của nó còn từ đầu thập niên 1990. Nên phải hiểu thế này:

  • Scrum là một trong những phương pháp có trước Agile Manifesto.
  • Agile Manifesto ra đời năm 2001, từ cuộc gặp của những người theo nhiều trường phái khác nhau.
  • Agile không sinh ra Scrum. Ngược lại, Scrum là một trong những thứ góp phần tạo nên phong trào Agile.

Timeline cho dễ nhớ

  • 1960s: Software Crisis. Làm phần mềm lớn khó quá, ai cũng than.
  • 1970: Winston W. Royce công bố bài nghiên cứu về quản lý phát triển hệ thống phần mềm lớn.
  • 1980s–1990s: Nhiều cách làm mới liên tục xuất hiện để khắc phục điểm yếu của quy trình cũ.
  • 1990s: Scrum, XP, Crystal… lần lượt ra đời.
  • 1995: Schwaber và Sutherland giới thiệu Scrum tại OOPSLA.
  • 2001: 17 chuyên gia họp ở Snowbird, công bố Agile Manifesto.

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 […]