Hỏi đáp về Agile
Những câu hỏi thường gặp về Agile...
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).
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/
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 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.
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.
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.
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á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.
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 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.
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.
- 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.
- 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.
- 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.
- 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.