Hotline

0963 801 047
APEX Global
ACADEMY FOR PROFESSIONAL EXCELLENCE

Thực hành Cross-functional trong dự án Agile như thế nào hiệu quả?

2017-09-12  (1581)

Có một quản lý bộ phận phát triển phần mềm inbox và đặt ra 3 câu hỏi cho tôi:

  • Cross-functional trong dự án Agile hiểu như thế nào mới đúng?
  • Làm sao để thực hành Cross-functional trong dự án Agile?
  • Mối liên hệ giữa Cross-functional và Self-organized?

Đó là những câu hỏi thú vị, và đi thẳng vào vấn đề bạn cần hỗ trợ từ tôi và đội ngũ chuyên gia nhà Apex Global. Và tôi tin đây cũng là câu hỏi của nhiều quản lý bộ phận phát triển phần mềm, Scrum Master. Để trả lời 3 câu hỏi trên thì chúng ta phải trả lời các câu hỏi khác.

1) Functional là gì?

Functional tạm dịch là “chức năng” trong hoạt động kinh doanh. Ví dụ bạn dễ thấy nhất là: Chức năng Sales, chức năng Marketing, chức năng Nhân sự, … trong một hệ thống quản lý doanh nghiệp. Trong một chức năng Nhân sự sẽ có nhiều chức năng nhỏ hơn như: Chức năng tuyển dụng, chức năng đào tạo, chức năng C&B, …

cross-functional-agile-hieu02

(Hình ảnh chuyên gia Đề Đoàn – Chuyên gia cơ hữu của Apex Global chia sẻ chủ đề Agile Business Analyst ở cộng đồng Business Analyst Việt Nam)

2) Cross-functional team là gì?

Là tập hợp một nhóm người đến từ nhiều chức năng chuyên môn khác nhau (có kỹ năng, có kiến thức, có kinh nghiệm chuyên môn khác nhau) để cùng nhau hoàn thành một mục tiêu chung.

Ví dụ: Để triển khai hệ thống ERP trong doanh nghiệp thì thường các công ty tổ chức một đội dự án với các thành viên chủ chốt đến từ bộ phận tài chính, nhân sự, vận hành, sản xuất, … Mỗi thành viên có kinh nghiệm và chuyên môn khác nhau nhưng họ sẽ làm việc cùng nhau để đưa ra những quan điểm, góc nhìn dựa trên kinh nghiệm của mỗi thành viên để đóng góp vào dự án.

Bên cạnh đó, họ dựa vào mục tiêu chung ấy mà xác định hướng đi, phân chia công việc và mỗi thành viên đưa ra quan điểm khác nhau để cùng nhau giải quyết vấn đề, bổ trợ cho nhau dựa trên kinh nghiệm chuyên môn và qua trọng là cùng nhau sáng tạo để đạt được mục tiêu.

3) Cross-functional hiểu như thế nào mới đúng trong dự án Agile?

Trong kỹ thuật phát triển phần mềm (Software Engineering) thì có 4 chức năng chính:

  • Phân tích (Analysis)
  • Thiết kế (Design)
  • Triển khai mã nguồn (Coding)
  • Kiểm thử (Testing)

Với cách tiếp cận phát triển phần mềm truyền thống (Traditional Software Development) thì các bước được làm tuần tự từ phân tích đến kiểm thử. Nhưng cách làm này chuyển giao sản phẩm chậm so với kỳ vọng của khách hàng (người bỏ tiền mua giải pháp phần mềm). Khách hàng cần sử dụng sản phẩm phần mềm thật nhanh với những tính năng quan trọng nhất. Đây là giới hạn trong chu trình phát triển phần mềm so với kỳ vọng.

Agile ra đời và đưa hướng tiếp cận cross-functional để giải quyết giới hạn này. Cụ thể họ đưa ra khái niệm đội tự quản (Self-organized team) và được tổ chức một đội có chung vai trò “Development Team”. Trách nhiệm của đội này làm sao hiện thực hoá được các yêu cầu (User Story) thành sản phẩm phần mềm có thể sử dụng được, đạt chất lượng kỳ vọng của Product Owner và chuyển giao phần mềm liên tục ở cuối mỗi Sprint.

