Thực ra mình nói Dev Việt là để dân tộc hoá thế thôi, chứ thực ra mình đọc mấy bài viết của các trang nước ngoài, thì cũng nhiều người ghét cay ghét đắng cái thằng Agile lắm các bạn ạ.
Bản thân mình hiện tại đang làm việc với tư tưởng Agile, và thực sự mình thấy nó rất hiệu quả. Nó không chỉ hữu ích trong việc vận hành các dự án trong công ty, mà nó còn giúp mình thay đổi nhiều điều trong cuộc sống. Nhưng điều đáng nói là, thực ra trước đây mình cũng là một anti-fan của Agile :).
Chứng chỉ mình đã nhận từ ICAgile
Từ lúc chưa biết cái gì là Agile, đến lúc biết nó rồi ghét nó, rồi đến lúc hiểu nó và thích nó, không khác gì một cuộc cách mạng tư tưởng các bạn à. Mà tư tưởng của một con người khó mà thay đổi được, chúng ta chỉ có thể thay đổi khi biết được nguyên nhân của vấn đề. Và bài viết này, mình muốn chỉ ra các nguyên nhân khiến nhiều người ghét cay ghét đắng Agile theo kinh nghiệm của mình, hy vọng bạn sẽ có một cái nhìn khác về nó.
1. Họ không hiểu gì về Agile.
Bạn đã bao giờ nghe: "Agile là một tư tưởng" chưa?. Nếu chưa, thì bạn đang thực sự không hiểu gì về nó cả.
Thực sự mà nói, thì người đầu tiên không hiểu gì về Agile, chính là các Manager hay Leader. Như mình nói, Agile là một tư tưởng, nên nó cần có những người truyền bá tư tưởng thực sự. Trong khi hầu hết những người này chỉ lên mạng tìm hiểu, rồi nghe người ta nói là Agile hiệu quả lắm, chưa kịp thông suốt về Agile, thì đã thấy người ta giới thiệu mô hình SCRUM. Thế là đưa luôn SCRUM vào để vận hành dự án, và áp đặt nhân viên của mình phải làm theo các quy tắc trong nó. Bạn thử nghĩ xem, cuộc sống của bạn đang yên ổn, bổng một ngày đẹp trời, có ai đó bắt bạn phải thay đổi toàn bộ thói quen, thì chuyện gì sẽ xảy ra?.
Một tư tưởng chỉ có thể đã thông bằng tư tưởng. Nếu tư tưởng của bạn chưa nhận thức được sự tốt đẹp của một điều gì đó, thì cho dù có ai ép buộc bạn làm bất cứ điều gì đi nữa, bạn cũng không thể nào ghi nhận sự tốt đẹp của nó mang lại. Ví dụ như: bản thân mình nhận thức được tầm quan trọng của sức khoẻ, thế nên mình luôn cố gắng giành thời gian để tập thể dục thể thao hằng ngày, nó hoàn toàn tự nguyện, và mình thấy thoải mái khi được làm điều đó. Nhưng mình có một đứa bạn, nó không nhận thức được điều đó, việc bỏ thời gian để tập thể dục thể thao hằng ngày với nó là một cực hình, dù bố mẹ nó có áp đặt nó thế nào đi nữa, thì cũng nhận lại sự cau mày, nhăn nhó của nó mà thôi.
2. Họ bị áp đặt rập khuôn các quy tắc vô nghĩa.
Có một điều sai lầm trong suy nghĩ của họ, là họ đang cho rằng SCRUM chính là Agile, sử dụng SCRUM chính là họ đang vận hành dự án bằng Agile vậy. Cho nên họ đưa hết toàn bộ quy tắc trong SCRUM ra để bắt các nhân viên của mình phải làm theo, bất chấp việc công ty của mình có phù hợp với nó hay không.
Trong Agile có 4 tuyên ngôn, và thực ra, đó cũng chính là 4 giá trị cốt lõi của tư tưởng này. Nó không cần biết chúng ta dùng các quy tắc gì để vận hành dự án, chỉ cần chúng ta đạt được bốn giá trị cốt lõi đó, thì đó chính là Agile. Trong khi họ cứ việc sử dụng các quy tắc một cách máy móc, mà không cần biết liệu có đạt được các giá trị đó hay không.
SCRUM chỉ là một Framework, với một tập hợp các hoạt động và quy tắc đã được cộng đồng ghi nhận về tính hiệu quả, nhằm mục đích hỗ trợ Team làm việc đạt được các gía trị trong Agile. Chúng ta hoàn toàn có thể custom lại nó để sử dụng, hay thậm chí tự tạo ra một Framework khác để phù hợp với đặc thù của công ty. Miễn là chúng ta đạt được 4 giá trị cốt lõi như nói ở trên.
Mình thấy đại đa số các dự án trong công ty outsourcing, khi dự án đó được đưa về, nó đều đi kèm cả một tập tài liệu cụ thể, và một deadline gần như không thể nào thay đổi được. Thế thì cần quái gì khái niệm sprint nữa :), Planning meeting sinh ra để làm gì?. Nói thật chứ nhiều lúc xách dép chạy theo không kịp, rồi OT ngày đêm nữa, chứ đừng nói có thời gian đi làm theo các quy tắc mà mình chưa hình thành thói quen, trong khi các bạn vẫn bị ép buộc phải làm, dẫn đến bạn thấy thù nó luôn cũng đúng.
Còn chưa kể đến, ở công ty cũ của mình, sáng nào cũng daily meeting rồi, thế mà đầu ngày, cuối ngày cũng phải bắt report lại một lần nữa. Thế liệu họ đang hiểu được ý nghĩa của việc daily meeting chưa?, hay là họ nghĩ, đó là điều phải làm vì nó là quy tắc trong SCRUM?.
Agile không phải là thứ gì đó mà chúng ta phải làm theo, mà là một thứ gì đó chúng ta cần đạt được.
3. Họ thấy dùng Agile không hiệu quả.
Làm sao hiệu quả được, khi bạn không hiểu được ý nghĩa của mỗi hoạt động động mà các bạn đang phải làm. Một là bộ não bạn luôn thể hiện sự cọc cằn phản đối lại cái bạn đang bị ép phải làm, hai và bạn vẫn vui vẻ làm theo, nhưng nó lại không đạt được ý nghĩa như mong muốn.
Mình nhớ lúc còn ở một công ty cũ. Mỗi lần vào daily meeting là kéo dài đến 2h đồng hồ, ở trên thì leader nói cái gì miên man không biết, nhưng ở dưới có người phải mở laptop lên để làm task đang bị dí, người thì ngồi ghế tựa phê quá nên ngủ gật do tối qua phải OT :). Đến lúc kết thúc cuộc họp rồi, mà mình vẫn không biết được kết quả đạt được trong cuộc họp đó là gì.
4. Họ chưa đủ năng lực và kỹ năng để làm việc với Agile.
Theo mình thấy, để làm việc tốt với Agile, điều bạn cần là level của một Developer, chứ không phải level của một coder.
Hiện tại ở việt nam, đại đa số là các công ty outsourcing, và đại đa số các nhân viên của họ chỉ đạt level như một coder. Đây cũng là một phần làm cho các công ty này thất bại với Agile. Ngoài miệng thì họ đang nói dùng Agile đấy, nhưng Agile mà họ luyện chỉ là một Agile đã bị tẩu hoả nhập ma mà thôi. Cơ bản, họ chỉ ở mức mượn một số quy tắc trong Scrum ra để xài mà thôi.
Tại sao level coder không thể làm việc với Agile?.
Trong cách vận hành dự án trước đây, chúng ta chắc đã nghe qua khái niệm "Người gánh team". Thường người gánh team chính là Project Manager, hay các Team Leader. Những người này có năng lực và kỹ năng tốt, nên thường phải đảm nhiệm các công việc phân tích hệ thống, rồi đưa ra tài liệu, task list và lộ trình cụ thể của dự án, sau đó mới bắt đầu giao task cho các coder. Coder cứ thấy task được giao, có tài liệu cụ thể rồi, cứ thế mà viết ra các mã đáp ứng được chức năng như tài liệu thôi.
Nhưng trong Agile lại khác, ở đây không có khái niệm gánh team, không hề có vị trí như Project Manager, các dev trong một team đều ngang hàng. Không ai giúp họ viết ra các tài liệu cụ thể rồi làm theo cả, họ đều phải tự bơi. Và Agile đề cao tính cá nhân như vậy.
Trong Agile người ta không gọi theo khái niệm Task list, mà theo khái niệm User stories. Mỗi User story được tạo ra, gần như không hề có tài liệu cụ thể nào cả, chỉ nói đến mong muốn của khách hàng thôi. Và tự bạn làm tất cả mọi thứ, miễn sao bạn làm ra được chức năng như mong muốn. Điều này sẽ làm cho các bạn coder bị ngợp vì trước giờ họ quá phụ thuộc vào người gánh team, nên giờ họ không đủ khả năng để tự làm các công việc đó. Họ ngại với việc phải học hỏi để nâng cao trình độ, thế là họ ghét Agile và chỉ tìm những môi trường không thực sự dùng Agile mà thôi.
Cuối cùng, hy vọng các bạn cố gắng tìm hiểu kỹ hơn về Agile, nhất là Manager hay Team leader muốn truyền bá tư tưởng Agile vào công ty mình. Tốt nhất là nên học để lấy được chứng chỉ về Agile, vì đó là cách tốt nhất để chứng minh, bạn đã thực sự hiểu về nó. Và quan trọng, hãy là một người truyền bá tư tưởng đúng cách.