Bàn về 12 nguyên tắc của Agile (Phần 1)
Thời gian gần đây chúng ta đã được nghe nói và tìm hiểu về Agile khá là nhiều. Nhắc đến Agile là chúng ta không thể không nhắc tới 4 tuyên ngôn và 12 nguyên tắc phải không? ^^ 4 tuyên ngôn thì rất cô đọng và dễ hiểu với tất cả chúng ta rồi. Còn 12 nguyên tắc theo ý kiến cá nhân mình thì nó ...
Thời gian gần đây chúng ta đã được nghe nói và tìm hiểu về Agile khá là nhiều. Nhắc đến Agile là chúng ta không thể không nhắc tới 4 tuyên ngôn và 12 nguyên tắc phải không? ^^
4 tuyên ngôn thì rất cô đọng và dễ hiểu với tất cả chúng ta rồi. Còn 12 nguyên tắc theo ý kiến cá nhân mình thì nó khá là dài và hơi khó hiểu, khó để ngấm vào chúng ta. Một số tài liệu tiếng Việt cũng có nói đến nhưng vẫn còn sơ xài. Chính vì vậy hôm nay mình muốn chúng ta bàn luận thêm về 12 nguyên tắc trong Agile để hiểu hơn và dễ thuộc nó hơn ^^
1. Thoả mãn yêu cầu của khách hàng thông qua việc giao sản phẩm sớm và liên tục
“Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.”
Chúng ta hãy break nguyên tắc 1 này thành 3 phần và cùng bàn về chúng đó là: Khách hàng, giao sản phẩm sớm, có giá trị (valuable)
Khách hàng
Thoả mãn yêu cầu của khách hàng là ưu tiên cao nhất trong quản lý dự án agile. Việc nhận định khách hàng thuộc đối tượng nào, ở trong hay ngoài công ty không quá cần thiết. Điều quan trọng hơn ở đây là chúng ta cần biết dự án cần làm gì cho khách hàng và làm thế nào để tương tác một cách tốt nhất với khách hàng, thoả mãn với những gì mà họ cần. Điều đó có nghĩa là việc quản lý dự án agile không chỉ đơn thuần là hoàn thành list các việc được yêu cầu mà không quan tâm đến những gì họ cần, hay có ảnh hưởng gì đến khách hàng hay không.
Giao hàng sớm (early .... delivery)
Việc giao sản phẩm sớm là điều cần thiết. Đôi khi bạn muốn giữ lại vì phần đó chưa hoàn thành, muốn giành thêm thời gian để cải thiện nó và không muốn nhận những lời phê bình từ người khác. Tuy nhiên bạn cũng sẽ không muốn tốn thêm thời gian để làm những những thứ mà khách hàng không muốn đâu. Mà để khách hàng có thể confirm tiến độ công việc đang đúng như yêu cầu, có những feedback sớm thì con đường tốt nhất vẫn là việc chúng ta nên giao sản phẩm sớm cho khách hàng.
Có giá trị (valuable)
Dù chúng ta có đang quản lý cái gì đi nữa thì chúng cũng nên quy về cái cuối cùng đó là có giá trị. Nếu như khách hàng, end users không công nhận giá trị đó thì có lẽ nó không có giá trị gì với họ ngay từ lúc bắt đầu phát triển. Hoặc là nó đã không được phát triển theo đúng hướng để có thể tạo ra những giá trị, trải nghiệm cho khách hàng.
Đây là một nguyên tắc khá là nặng nề nhỉ, chắc vì thế mà nó là nguyên tắc đầu tiên, và nó yêu cầu "ưu tiên cao nhất"
2. Chào đón việc thay đổi yêu cầu, thậm chí là những thay đổi yêu cầu muộn
“Welcome changing requirements, even late in development. Agile processes harness changes to the customer’s competitive advantage.”
Nguyên tắc số 2 là một sự thay đổi lớn cho những người đã quản lý hay làm việc với phương thức quản lý truyền thống. Nội dung của nó đã rất rõ ràng đó là chúng ta chào đón việc thay đổi yêu cầu từ khách hàng, kể cả khi mà phần lớn công việc đã được làm xong đi chăng nữa. Và chúng ta nên chấp nhận thay đổi với thái đội vui vẻ thay vì kêu ca phàn nàn. Điều này chưa từng nghe ở các phương thức quản lý ở project khác, nhưng nó là một phần cuộc sống của Agile ^^
Khách hàng đã nhận được sản phẩm sớm, thường xuyên. Do đó mà họ có thể nhìn thấy được tiến triển cũng như những vấn đề trong dự án. Vì vậy mà những thay đổi của họ đa phần là đều có ý nghĩa. Thay vì kêu ca phàn nàn chúng ta hãy tìm hiểu, bàn luận với khách hàng để xử lý những yêu cầu thay đổi một cách trơn tru nhất ^^
3. 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)
“Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.”
Nguyên tắc số 3 focus vào sự cần thiết của tốc độ giao hàng. Khoảng thời gian giao sản phẩm cho khách hàng được quy định tuỳ theo độ lớn của project. Tuy nhiên,khoảng thời gian ngắn hơn vẫn luôn được ưa thích hơn cả. Nó đặc biệt quan trọng khi chúng ta và khách hàng cần confirm để có những quyết định hay lựa chọn trong sản phẩm. Khi đó việc thường xuyên kiểm tra sản phẩm là chìa khoá để dự án được phát triển tốt nhất. Càng gửi sớm chúng ta càng có cái để thảo luận với khách hàng và đi đến những quyết định cho dự án.
4. Nhà kinh doanh và người phát triển phải cùng nhau làm việc hàng ngay trong suốt dự án
“Business people and developers must work together daily throughout the project.”
Nguyên tắc này được xây dựng dựa trên những nguyên tắc ở phía trên. Để nhận được những feedback sớm từ khách hàng không gì tốt hơn đó là team và khách hàng (ở đây là nhà kinh doanh) phải cùng nhau làm việc hằng ngày. Việc phải làm việc với nhau hằng ngày và nhận nhiều feedback có thể làm ta mệt mỏi một chút nhưng nó quan trọng vô cùng. Feedback tốt nhất cần được thực hiện bằng hội thoại mặt đối mặt (face-to-face- nguyên tắc số 6) hơn là những phương thức ngắt quãng khác như email, chat ... Để thực hiện được tốt việc đó, chúng ta cần thống nhất với khách hàng và đề ra một khoảng thời gian ngắn hàng ngày (timebox) để làm việc với nhau, và đặt mục tiêu (goal) trong cuộc hội thoại đó. Đối với công ty chúng ta với đặc thù out source phần mềm, khách hàng không thể ngồi làm việc trực tiếp với team. Khi đó hãy dùng các tool ad-hoc để nói chuyện hàng ngày như: skype, chatwork ...
5. 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
“Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.”
Việc sử dụng người thông minh và năng động có hiệu quả hơn bất cứ công cụ hay quy trình nào khác. Khi bạn đã chọn con đường quản lý dự án bằng Agile, tức là bạn đang quản lý những con người hiểu biết mà mọi thứ đều được lấy ra từ bên trong họ ^^
Những kỹ sư thời nay không muốn bị quản lý một cách chi tiết bằng những thứ giấy tờ công việc thừa thãi, hay những bản kế hoạch quá chi tiết của dự án, hay là những chỉ thị ép buộc từ trên xuống. Hãy tạo ra khoảng không trong dự án để các cá thể có thể phát triển, suy nghĩ, nâng cao tay nghề. Tin tưởng và tự tin vào các thành viên trong team tạo nên sức mạnh. Hãy support họ những gì họ cần và tin tưởng họ sẽ thành công. Support ở đây có thể là tool và resource, hay kiến thức dự phòng ... Nó không chỉ là việc bạn tin tưởng vào team mà hãy làm thế nào để tất cả các thành viên trong team đều có được sự tự tin, niền tin khi mà họ đã có được đầy đủ nguồn lực, kiến thức cần thiết để hoàn thành dự án ^^
6. Trao đổi trực tiếp mặt đối mặt là phương pháp hiệu quả nhất để truyền đạt thông tin
“The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.”
Nguyên tắc số 6 ở đây chính là nói về nghệ thuật giao tiếp ^^ Mặc dù chúng ta đã trải qua biết bao nhiêu năm với sự phát triển của khoa học kỹ thuật, nhưng việc giao tiếp của chúng ta vẫn sử dụng một dạng cơ bản. Vâng, sau tất cả thì việc giao tiếp mặt đối mặt vẫn là cách chủ yếu để chúng ta giao tiếp hàng nghìn năm nay. Đó là cách tốt nhất để ta giao tiếp, và cũng là phương thức mà chúng ta luyện tập nhiều nhất.
Như đã nói ở các nguyên tắc trước, thời gian là giới hạn. Phương thức Agile được tạo nên nhờ 2 đặc điểm chính đó là nhanh và linh động do đó việc mặt đối mặt để truyền đạt thông tin là cách nhanh nhất. Việc giao tiếp bằng các viết sẽ tốn thời gian để chúng ta viết, đương nhiên rồi ^-^, và đôi khi chúng ta sẽ bị hiểu sai đi hoặc thiếu thông tin trong quá trình phiên dịch.
Team và khách hàng ngày nay càng trở nên phân tán (chia cách) về mặt vị trí nên việc mặt đối mặt trở nên khó khăn hơn. Tuy nhiên bạn hãy dùng các công cụ hỗ trợ để thực hiện nó nhé (truyền hình hội nghị, video call)
còn nữa ...
Tham Khảo
- 12 nguyên tắc trong Agile
- Udemy