Bài viết liên quan: Làm sao để xây dựng Đội tự quản (Self-Organizing Team) trong dự án Agile?

cross-functional-agile-hieu01

4) Thực hành Cross-functional làm sao để hiệu quả?

Việc đầu tiên ở vai trò quản lý, bạn cần đảm bảo mọi người hiểu rằng trách nhiệm quan trọng nhất của “Development Team” là hiện thực hoá được các yêu cầu (Agile gọi là User Story) thành sản phẩm có giá trị, dùng được ngay, với chất lượng đạt như kỳ vọng. Với mỗi User Story thì Scrum Master và các thành viên của đội Development team cần đảm bảo cả đội cần trả lời gần giống nhau các câu hỏi:

  • Chúng ta đã hiểu yêu cầu này như thế nào?
  • Chúng ta thiết kế như thế nào là tốt nhất?
  • Chúng ta triển khai mã nguồn như thế nào là nhanh nhất?
  • Chúng ta cần kiểm thử cái gì để User Story này được nghiệm thu?
  • Chúng ta có thể gặp trở ngại gì trong việc tích hợp với các chức năng đã có?

Đây là những câu hỏi mà Scrum Master cần giúp team hiểu trước khi đưa ra ước lượng cho mỗi yêu cầu. Nếu sự đồng nhất của các câu trả lời khá xa nhau thì giá trị ước lượng mà team đưa ra có thể vô nghĩa (mọi người đang phán đoán) và luôn gặp vấn đề khi triển khai.

Đây là cách làm hay trong Agile, cách làm này đặt tất cả mọi người trạng thái phải trả lời các câu hỏi trên với giả định bản thân mình là người triển khai User Story đó. Nếu làm đúng và team đạt được mức độ trưởng thành nhất định thì đây là năng lượng từ team và là tiền đề thực hiện Self-organizing. Không Cross-functional được thì giất mơ để thực hiện Self-organizing là một giất mơ rất hảo huyền.

Bài viết liên quan: Vai trò đội phát triển (Development team) trong dự án Agile

4) Làm sao để người phát triển phần mềm có thể thực hiện công đoạn Testing?

Để thực hiện được Cross-functional thì đòi hỏi người phát triển phần mềm phải có kỹ năng testing. Tôi đã đặt ra câu hỏi “Ai là người test sản phẩm tốt nhất?” với nhiều nhà quản lý phát triển phần mềm. Phần đông trả lời là “Tester”, một số khác trả lời là “Quality Control”. Nhưng với dự án triển khai theo Agile thì cần hiểu khác đi.

Cách quản lý dự án truyền thống thì quản lý là người đưa ra ước lượng, họ có thể phỏng đoán thời lượng để kiểm thử dựa trên kinh nghiệm của tổ chức. Với dự án triển khai theo Agile thì công việc này được chuyển lại cho Đội phát triển. Vậy là bắc buộc các thành viên phải có kỹ năng kiểm thử và làm công việc kiểm thử.

Nếu việc tổ chức Backlog Grooming đạt yêu cầu thì tất cả mọi người đã tham gia viết test-case trong mỗi User Story. Họ đã thực hiện một phần công việc kiểm thử trước khi họ thiết kế sản phẩm. Để đội phát triển làm tốt thì công ty cần đào tạo tư duy testing, kỹ năng test cho người phát triển sản phẩm.

***

Đây là series bài viết về chủ đề “Ứng dụng Agile trong doanh nghiệp” tôi chia sẻ cho cộng đồng Agile Vietnam.

***

Để đánh giá mức độ trưởng thành trong việc thực hành Agile. Giờ bạn có thể đặt câu hỏi với những người đã làm Agile rằng “Đội dự án của bạn đã tổ chức được Cross-functional chưa?”. Có thể bạn sẽ bắt gặp được “Sự ậm ờ đầy thú vị!”.

By Cao Trần,