Tổng quan về Agile?
Agile (quy trình phát triển phần mềm linh hoạt) là một phương pháp phát triển phần mềm dựa trên sự hợp tác, linh hoạt, phản hồi nhanh với thay đổi và phát triển theo từng giai đoạn nhỏ (iteration). Thay vì xây dựng toàn bộ sản phẩm rồi mới kiểm thử và bàn giao, Agile chia nhỏ quy trình thành các phần nhỏ, kiểm tra liên tục và điều chỉnh kịp thời.
Lịch sử ra đời
Trước khi có sự xuất hiện của Agile, mô hình waterfall được xem như tiêu chuẩn vàng để phát triển phần mềm. Thông thường, quy trình sẽ bắt đầu bằng việc một nhà phân tích kinh doanh viết tài liệu yêu cầu nghiệp vụ, mô tả những yêu cầu mà họ cần từ phần mềm. Những tài liệu này thường rất dài và chi tiết, chứa đựng tất cả mọi thông tin từ chiến lược tổng thể đến các thông số kỹ thuật. Sau khi tất cả các tài liệu hoàn tất, các nhà phát triển mới bắt đầu code phần mềm, hoàn thiện nó và test. Tất cả quy trình này có thể mất đến một vài năm để kết thúc và để phần mềm được đưa vào sử dụng.
Việc phát triển các phần mềm bắt đầu thay đổi với sự phát triển của mạng Internet. Đây cũng là lúc mà hiệu quả của phương pháp Waterfall bị đặt một dấu chấm hỏi. Nó làm tiêu tốn quá nhiều thời gian và công sức của nhóm thực hiện, trong khi lại thiếu đi tính khả thi khi nó chỉ hoàn toàn được xây dựng từ các nghiên cứu mà thiếu sự phản hồi thực tế từ người dùng.
Vào năm 2001, một nhóm gồm 17 nhà phát triển phần mềm kinh nghiệm, bao gồm Kent Beck, Martin Fowler, Ron Jeffries, Ken Schwaber và Jeff Sutherland, đã cùng nhau nghiên cứu và xuất bản Tuyên ngôn Agile với 4 giá trị quan trọng và 12 nguyên tắc hướng dẫn cách tiếp cận lặp đi lặp lại và tập trung vào con người để phát triển phần mềm. Tuyên ngôn Agile được xem như là niềm tin của họ vào cách vận hành hoàn hảo mà quá trình phát triển phần mềm hiện đại nên có.
Nội dung của tuyên ngôn Agile
Nội dung của tuyên ngôn Agile: “Chúng tôi tìm kiếm những phương pháp tốt hơn để phát triển phần mềm qua việc phát triển và giúp người khác phát triển phần mềm. Qua những hoạt động đó, chúng tôi sẽ trân trọng: cá nhân và sự tương tác hơn là quy trình và công cụ; phần mềm hoạt động được hơn là việc thu thập tư liệu phát triển; hợp tác với khách hàng hơn là thương thuyết về hợp đồng; phản ứng theo thay đổi hơn là theo sát kế hoạch. Nghĩa là, mặc dù có những giá trị cố hữu ở ‘cánh hữu (truyền thống)’, nhưng chúng tôi trân trọng các giá trị của ‘cánh tả (của đổi mới)’ nhiều hơn”.
Trong đó:
- Cá nhân và sự tương tác > Quy trình và công cụ: Agile ưu tiên con người, giao tiếp, làm việc nhóm, không phải chỉ tuân thủ máy móc theo công cụ hay quy trình.
- Phần mềm chạy được > Tài liệu đầy đủ: Mục tiêu là tạo ra phần mềm có thể sử dụng được, không chỉ là tạo ra thật nhiều tài liệu.
- Hợp tác với khách hàng > Đàm phán hợp đồng: Agile khuyến khích khách hàng tham gia xuyên suốt quá trình phát triển, thay vì chỉ ký hợp đồng rồi giao hết cho nhóm phát triển.
- Phản ứng với thay đổi > Tuân thủ kế hoạch: Kế hoạch là cần thiết, nhưng thay đổi là không thể tránh khỏi – Agile sẵn sàng thích nghi với thay đổi.
Tuyên ngôn Agile nhấn mạnh rằng việc phát triển phần mềm nên linh hoạt, con người là trung tâm, và giá trị nằm ở quá trình làm việc hiệu quả hàng ngày, chứ không phải chạy theo những quy trình cứng nhắc hay tài liệu hình thức.
12 nguyên tắc của Agile
- Ưu tiên cao nhất là làm hài lòng khách hàng thông qua việc cung cấp phần mềm có giá trị sớm và liên tục.
- Hoan nghênh sự thay đổi yêu cầu: Ngay cả ở giai đoạn muộn trong quá trình phát triển. Agile khai thác sự thay đổi để mang lại lợi thế cạnh tranh cho khách hàng.
- Cung cấp phần mềm hoạt động thường xuyên, từ vài tuần đến vài tháng, càng ngắn càng được ưu tiên.
- Sự hợp tác chặt chẽ hàng ngày giữa các bên liên quan và nhóm phát triển.
- Xây dựng dự án xung quanh những cá nhân có động lực. Cung cấp môi trường và hỗ trợ cần thiết, tin tưởng họ hoàn thành công việc.
- Giao tiếp hiệu quả nhất là trực tiếp: Mặt đối mặt là tốt nhất, hoặc video call trong môi trường làm việc từ xa.
- Phần mềm hoạt động là thước đo chính của tiến độ.
- Thúc đẩy phát triển bền vững: Nhà tài trợ, nhà phát triển và người dùng nên có khả năng duy trì nhịp độ ổn định lâu dài.
- Liên tục chú ý đến kỹ thuật tốt và thiết kế tốt giúp tăng tính linh hoạt.
- Sự đơn giản – nghệ thuật tối đa hóa lượng công việc chưa làm – là điều thiết yếu.
- Các kiến trúc tốt nhất, yêu cầu và thiết kế xuất phát từ các nhóm tự tổ chức.
- Định kỳ, nhóm phản ánh cách trở nên hiệu quả hơn,rồi điều chỉnh hành vi cho phù hợp.
Các phương pháp Agile phổ biến
Scrum
Scrum được xem là mô hình phổ biến nhất trong các phương pháp vận hành doanh nghiệp theo phương pháp luận Agile. Scrum tuân thủ các nguyên tắc của Agile, tuy nhiên, Agile và Scrum không phải là một như nhiều người vẫn lầm tưởng.
Scrum là một khung tổ chức công việc (framework) hoạt động dựa trên cơ chế lặp và tăng trưởng, cho phép nhóm dự án tập trung vào việc tối ưu hóa giá trị đạt được trong các vòng lặp cố định về mặt thời gian. Điểm nổi bật của Scrum chính là các Sprint – các giai đoạn phát triển và vòng lặp và việc tối đa hóa thời gian phát triển sản phẩm để có thể đạt được mục tiêu – các Product Goal.
Scrum được hình thành bởi 3 nguyên tắc cốt lõi là Minh bạch – Kiểm tra – Thích ứng, do vậy mô hình này được các nhà quản lý ưa chuộng áp dụng mỗi khi cần nâng cao hiệu quả làm việc nhóm.
Kanban
Kanban là thuật ngữ xuất phát từ Nhật Bản, được sử dụng lần đầu tại doanh nghiệp xe hơi Toyota. Trong tiếng Nhật, Kanban được ghép từ “kan” nghĩa là “thị giác” và “ban” nghĩa là “thẻ”, nên thuật ngữ này có thể được hiểu đơn giản là một “bảng thông tin”.
Phương pháp Kanban được tổ chức trên một tấm bảng trực quan chia thành các cột khác nhau, thể hiện các bước liên tiếp trong luồng công việc của dự án sản xuất. Bạn có thể bắt đầu một dự án Kanban đơn giản nhất với 3 cột cơ bản: To-do (sẽ làm), Doing (đang làm) và Done (hoàn thành). Trong quá trình triển khai, các thông tin trong bảng sẽ liên tục thay đổi. Và mỗi khi có nhiệm vụ mới xuất hiện, một “thẻ” mới sẽ được tạo.
Mô hình Kanban yêu cầu sự giao tiếp và minh bạch tuyệt đối, để mọi thành viên ở bất kỳ nhóm nào cũng đều xác định được giai đoạn phát triển của sản phẩm, cũng như luôn biết được trạng thái của dự án.
Lean
Lean là một mô hình quản trị theo triết lý tinh gọn, bắt đầu xuất hiện từ lĩnh vực sản xuất và dần được ứng dụng rộng rãi trong nhiều ngành nghề khác nhau. Mô hình này dựa trên ý tưởng tăng năng suất và giảm lãng phí trong sản xuất.
Có 5 nguyên tắc thiết yếu trong Lean, bao gồm:
- Tập trung vào quy trình: Trọng tâm của mọi sự thay đổi và cải tiến trong phương pháp Lean đều nằm ở quy trình.
- Tối đa giá trị, tối thiểu lãng phí: Phương pháp Lean tập trung loại bỏ những hành động không tạo ra giá trị, đồng thời tăng cường giá trị mang lại cho khách hàng – thay vì tập trung vào mục đích gia tăng lợi nhuận.
- Tiêu chuẩn hóa công việc: Trong Lean, doanh nghiệp sẽ cần tiêu chuẩn hóa các nhiệm vụ về thời gian, kết quả, quy trình xử lý,… nhằm đạt được kết quả là chất lượng sản phẩm nhất quán.
- Tạo dòng chảy: Sản phẩm phải chạy qua từng bước theo một trình tự xác định, một cách tuần tự, theo tốc độ yêu cầu của khách hàng.
- Giải quyết vấn đề nhanh chóng: Trong Lean, vấn đề được nhìn nhận như là cơ hội để cải tiến. Thay vì ngay lập tức nhảy vào giải pháp, các nút thắt sẽ được tháo gỡ theo chu trình cải tiến liên tục PDCA.
Extreme Programming (XP)
Extreme Programing (XP) là một framework điển hình dựa trên phương pháp Agile, có thể điều chỉnh cho phù hợp với các quy mô công ty khác nhau. XP hoạt động dựa trên ý tưởng khám phá “điều đơn giản nhất khả thi” mà không đặt quá nhiều công sức vào các tầm nhìn dài hạn cho sản phẩm.
Đây là một phương pháp ưu tiên sự hài lòng của khách hàng hơn bất kỳ yếu tố nào khác, đồng thời đề cao sự tin tưởng bằng cách chấp nhận những thay đổi trong yêu cầu của khách hàng, bất kể nó có thể đến trong giai đoạn sau của chu kỳ.
Yếu tố làm việc nhóm cũng được nhấn mạnh trong XP, bởi các vấn đề phát sinh sẽ được giải quyết bởi toàn bộ đội ngũ quản lý, các kỹ sư phần mềm và khách hàng. Tất cả đều là những mảnh ghép thiết yếu của quá trình triển khai XP.
Crystal
Crystal là một framework làm việc theo mô hình Agile linh hoạt nhất, mang đến sự tự do trong việc phát triển cho nhóm triển khai. Phương pháp này tập trung nhiều vào các cá nhân và cách họ tương tác hơn là vào quy trình và các công cụ.
Crystal tập trung vào các nguyên tắc như Con người, Tương tác, Cộng đồng, Kỹ năng, Tài năng và Giao tiếp, nhằm mang đến quy trình phát triển sản phẩm tốt nhất có thể.
Theo chia sẻ của người sáng lập, “Crystal là một nhóm các phương pháp phát triển phần mềm, hoạt động với sức mạnh từ con người, cực kỳ nhẹ nhàng và có thể co giãn để phù hợp”.
Phương pháp Crystal có các biến thể đa dạng như:
- Crystal Clear: dành cho nhóm có tối đa 8 người
- Crystal Yellow: dành cho nhóm khoảng 10 – 20 người
- Crystal Orange: dành cho nhóm khoảng 20 – 50 người
- Crystal Red: dành cho các nhóm lớn từ 50 – 1000 người
(Agile là gì? Hiểu về mô hình Agile để triển khai hiệu quả)