Mặc dù các phương pháp phát triển phần mềm đã gia tăng từ những năm 1957 nhưng phải cho tới những thập niên 70 “Agile” mới lần đầu được bàn luận sâu hơn bởi William Royce, người đã xuất bản một bài báo về việc phát triển các hệ thống phần mềm lớn.
Sau này tới năm 2001, tuyên ngôn của Agile “Tuyên bố chính thúc 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” đã được 17 nhà phát triển phần mềm xuất bản. Các nhà phát triển này đã họp lại để bàn về các phương pháp triển khai hạng nhẹ dựa trên kinh nghiệm tổng hợp của họ.
Giờ đây, Agile còn thu thú các CEO, trở thành phương pháp chung trong quản lý dự án. Với những phương thức triển khai độc đáo, thể hiện sự linh hoạt và năng động. Agile mang đển những giá trị hữu ích trong chiến lược quản lý của mỗi doanh nghiệp. Cùng DiziBrand tìm hiểu bạn nhé.
Agile là gì?
Agile viết tắt là Agile Software Development có nghĩa là phương thức phát triển phần mềm linh hoạt, được ứng dụng trong quy trình phát triển phần mềm với mục tieu là đưa sản phẩm đến tay người sử dụng càng nhanh càng tốt.
Rất nhiều nơi định nghĩa Agile như một phương pháp. Thực chất, Agile giống như một phương pháp luận, một triết lý dựa trên nguyên tắc phân đoạn vòng lặp (Iterative) và tăng trưởng (Incremental).
Ngày nay, triết lí Agile đã vượt xa khỏi khu vực truyền thống của mình là phát triển phần mềm để đóng góp vào sự thay đổi trong cách thức làm việc, quản lí, sản xuất ở các ngành khác như sản xuất, dịch vụ, sales, marketing, giáo dục,… và trở thành một phương thức quản lý dự án phổ biến nhất hiện nay với nhiều đại diện được gọi là các phương pháp “Họ Agile“.
- Agile là gì?
- Các phương pháp Agile
- Bốn tôn chỉ cần tuân thủ trong phương pháp Agile
-
Những nguyên tắc quan trọng trong Agile
- Đáp ứng toàn diện nhu cầu khách hàng thông qua việc giao hàng sớm và sản phẩm có giá trị
- Thay đổi yêu cầu được chào đón, thậm chí là rất muộn trong quá trình phát triển
- Giao phần mềm chạy được cho khách hàng một cách thường xuyên (giao hàng tuần hơn là hàng tháng)
- Nhà kinh doanh và kỹ sư lập trình phải làm việc cùng nhau hàng ngày trong suốt dự án
- Các dự án được xây dựng 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
- Trao đổi trực tiếp Face to Face là phương pháp hiệu quả nhất để truyền đạt thông tin
- Phần mềm chạy được là thước đo chính của tiến độ
- Phát triển bền vững và duy trì được nhịp độ phát triển liên tục
- Liên tục quan tâm đến kĩ thuật và thiết kế để cải tiến sự linh hoạt
- Sự đơn giản là cần thiết – nghệ thuật tối đa hóa lượng công việc chưa hoàn thành
- Nhóm tự tổ chức
- Thích ứng thường xuyên với sự thay đổi
-
Đặc trưng của Agile
- Tính lặp (Iterative)
- Tính tăng trưởng và tiến hóa (Incremental & Evolutionary)
- Tính thích nghi (adaptive)
- Nhóm tự tổ chức và liên chức năng
- Quản lý tiến trình thực nghiệm (Empirital Process Control)
- Giao diện trực diện (Face-to-Face communication)
- Phát triển dựa trên giá trị (Value-Based Development)
- Những ưu điểm và nhược điểm của Agile
- Một quy trình Agile hoàn chỉnh
- Những câu hỏi thường gặp
Các phương pháp Agile
Agile không định nghĩa ra một phương pháp cụ thể nhưng lại có rất nhiều phương pháp khác nhau thỏa mãn và hướng theo các tiêu chí của nó.
Bảng thống kê dưới đây liệt kê 13 phương pháp “Họ Agile”, nó cũng cho thấy phần lớn các công ty hiện nay đã sử dụng Scrum như một cách tiếp cận cơ bản. Bên cạnh đó, rất nhiều công ty đã kết hợp các phương pháp lại với nhau. Ví dụ 44,4% các công ty có sử dụng Waterfall, có nghĩa là một tỉ lệ nhất định nào đó vừa dùng Waterfall, vừa sử dụng Scrum trong hoạt động của mình.
Bốn tôn chỉ cần tuân thủ trong phương pháp Agile
Cá nhân và sự hỗ trợ quan trọng hơn quy trình và công cụ
Trọng tâm đặt lên con ngượi, xây dụng tương tác và hỗ trợ giữa các thành viên trong nhóm. Những thành viên có năng lực, chịu tương trợ nhau trong công việc sẽ mang đến thành công trong dự án.
Sản phầm dùng được tốt hơn và có đầy đủ tài liệu
Tập trung thời gian để làm ra phần mềm hoàn chỉnh đáp ứng hoàn hảo những yêu cầu của khách hàng.
Cộng tác với khách hàng quan trọng hơn đàm phán hợp đồng
Hiểu được khách hàng cần gì để hỗ trợ tư vấn và điều chỉnh sản phẩm thay vì chỉ dựa vào các điều khoản trong hợp đồng.
Phản hồi thay đổi hơn là cứ bám sát kế hoạch
Agile khuyến thích những sự thích nghi với những sự thay đổi, đó có thể là thay đổi về mặt công nghệ, nhân sự, deadline,…
Những nguyên tắc quan trọng trong Agile
Đáp ứng toàn diện nhu cầu khách hàng thông qua việc giao hàng sớm và sản phẩm có giá trị
Thay đổi yêu cầu được chào đón, thậm chí là rất muộn trong quá trình phát triển
Dù bạn thích hay không thì việc thay đổi yêu cầu từ khách hàng là dường như không thể tránh khỏi và nhiệm vụ của bạn là phải thích ứng với sự thay đổi đó. Thích ứng không có nghĩa là khách hàng yêu cầu gì mình làm cái đó. Khi khách hàng thay đổi yêu cầu, chắc chắn phải có lý do của họ và nhiệm vụ của đội dự án là phải hiểu được lí do đó để có thể điều chỉnh sự thay đổi, tư vấn hay đề nghị giải pháp cho khách hàng tương ứng.
Giao phần mềm chạy được cho khách hàng một cách thường xuyên (giao hàng tuần hơn là hàng tháng)
Hai nguyên tắc trên DiziBrand gom lại với nhau vì cơ bản nó chia sẻ ý tưởng giống nhau là giao hàng sớm, liên tục và chạy được cho khách hàng. Dĩ nhiên mục đích của dự án phát triển phần mềm là phát triển phần mềm và làm khách hàng hài lòng và không có gì làm khách hàng hài lòng hơn việc cho khách hàng thấy được sản phẩm của mình thường xuyên và chạy được. Trong Agile, sản phẩm sẽ được demo cho khách hàng thường xuyên (thường là hàng tuần) để cho khách hàng thấy được sản phẩm của mình như thế nào. Nếu có chỗ nào không ổn hay cần cải tiến thì sẽ phản hồi với đội dự án ngay lập tức.
Nhà kinh doanh và kỹ sư lập trình phải làm việc cùng nhau hàng ngày trong suốt dự án
“Nhà kinh doanh” ở đây được hiểu nôm na là khách hàng của dự án, những người tài trợ cho dự án. Đội phát triển phải làm việc thường xuyên và gần gũi với khách hàng để hiểu được nhu cầu của họ cũng như cho phép khách hàng hiểu về công việc của đội phát triển. Đó là một trong những lí do mà Agile dường như khó triển khai trong các dự án, trong đó rào cản về địa lý, thời gian, ngôn ngữ là một trở ngại lớn.
Các dự án được xây dựng 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
Như đã chia sẻ, Agile đặt trọng tâm là con người. Con người ở đây chỉ những cá nhân có động lực làm việc với tinh thần cộng tác, chia sẻ và giúp đỡ lẫn nhau. Song song đó, đội dự án sẽ được hỗ trợ những công cụ, môi trường, sự tin tưởng và những đãi ngộ cần thiết để hoàn thành công việc
Trao đổi trực tiếp Face to Face là phương pháp hiệu quả nhất để truyền đạt thông tin
Sự giao tiếp trao đổi giữa những cá nhân là rất quan trọng và để giao tiếp hiệu quả thì không gì có thể hơn được trực tiếp trao đổi Face-to-Face hay dùng những biểu tượng hình ảnh để chuyển tải thông tin. Bạn sẽ dễ bắt gặp một không khí nhộn nhịp hay những Shopee mà bán hàng ở những kênh nào bạn cũng cần phải có hình ảnh đẹp, rõ nét, chân thực. Vì hình ảnh minh họa, biểu tượng, hình vẽ đầy màu sắc trong các dự án Agile vì những điều đó giúp trao đổi thông tin hiệu quả hơn.
Phần mềm chạy được là thước đo chính của tiến độ
Thông tin về tiến độ của dự án rất quan trọng, đặc biệt là đối với Ban quản lý hay các nhà đầu tư cho dự án vì những thông tin đó sẽ giúp họ có thể đưa ra những quyết định.
Phát triển bền vững và duy trì được nhịp độ phát triển liên tục
Trong Agile ưu tiên phát triển bền vững và duy trì nhịp độ phát triển liên tục. Nếu bạn cẩm thấy mệt mỏi với cường độ làm việc liên tục và thường xuyên thì đó là dấu hiêu cho thấy dự án Agile của bạn đang gặp vấn đề,
Liên tục quan tâm đến kĩ thuật và thiết kế để cải tiến sự linh hoạt
Liên tục cải tiến các quy trình, phương pháp, công cu để tăng mức độ linh hoạt trong dự án. Luôn nghĩ đến những phương pháp mới để code tốt hơn, kiểm thử tốt hơn như TDD (Test-Driven Development) , ATDD (Acceptance Test-Driven Development), kiểm thử tự động, CI….
Sự đơn giản là cần thiết – nghệ thuật tối đa hóa lượng công việc chưa hoàn thành
Agile có nghĩa là linh hoạt và để linh hoạt uyển chuyển thì bạn phải tối giản hóa các công việc mình làm. Những việc nào cần thiết và mang lại giá trị thì mọi người sẽ cùng làm. Tuy nhiên việc xác định việc nào mang lại giá trị nhiều khi không đơn giản. Do đó, để đơn giản thì việc có giá trị là việc mà cả nhóm thống nhất và sẽ cam kết thực hiện.
Nhóm tự tổ chức
Đây là nguyên tắc cốt lõi trong Agile đồng thời cũng là nguyên tắc gây đau đầu nhất. Ý tưởng là nhóm và cách thành viên sẽ tự quyết định việc mình làm, tự cam kết và tự chịu trách nhiệm cho chất lượng công việc mình làm. Mục đích là để tăng tính chủ động trong công việc.
Thích ứng thường xuyên với sự thay đổi
Nhóm thường xuyên nhìn nhận đánh giá về tình hình dự án sản phẩm để có thể điều chỉnh và thích ứng. Ý tưởng là nhìn lại để tiến lên. Đó là những buổi họp tập trung vào những cái hay cái dở trong những việc mình đang làm để rút tỉa kinh nghiệm và học hỏi lẫn nhau.
Đặc trưng của Agile
Tính lặp (Iterative)
Dự án sẽ được thực hiện trong các phân đoạn lặp đi lặp lại (Iteration hoặc Sprint), thường có khung thời gian ngắn (từ 1 đến 4 tuần). Trong mỗi phân đoạn, nhóm phát triển thực hiện đầy đủ các công việc cần thiết như lập kế hoặc, phân tích yêu cầu, thiết kế, triển khai, kiểm thử để cho ra các phần nhỏ của sản phẩm.
Tính tăng trưởng và tiến hóa (Incremental & Evolutionary)
Cuối các phân đoạn, nhóm cho ra các phần nhỏ của sản phẩm cuối cùng, thường là đầy đủ, có khả năng chạy tốt, được kiểm thử cẩn thận và có thể sử dụng. Theo thời gian, phân đoạn này tiếp nối phân đoạn kia, các phần chạy được này sẽ tích lũy, lớn dần lên cho tới khi toàn bộ yêu cầu của khách hàng được thỏa mãn.
Tính thích nghi (adaptive)
Do các phân đoạn chỉ kéo dài trong một khoảng thời gian ngắn và việc lập kế hoạc cũng được điều chỉnh liên tục, nên các thay đổi trong quá trình phát triển (yêu cầu thay đổi, thay đổi công nghệ, thay đổi định hướng về mục tiêu,… ) đều có thể được đáp ứng theo cách thích hợp.
Nhóm tự tổ chức và liên chức năng
Các cấu trúc nhóm này tự phân công công việc mà không dựa trên các mô tả cứng về chức danh hay làm việc dựa trên một sự phân cấp rõ ràng trong tổ chức. Nhóm tự tổ chức đã đủ các kĩ năng cần thiết để có thể được trao quyền tự ra quyết định, tự quản lý và tổ chức lấy công việc của chính mình để đạt được hiệu quả cao nhất.
Quản lý tiến trình thực nghiệm (Empirital Process Control)
Các nhóm Agile ra các quyết định dựa trên các dữ liệu thực tiễn thay vì tính toán lý thuyết hay các tiền giả định. Agile rút ngắn vòng đời phản hồi để dễ dàng thích nghi và gia tăng tính linh hoạt nhờ đó có thể kiểm soát được tiến trình và nâng cao hiệu suất lao động.
Giao diện trực diện (Face-to-Face communication)
Agile không phản đối việc tài liệu hóa nhưng đánh giá cao hơn việc giao tiếp trực diện thay vì thông qua giấy tờ. Agile khuyến khích nhóm phát triển trực tiếp nói chuyện để hiểu rõ hơn về những vấn đề mà khách hàng thực sự cần. Trong giao tiếp giữ nội bộ nhóm, Agile cũng khuyến khích trao đổi trực tiếp và thống nhất với nhau về thiết kế của hệ thống và cùng nhau triển khai các chức năng theo yêu cầu.
Phát triển dựa trên giá trị (Value-Based Development)
Một trong các nguyên tắc cơ bản của Agile là “Sản phẩm chạy tốt chính là thước đo của tiến độ”. Nhóm Agile thường cộng tác trực tiếp và thường xuyên với khách hàng để biết yêu cầu nào có độ ưu tiên cao hơn, mang lại giá trị hơn sớm nhất có thể cho dự án.
Những ưu điểm và nhược điểm của Agile
Ưu điểm Agile
- Thực hiện thay đổi dễ dàng.
- Không cần phải nắm mọi thông tin ngay từ đầu.
- Bàn giao nhanh hơn.
- Chú ý đển phản hồi của khách hàng và người dùng.
- Cải tiến liên tục.
Nhược điểm Agile
- Khó lên kế hoạch dự án.
- Bắt buộc phải hướng dẫn và đào tạo chi tiết.
- Ít tài liệu hướng dẫn.
- Bắt buộc phải hợp tác để dự án thành công.
- Chi phí cao.
Một quy trình Agile hoàn chỉnh
Các giai đoạn phát triển của sản phẩm sẽ được chia nhỏ ra thành những phần tăng trưởng cụ thể mà người dùng có thể tương tác được. Nhờ đó sản phẩm sẽ có được phản hồi cần thiết để tránh khỏi những vấn đề nghiêm trọng và được cải tiến tốt hơn.
Thêm vào đó, quy trình quản lý sản phẩm có tính chất lặp lại này còn giúp cho cả nhóm có thể chuyển sang một phần tăng trưởng khác trong khi những vấn đề của phần tăng trưởng hiện tại đang được giải quyết.
Việc Agile tinh giản số lượng tài liệu quản lý đã giúp cải tiến tốc độ phát triển sản phẩm. Thay vì sử dụng tài liệu dài mà không phải ai cũng có thời gian để đọc, Agile tăng cường sự tương tác giữa các thành viên trong nhóm, với các phản hồi của khách hàng, trí tưởng tượng, lập trình cùng những thử nghiệm và những ý tưởng mới. Những yếu tố này sẽ góp phần tìm ra giải pháp phù hợp khi có sự thay đổi đột ngột thay vì nhất nhất tuân theo một kế hoạch và không thể đối phó khi có tình huống phát sinh.
Tuy nhiên, việc áp dụng Agile không hề dễ dàng, nó phụ thuộc rất nhiều vào sự linh hoạt của chính nhà lãnh đạo. Đưa Agile vào doanh nghiệp không giống như một dự án, nó là một sự thay đổi lớn đối với văn hoá doanh nghiệp và chiến lược phát triển nguồn nhân lực.
Những câu hỏi thường gặp
Phương thức Agile với Waterfall?
Mô hình Agile và Waterfall là hai phương thức hoàn toàn khác biệt trong quy trình phát triển phần mềm. Tuy chúng khác biệt trong cách tiếp cận, nhưng cả 2 phương thức đều hữu dụng ở một thời điểm nào đó, phụ thuộc vào yêu cầu và đặc điểm của dự án