Hỏi đáp về Agile

Những câu hỏi thường gặp về Agile...

Agile là gì?
Phát triển Linh hoạt (Agile Development, gọi tắt là Agile) là một thuật ngữ có nguồn gốc từ Tuyên Ngôn Phát triển Phần mềm Linh hoạt (Manifesto for Agile Software Development). Tuyên ngôn này được soạn thảo năm 2001 bởi một nhóm các tác giả, chuyên gia của các phương pháp phát triển phần mềm Scrum, Extreme Programming (XP), DSDM (Dynamic Systems Development Method), Crystal, FDD(Feature-Driven Development); và một vài nhà lãnh đạo khác.

Tuyên ngôn Agile đã tổng kết ra một số giá trị và nguyên tắc chung, phổ quát cho tất cả các phương pháp luận về linh hoạt đang tồn tại độc lập tại thời điểm đó. Văn bản này đưa ra bốn giá trị cốt lõi cho phép các nhóm đạt được hiệu suất cao gồm:

  • Cá nhân và tương tác (hơn là quy trình và công cụ),
  • Cung cấp phần mềm chạy tốt (hơn là tài liệu hóa đầy đủ),
  • Cộng tác với khách hàng (hơn là thương thảo hợp đồng),
  • Phản hồi với thay đổi (hơn là tuân thủ kế hoạch).
Các giá trị cốt lõi này còn được cụ thể hóa với 12 nguyên tắc, bạn có thể tìm thấy các nguyên tắc đó trong Tuyên ngôn Phát triển Phần mềm Linh hoạt.
Khi dùng chữ “agile” với tư cách là một tính từ, thì nó mang nghĩa là “linh hoạt”. Nhưng khi ta dùng chữ Agile (A viết hoa), tức là chỉ triết lí và tất cả những phương pháp phát triển phần mềm, phát triển sản phẩm và quản lí dựa trên triết lí được mô tả trong Tuyên ngôn Agile.
Agile là triết lí đã làm thay đổi diện mạo nền công nghệ thế giới trong những thập kỉ đầu thế kỉ XXI. Các phương pháp Agile đã được thực tế chứng minh là công cụ mạnh của các cá nhân, tổ chức trong việc đổi mới, sáng tạo, làm nên những sản phẩm chất lượng cao, đột phá, cũng như gia tăng hiệu quả hoạt động và năng lực cạnh tranh, phát triển văn hóa tổ chức. Những nghiên cứu thực nghiệm và thống kê từ ngành công nghiệp phần mềm cho thấy Agile có thể giúp cho các doanh nghiệp gia tăng năng suất và hiệu quả lên gấp nhiều lần, nâng tỉ lệ thành công của dự án lên gấp đôi và gia tăng năng lực cạnh tranh bền vững cho các doanh nghiệp. Cùng với Tư duy Tinh gọn, Khởi nghiệp Tinh gọn (Lean Startup), và Tư duy Thiết kế (Design Thinking), Agile vẫn đang tiếp tục tạo nên những làn sóng đổi thay lớn trên thế giới.
Scrum là gì?

Tài liệu Hướng dẫn Scrum định nghĩa “Scrum là một khung làm việc để phát triển bền vững các sản phẩm phức tạp”. Có thể hiểu đây là khung tổ chức công việc tổng quát hướng đến phát triển các sản phẩm phức tạp, chủ yếu là phần mềm. Ngày nay Scrum có thể được dùng như là nền tảng tổ chức các công việc khác nhau, từ quản trị dự án linh hoạt nói chung, đến phát triển sản phẩm, thực hiện các chiến dịch marketing, tổ chức dạy học, sản xuất ô tô module hóa hoặc những công việc cá nhân khác.

