Agile là gì?
Phương thức phát triển phần mềm Agile là một tập hợp các phương thức phát triển lặp và tăng dần trong đó các yêu cầu và giải pháp được phát triển thông qua sự liên kết cộng tác giữa các nhóm tự quản và liên chức năng,…
Agile là cách thức làm phần mềm linh hoạt để làm sao đưa sản phẩm đến tay người dùng càng nhanh càng tốt càng sớm càng tốt và được xem như là sự cải tiến (ở một khía cạnh nào đó) khi đặt cạnh những mô hình cũ như Mô hình Thác nước hay CMMI.
Để hiểu rõ hơn Agile là gì chúng ta cần xuất phát từ nền tảng của phương thức phát triển và quản lý dự án Agile, bao gồm Tuyên ngôn Agile và Tuyên ngôn Tương hỗ
Tuyên ngôn Agile
Theo tuyên ngôn Agile thì phương pháp phát triển phần mềm tốt hơn được xây dựng thông qua cách thức thực hiện tốt hơn và giúp đỡ những người khác thực hiện nó. Qua cách thức này, họ đã đánh giá cao:
- Con người và sự tương tác hơn là quy trình và công cụ;
- Phần mềm chạy tốt hơn là tài liệu đầy đủ;
- Cộng tác với khách hàng hơn là đàm phán hợp đồng;
- Phản hồi với các thay đổi hơn là bám sát kế hoạch.
Các giá trị “Con người và sự tương tác”, “Phần mềm chạy tốt hơn”, “Cộng tác với khách hàng”, và “Phản hồi với các thay đổi” chính là bốn giá trị cốt lõi của Agile. Các giá trị này được xây dựng dựa trên 12 nguyên lý:
- Ưu tiên cao nhất của chúng tôi là thỏa mãn khách hàng thông qua việc chuyển giao sớm và liên tục các phần mềm có giá trị.
- Chào đón việc thay đổi yêu cầu, thậm chí rất muộn trong quá trình phát triển. Các quy trình linh hoạt tận dụng sự thay đổi cho các lợi thế cạnh tranh của khách hàng.
- Thường xuyên chuyển giao phần mềm chạy tốt tới khách hàng, từ vài tuần đến vài tháng, ưu tiên cho các khoảng thời gian ngắn hơn.
- Nhà kinh doanh và nhà phát triển phải làm việc cùng nhau hàng ngày trong suốt dự án.
- Xây dựng các dự án xung quanh những cá nhân có động lực. Cung cấp cho họ môi trường và sự hỗ trợ cần thiết, và tin tưởng họ để hoàn thành công việc.
- Phương pháp hiệu quả nhất để truyền đạt thông tin tới nhóm phát triển và trong nội bộ nhóm phát triển là hội thoại trực tiếp.
- Phần mềm chạy tốt là thước đo chính của tiến độ.
- Các quy trình linh hoạt thúc đẩy phát triển bền vững. Các nhà tài trợ, nhà phát triển, và người dùng có thể duy trì một nhịp độ liên tục không giới hạn.
- Liên tục quan tâm đến các kĩ thuật và thiết kế tốt để gia tăng sự linh hoạt.
- Sự đơn giản – nghệ thuật tối đa hóa lượng công việc chưa xong – là căn bản.
- Các kiến trúc tốt nhất, yêu cầu tốt nhất, và thiết kế tốt nhất sẽ được làm ra bởi các nhóm tự tổ chức.
- Nhóm phát triển sẽ thường xuyên suy nghĩ về việc làm sao để trở nên hiệu quả hơn, sau đó họ sẽ điều chỉnh và thay đổi các hành vi của mình cho phù hợp.
Tuyên ngôn Tương hỗ
Trong khi Tuyên ngôn Agile giải quyết việc phát triển phần mềm thì Tuyên ngôn Tương hỗ tập trung nhiều hơn vào khía cạnh quản lý dự án. Theo Tuyên ngôn Tương hỗ, lãnh đạo dự án đã đạt được thành công trong việc chuyển giao kết quả thông qua việc họ:
- Tăng tỷ lệ hoàn vốn đầu tư bằng cách biến những luồng giá trị liên tục thành trọng tâm của mình.
- Chuyển giao những kết quả đáng tin cậy bằng cách lôi kéo khách hàng thường xuyên tương tác và chia sẻ quyền sở hữu.
- Chờ đợi các bất ổn và quản lý chúng qua các phân đoạn, dự đoán và thích ứng
- Giải phóng sức sáng tạo và đổi mới bằng cách công nhận rằng các cá nhân là nguồn gốc cao nhất của giá trị và tạo ra một môi trường nơi họ có thể làm nên sự khác biệt
- Tăng hiệu suất thông qua phân nhóm trách nhiệm đối với các kết quả và chia sẻ trách nhiệm về hiệu quả của nhóm.
- Nâng cao hiệu quả và độ tin cậy thông qua các chiến lược, qui trình và thực tiễn cụ thể trong từng tình huống.
Scrum là gì?
Thuật ngữ Scrum xuất hiện từ một bài viết trên tạp chí Harvard Business Review của Hirotaka Takeuchi và Ikujiro Nonaka năm 1986 khi mô tả một cách tiếp cận toàn diện trong việc phát triển sản phẩm mới, trong đó nhóm dự án được tạo thành từ những nhóm nhỏ liên chức năng làm việc hướng tới một mục tiêu chung. Những nhóm này được so sánh tới sự hình thành Scrum trong môn bóng bầu dục – một cơ chế để đưa “bóng chết” vào cuộc chơi (Scrum có nghĩa là chen lấn, hàm ý sự hỗn độn, liên chức năng và tự quản cao độ trong các tình huống thực tiễn).
Khái niệm Scrum tiếp tục được phát triển qua nhiều năm gắn với cá nhu cầu phát triển ứng dụng nhanh, cải tiến năng suất, xây dựng qui trình thực nghiệm liên tục yêu cầu sự thanh tra và thích nghi. Sau đó, nó được Jeff Sutherland và Ken Schwaber tóm tắt lại và tạo ra một phương pháp luận mới đặt tên là Scrum, đẩy Scrum trở thành một trong những qui trình Agile có những giá trị và nguyên lý như mô tả trong Tuyên ngôn Agile.