Agile là gì?
Agile thực chất là một triết lý hay một khung tư duy để nhanh chóng thích ứng và phản hồi với thay đổi, từ đó đạt được thành công trong một môi trường liên tục biến động và không chắc chắn.
Triết lý Agile xuất phát từ ngành công nghệ, và được mô tả bằng 4 giá trị và 12 nguyên lý cốt lõi trong Tuyên ngôn phát triển phần mềm linh hoạt hay Tuyên ngôn Agile (The Manifesto for Agile Software Development) mà chúng ta sẽ tìm hiểu phía sau.
Triết lí Agile cho đến ngày nay không chỉ đã làm thay đổi diện mạo nền công nghệ thế giới nói riêng mà đang lan tỏa mạnh mẽ và thể hiện giá trị trong rất nhiều lĩnh vực như: Quản lý dự án (với Agile Project Management), nhân sự (với Agile HR và Agile People), marketing (với Agile Marketing), hay quản trị và lãnh đạo (với Agile Management, Agile Leadership)…
Agile Software Development là gì?
Agile Software Development là một thuật ngữ chung chỉ tất cả các kỹ thuật và phương pháp phát triển phần mềm theo triết lý Agile.
Triết lý Agile được mô tả sơ bộ trong bản Tuyên ngôn Agile (The Manifesto for Agile Software Development) thông qua những giá trị cốt lõi và nguyên tắc có tính phổ quát, tuy nhiên không ghi rõ thực hiện những giá trị và nguyên tắc ấy như thế nào. Vì vậy các phương pháp Agile sẽ làm nhiệm vụ định nghĩa rõ hơn để các cá nhân và tập thể dễ dàng vận dụng vào bối cảnh công việc của mình. Các phương pháp này đều khuyến khích việc lập kế hoạch thích ứng, phát triển tăng dần, chuyển giao sớm và cải tiến liên tục nhằm thích ứng nhanh với sự thay đổi – một điểm yếu cố hữu của các phương pháp phát triển phần mềm truyền thống (waterfall).
Tuyên ngôn Agile (Agile Manifesto)
Chúng tôi đã phát hiện ra cách phát triển phần mềm tốt hơn bằng cách thực hiện nó và giúp đỡ người khác thực hiện. Qua công việc này, chúng tôi đã đi đến việc đánh giá cao:
- Individuals and interactions over processes and tools: Cá nhân và sự tương tác hơn là quy trình và công cụ
- Working software over comprehensive documentation: Phần mềm chạy tốt hơn là tài liệu đầy đủ
- Customer collaboration over contract negotiation: Cộng tác với khách hàng hơn là đàm phán hợp đồng
- Responding to change over following a plan: Phản hồi với sự thay đổi hơn là bám theo kế hoạch
Mặc dù các điều bên phải vẫn còn giá trị, nhưng chúng tôi đánh giá cao hơn các mục ở bên trái.
Mười hai nguyên tắc phía sau tuyên ngôn Agile
Bên cạnh đó, các nhà phát triển còn nhấn mạnh mười hai nguyên lý phía sau Tuyên ngôn Agile để giúp các nhà phát triển có được gợi ý trong thực hành và vận dụng các phương pháp Agile trong thực tiễn. Các nguyên lý được liệt kê sau đây:
- Ư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 trong 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 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.
Các phương pháp Agile
Chúng ta cùng điểm qua về một số phương pháp Agile (gọi chung với phạm vi rộng hơn để chỉ cả phương pháp, khung quản trị, kỹ thuật thực hành) phổ biến nhất trong số này:
- Scrum: theo Tài liệu Hướng dẫn Scrum (The Scrum Guide) được 2 nhà đồng sáng lập Ken Schwaber and Jeff Sutherland định nghĩa, là một khung làm việc (framework) để phát triển bền vững các sản phẩm phức tạp. Có thể nói Scrum là một trong những phương pháp Agile quan trọng nhất sử dụng cơ chế lặp (iterative) và tăng trưởng (Incremental) để tối ưu hóa hiệu quả cũng như kiểm soát rủi ro.
- Kanban: là một phương pháp Agile dựa trên Phương thức Sản xuất Toyota với bốn nguyên lý: Trực quan hóa công việc, giới hạn công việc đang làm, tập trung vào luồng làm việc, cải tiến liên tục. Mô hình Kanban phù hợp cho việc hỗ trợ sản xuất trong quá trình làm việc.
- Scrumban: là một phương pháp được Corey Ladas giới thiệu vào năm 2009 trong cuốn sách với tựa đề “Scrumban – Essays on Kanban Systems for Lean Software Development”. Scrumban kết hợp được những ưu điểm của Scrum và Kanban để cho phép nhóm liên tục cải tiến quy trình và khả năng xử lý công việc.
- Lean Software Development (LSD): hay Phát triển phần mềm tinh gọn là hình thức áp dụng Tư duy tinh gọn (Lean Thinking) và các nguyên lý đặc trưng của Tinh gọn (xuất phát từ ngành sản xuất ô tô – Lean Manufacturing) cho lĩnh vực phát triển phần mềm. Thuật ngữ Lean Software Development có nguồn gốc từ một cuốn sách cùng tên của Mary Poppendieck và Tom Poppendieck. Trong đó, bảy nguyên lý diễn giải tư duy Tinh gọn bao gồm: Loại bỏ lãng phí, Khuếch trương việc học, Quyết định càng muộn càng tốt, Chuyển giao càng nhanh càng tốt, Trao quyền cho nhóm, Tạo ra tính toàn vẹn tự thân, Thấy toàn cảnh là linh hồn cho quá trình phát triển phần mềm tinh gọn.
- XP (Extreme Programming) – Hay lập trình cực hạn là một phương pháp phát triển phần mềm thuộc họ Agile được phát minh bởi Ken Beck – một kỹ sư phần mềm người Mỹ. XP hướng đến việc nâng cao chất lượng phần mềm và khả năng đáp ứng với thay đổi yêu cầu người dùng. XP chủ trương đưa ra các bản phát hành thường xuyên thông qua các chu trình phát triển ngắn. Một số các thực hành của XP như: Lập trình cặp (Pair programming), Tái cấu trúc mã nguồn (Refactoring), Kiểm thử đơn vị (Unit Testing), Tích hợp liên tục (Continuous Integration), Các bản phát hành nhỏ (Small Release)….
Có thể nhận thấy, trong số các phương pháp Agile, Scrum thuộc loại phổ biến nhất bởi sự hiệu quả và tối ưu của nó. Theo khảo sát ở trên, Scrum và các phương pháp lai với Scrum như Scrumban, Scrum và XP chiếm gần ¾ mức độ phổ biến. Đó là lí do rất nhiều nhóm bắt đầu quá trình tiếp nhận Agile với việc sử dụng Scrum.
Tại sao chúng ta nên chuyển đổi sang Agile?
- Linh hoạt hơn: Trong một thế giới đầy biến động và bất định như hiện nay, việc đòi hỏi ở mỗi cá nhân hay các nhóm một phương pháp linh hoạt là điều cần thiết. Nếu hiểu được các triết ký của Agile, chắc chắn nó sẽ giúp linh hoạt hơn với mọi thay đổi. Từ triết lý Agile, ta có thể học được rất nhiều các kiến thức về sự linh hoạt như Lean Startup, Scrum, Kanban,… Như vậy, mọi phương pháp trong Agile đều giúp chúng ta tiếp nhận sự thay đổi một cách nhẹ nhàng và tích cực, để từ đó chúng ta linh hoạt hơn.
- Sáng tạo hơn: Dựa vào đặc tính linh hoạt mà Agile luôn thôi thúc các cá nhân và nhóm làm việc chủ động hơn, để từ đó sáng tạo và không ngại vượt qua những “vòng an toàn” của chính mình.
- Năng suất cao hơn: Bài toán về năng suất luôn là một bài toán khó. Khi tìm hiểu về Agile, bạn sẽ được tiếp cận với các tư duy rất mới như vòng lặp, lập kế hoạch ngắn hạn, điều phối nhóm Scrum, giải quyết vấn đề để giảm rủi ro, tiết kiệm nguồn lực, làm việc ít hơn, hiệu quả cao hơn.
- Agile đã phổ biến trên thế giới: Học viện Agile luôn có một mong muốn hay trăn trở làm sao để Agile phổ biến hơn tại Việt Nam, để nâng cao năng lực của nguồn nhân lực nước nhà cũng như đổi mới các doanh nghiệp để đạt hiệu quả cao hơn. Sở dĩ chúng tôi có mong muốn đó bởi hiện nay trên thế giới Agile đã rất phát triển và phổ biến, Agile đã giúp cho hàng triệu doanh nghiệp đạt được sự linh hoạt, mà phải kể tới các công ty đã áp dụng Agile trên thế giới như Facbook, Microsoft, Apple, Amazon,… Vậy thì Việt Nam của chúng ta, chắc chắn sẽ cần chuyển đổi sang Agile nhanh hơn, sớm hơn nữa.