Dựa trên lý thuyết quản lý thực nghiệm (empirical process control), Scrum sử dụng cơ chế lặp (iterative) và tăng trưởng (incremental) để tối ưu hóa tính hiệu quả và kiểm soát rủi ro. Scrum rất đơn giản, dễ học và có khả năng ứng dụng rất rộng. Để có thể dùng Scrum, chúng ta cần hiểu rõ và vận dụng đúng các thành tố tạo nên Scrum bao gồm các giá trị cốt lõi (còn gọi là “ba chân”, hay ba trụ cột của Scrum), các vai trò, các sự kiện, các công cụ (artifacts) và những quy tắc đặc thù của Scrum.

Hiện nay, định nghĩa Scrum là gì được ghi trong tài liệu Scrum Guide (Hướng dẫn Scrum) và được cập nhật thường xuyên bởi chính các tác giả tại http://scrumguides.org/

Tại sao chọn Agile?

Trong nền kinh tế sáng tạo đầy biến động hiện nay, yêu cầu cấp thiết đối với các cá nhân hay tổ chức là phải đạt được năng lực linh hoạt (Agility) cao độ để thích ứng và dẫn đầu trong các cuộc cạnh tranh. Agile là nền tảng để đạt được Agility và duy trì lợi thế cạnh tranh bền vững.

Triết lý Agile cùng với các framework, phương pháp cũng như các công cụ đặc thù có thể giúp các cá nhân, đội nhóm và doanh nghiệp trở nên hiệu quả hơn, năng suất hơn và đổi mới-sáng tạo tốt hơn.

Không biết Agile có sao không?

Không sao, chỉ mất đi một cơ hội cải thiện năng suất và đổi mới bền vững.

Muốn triển khai Agile thì bắt đầu từ đâu?

Các cá nhân có thể bắt đầu với việc áp dụng các kĩ thuật cơ bản của Personal Kanban cùng với tư duy Agile để nâng cao năng suất cá nhân, làm việc hiệu quả, kiểm soát tốt stress.
Các lập trình viên có thể bắt tay với những kĩ thuật lập trình Agile cơ bản như TDD, Pair-Programming để nâng cao chất lượng phần mềm trước khi đi xa hơn với đầy đủ bộ kĩ năng để trở thành Nghệ nhân Phần mềm (Software Craftsman) đích thực.

Các nhóm có thể ứng dụng Scrum để tổ chức lại công việc, nâng cao hiệu quả giao tiếp và hiệu suất nhóm.

Các công ty có thể bắt đầu với việc tái tổ chức công việc và quy trình nghiệp vụ với Scrum, Lean để giảm thiểu lãng phí, nâng cao hiệu quả hoạt động, tối ưu hóa nguồn lực và gia tăng năng lực cạnh tranh bền vững.

Agile sẽ tác động tới những ai?

Tùy mức độ và phạm vi áp dụng mà Agile sẽ tác động tới tổ chức. Ở mức đơn giản nhất, việc thực hành Agile giúp gia tăng hiệu suất cá nhân. Ở mức chuyển đổi văn hóa tổ chức, Agile có thể tác động đến toàn bộ văn hóa của doanh nghiệp.

Triển khai Agile có tốn kém không?

Phụ thuộc vào nguồn lực chúng ta có, việc thực hành Agile có thể đơn giản là sắp xếp lại công việc mà không cần thêm chi phí. Đối với các chương trình chuyển đổi căn bản và toàn diện, sự đầu tư có thể sẽ phải tương xứng với mục tiêu do tổ chức đề ra.

Có bộ những bộ tool hay phần mềm nào để thực hành Agile?

Các nhóm Scrum nhỏ, làm việc tập trung có thể chỉ cần các đồ chi phí thấp để có thể vận hành tốt Scrum: bảng trắng, giấy dán, bút viết bảng.

Chúng ta cũng có thể sử dụng hàng loạt các hệ thống phần mềm, cloud hỗ trợ tương tác nhóm theo triết lý Agile như Trello, Asana, Jira, TFS. Chúng có thể miễn phí hoặc tính phí tùy nhu cầu sử dụng của mỗi nhóm và tổ chức.

Đối với các tổ chức lớn, việc đầu tư cho các công cụ để gia tăng hiệu quả tổng thể luôn là một trong những ưu tiên trong trọng trong danh mục đầu tư cho công nghệ để phát triển.

Có cần nhiều quy trình và tài liệu không?

Tài liệu tối giản nhất để có thể triển khai được Scrum là Scrum Guide chưa đầy 20 trang. Có thể chúng ta sẽ phải đọc một hai cuốn sách mỏng khác (như Scrum Primer hoặc Agile Project Management), nhưng về cơ bản là không cần tìm hiểu quá nhiều.

Agile là mô thức hoạt động tinh giản, đề cao sự hiệu quả thực chất, tạo ra giá trị cho các bên liên quan nên không yêu cầu nhiều tài liệu.

Lean Startup (Khởi nghiệp Tinh gọn) có phải là Agile không?

Lean Startup là phương pháp rất nổi tiếng trong giới khởi nghiệp công nghệ và có ảnh hưởng mạnh mẽ tới sự thay đổi công nghệ trong thời gian gần đây.

Lean Startup có những điểm tương đồng với triết lí Agile như việc thu ngắn các vòng phản hồi, nhấn mạnh việc học hỏi, chu trình chuyển giao giá trị nhanh chóng, loại bỏ lãng phí v.v.

Thế còn Lean? Agile và Lean có phải là một không?

Agile và Lean trong phát triển phần mềm có rất nhiều điểm chung, nhưng là hai khái niệm khác nhau và có sự khác biệt. Dưới đây, chúng ta sẽ làm một phép so sánh những điểm giống và khác nhau.

Agile và Lean có nguyên lý tương đồng với nhau ở nhiều điểm.

  1. Nhấn mạnh vào lập kế hoạch theo cách thích ứng thông qua phát hành sản phẩm sớm, liên tục để thoả mãn khách hàng:
    • Lean: Trì hoãn việc ra quyết định và Bàn giao sản phẩn nhanh. Với hai nguyên lý này, Lean muốn lập kế hoạch thích ứng chứ không phải lập mọi kế hoạch ban đầu cho toàn bộ quy trình và phát hành sớm và liên tục.
    • Agile: Ư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.
  2. Nhấn mạnh vào phát triển con người:
    • Lean: Tôn trọng con người
    • Agile: 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.
  3. Tối ưu hoá toàn cục và loại bỏ lãng phí:
    • Lean: Loại bỏ lãng phí, tối ưu hoá toàn cục.
    • Agile:  Phần mềm chạy tốt là thước đo chính của tiến độ. Và trong Tuyên ngôn Agile có đoạn: Phần mềm chạy tốt hơn là tài liệu đầy đủ. Hai điểm này có ý: bất cứ một công đoạn hoặc tạo tác nào mà không đem lại giá trị cho phần mềm đều có thể coi là lãng phí và không được tính.
  4. Xây dựng sản phẩm chất lượng cao tự thân.
    • Lean: Tạo chất lượng tự thân
    • Agile: 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.

Lean có ảnh hưởng rất lớn tới sự hình thành của Agile. Lean và Agile có sự liên kết chắt chẽ trong phát triển phần mềm. Nếu bạn đang làm Agile, thì bạn đang làm Lean và ngược lại.

Khác nhau:

  • Lean, một cách tổng quát không phải là một phương pháp mà là cách nghĩ. Agile tuy có cái lõi là triết lí tổng quát, nhưng còn là tập những phương pháp khác nhau mà bạn có thể làm ngay được như Scrum, XP thoả mãn Tuyên Ngôn Agile và các nguyên lý cốt lõi.
  • Agile bao gồm cả những kỹ thuật khác nhau để làm trong phần mềm như các kỹ thuật ở XP (TDD, BDD, v.v).

Như vậy Lean và Agile không phải là tách biệt và đối ngược nhau, chúng ta có thể áp dụng Lean vào bất cứ một phương pháp phát triển Agile nào.