Menu
ESC

Nhập từ khóa để tìm kiếm

↑↓ Di chuyển
Enter Mở
ESC Đóng

Đang tải...

Bài 10 — Developers / Dev Team trong Scrum

Agile Project Management Bài 10/60

Mở đầu — vì sao bài này quan trọng

Trong Scrum, người ta hay dành nhiều ánh đèn sân khấu cho hai vai trò "nghe oai": Scrum Master và Product Owner. Nhưng nếu bạn hỏi một câu thẳng thắn — "Ai là người thực sự tạo ra giá trị, biến ý tưởng thành phần mềm chạy được, thành sản phẩm khách hàng cầm trên tay?" — câu trả lời luôn là: Developers, hay còn gọi là Dev Team.

Đây chính là nhóm người "đổ mồ hôi" mỗi Sprint. Họ là lực lượng sản xuất. Trong Scrum Guide phiên bản 2020, ba vai trò của Scrum Team gồm Product Owner, Scrum Master và Developers — lưu ý cách dùng từ. Trước 2020, người ta gọi là "Development Team" như một nhóm tách biệt; từ 2020, Scrum Guide cố tình gọi họ là "Developers" và đặt tất cả vào chung một Scrum Team duy nhất, để xóa bỏ cảm giác "chúng tôi và bọn họ" — tức là không còn cảnh PO ngồi một bên, dev ngồi một bên như hai phe đối đầu.

Vì sao bài này quan trọng với một Project Manager đang chuyển sang Agile? Bởi vì cách bạn hiểu — và cách bạn đối xử — với Developers sẽ quyết định 80% việc Scrum của bạn có thực sự hoạt động hay chỉ là "Scrum giả" (zombie Scrum). Rất nhiều PM mang theo thói quen cũ: phân chia công việc cho từng người, ép deadline, kiểm soát từng giờ công. Khi áp lên một Dev Team Scrum đúng nghĩa, nó phá vỡ chính cơ chế giúp đội tự tổ chức và tăng tốc. Bài này giúp bạn hiểu Developers thực sự là ai, họ vận hành theo nguyên lý nào, và làm sao để họ phát huy hết sức.

Khái niệm cốt lõi

Theo Scrum Guide, Developers là những người trong Scrum Team cam kết tạo ra bất kỳ khía cạnh nào của một Increment (phần sản phẩm hoàn chỉnh, dùng được) trong mỗi Sprint. "Developers" ở đây không có nghĩa hẹp là "lập trình viên". Đó là một thuật ngữ bao trùm: tester, designer, business analyst, data engineer, kỹ sư DevOps... bất kỳ ai đóng góp vào việc tạo Increment đều là "Developer" trong ngôn ngữ Scrum.

Có hai đặc tính nền tảng định nghĩa nên một Dev Team đúng nghĩa: cross-functional (đa năng) và self-organizing/self-managing (tự tổ chức / tự quản lý).

Cross-functional — đội sở hữu đủ mọi kỹ năng cần thiết

Cross-functional không có nghĩa mỗi cá nhân phải biết tất cả. Nó có nghĩa là tập thể (collectively) đội sở hữu đủ mọi kỹ năng cần để biến một item trong Sprint Backlog thành "Done" mà không phải phụ thuộc vào người ngoài đội.

Hãy hình dung sự khác biệt. Trong mô hình truyền thống, một tính năng đi qua nhiều phòng ban: phòng phân tích viết tài liệu, ném sang phòng lập trình; lập trình xong ném sang phòng test; test xong chờ phòng vận hành deploy. Mỗi lần "ném qua tường" (hand-off) là một lần chờ đợi, một lần thông tin thất thoát. Một Dev Team cross-functional gom tất cả những kỹ năng đó vào trong một đội: trong đội đã có người phân tích, người code, người test, người lo triển khai. Họ tự đi từ đầu đến cuối.

Lợi ích cốt lõi: giảm phụ thuộc bên ngoài, giảm thời gian chờ, tăng tốc độ giao hàng và tăng tính sở hữu. Khi đội tự lo được mọi việc, họ không còn lý do để đổ lỗi "tại phòng kia chậm".

Self-organizing & self-managing — đội tự quyết cách làm

Đây là nguyên tắc dễ bị hiểu sai nhất. Self-organizing nghĩa là: không ai từ bên ngoài đội được phép chỉ đạo Developers phải biến Product Backlog thành Increment bằng cách nào. Đội tự quyết.

Cụ thể, Developers tự mình:

  • Tạo kế hoạch cho Sprint, tức là Sprint Backlog;
  • Cùng nhau định nghĩa và tuân thủ Definition of Done (chất lượng);
  • Hằng ngày điều chỉnh kế hoạch để hướng tới mục tiêu Sprint (Sprint Goal);
  • Phân chia công việc với nhau như những chuyên gia, chịu trách nhiệm lẫn nhau (hold each other accountable).
Hãy phân biệt rõ ranh giới: Product Owner quyết định "cái gì" (What) và "tại sao" (Why) — tức là xây gì, ưu tiên gì, vì giá trị nào. Developers quyết định "như thế nào" (How) — kiến trúc, công nghệ, cách chia task, ai làm gì, làm bao nhiêu trong một Sprint. Scrum Master không phân việc cho ai cả; vai trò của Scrum Master là tháo gỡ chướng ngại và bảo vệ không gian tự tổ chức đó.

Trong Scrum Guide 2020, từ "self-organizing" được nâng cấp lên thành "self-managing" để nhấn mạnh: đội không chỉ tự sắp xếp công việc kỹ thuật, mà còn tự quản lý chính mình — quyết định ai làm gì, khi nào, và bằng cách nào.

Một số đặc điểm khác cần nhớ

Quy mô. Scrum Guide khuyến nghị toàn bộ Scrum Team thường có 10 người hoặc ít hơn. Đội nhỏ thì giao tiếp nhanh, năng suất cao. Đội quá lớn sinh ra quá nhiều kênh giao tiếp và phối hợp phức tạp — khi đó nên cân nhắc tách thành nhiều Scrum Team cùng làm trên một sản phẩm.

Không có chức danh phụ, không có sub-team. Trong Dev Team, Scrum không công nhận các "chức danh" như "kiến trúc sư trưởng", "tester chính" hay các tiểu đội riêng (như "đội QA", "đội backend"). Trên giấy tờ công ty bạn có thể vẫn có những chức danh đó, nhưng bên trong Scrum, mọi người đều là Developer, cùng chịu trách nhiệm chung về Increment. Điều này tránh tâm lý "việc này không phải của tôi".

Trách nhiệm tập thể (collective accountability). Cả đội cùng chịu trách nhiệm về kết quả Sprint, không tách riêng "lỗi của bạn A". Khi một item chưa Done, đó là vấn đề của cả đội cần cùng giải quyết, không phải để chỉ tay.

Tình huống thực tế

Tình huống 1 — Đội "đa năng giả" tại một fintech ở TP.HCM

Một startup fintech tại TP.HCM (tạm gọi là PayViet), khoảng 40 nhân sự, tuyên bố làm Scrum. Họ có một "Dev Team" 8 người nhưng thực ra chia ngầm: 3 backend, 2 frontend, 1 tester, 2 người "chờ việc". Mỗi Sprint hai tuần, họ commit 10 user story. Đến ngày Sprint Review, đều đặn chỉ Done được 4-5 story.

Khi phân tích, vấn đề lộ ra: tất cả story đều dồn ứ ở khâu test, vì chỉ có một tester. Backend làm xong từ ngày thứ 5, nhưng phải xếp hàng chờ tester rảnh. Tester quá tải, làm không kịp, các story "gần xong" chất đống đến cuối Sprint rồi trượt. Đây không phải đội cross-functional — đó là mô hình "ném qua tường" thu nhỏ vào trong một đội.

Cách họ sửa: thay vì để một mình tester gánh, đội thống nhất rằng testing là trách nhiệm của cả đội. Hai bạn backend học viết automated test và cùng test thủ công những phần đơn giản; tester chuyển sang tập trung vào kịch bản phức tạp và xây dựng bộ test tự động. Sau ba Sprint, throughput tăng từ ~4 lên ~8 story mỗi Sprint, mà không thêm một người nào.

Bài học: Cross-functional là thuộc tính của cả đội, không phải của cá nhân. Khi một kỹ năng chỉ nằm ở một người, người đó trở thành nút thắt cổ chai (bottleneck). Hãy lan tỏa kỹ năng để bất kỳ item nào cũng có thể đi suốt từ đầu đến cuối trong đội.

Tình huống 2 — Quyền tự tổ chức bị Project Manager bóp nghẹt

Một công ty gia công phần mềm (outsourcing) ở Đà Nẵng nhận dự án cho khách hàng Nhật. Theo thói quen cũ, anh PM mỗi sáng họp Daily Scrum lại đứng ra phân từng task cho từng người: "Hùng làm màn hình login, Lan làm API thanh toán, Tú test module A". Anh còn lập bảng Excel theo dõi từng giờ công của mỗi người.

Kết quả: đội trở nên thụ động. Không ai chủ động nhận thêm việc khi xong sớm, vì "chờ PM giao". Khi một bạn gặp lỗi khó, bạn ấy giấu vì sợ bị đánh giá. Daily Scrum biến thành buổi báo cáo cho sếp thay vì buổi đồng bộ giữa các đồng đội. Velocity đứng yên suốt nhiều tháng.

Sau khi được một Agile Coach tư vấn, anh PM lùi lại một bước. Anh ngừng phân task; thay vào đó để đội tự kéo (pull) việc từ Sprint Backlog theo thứ tự ưu tiên. Daily Scrum trở thành buổi đội tự lên kế hoạch cho 24 giờ tới, anh chỉ tham gia với tư cách hỗ trợ tháo gỡ chướng ngại. Ba tháng sau, đội bắt đầu tự đề xuất cải tiến kỹ thuật, tự chia cặp làm việc khi gặp việc khó, và tốc độ giao hàng ổn định hơn hẳn.

Bài học: Tự tổ chức không phải là "thả nổi". Đó là chuyển từ "đẩy việc" (push, sếp giao) sang "kéo việc" (pull, đội tự nhận). Khi PM ôm hết quyền quyết định "how", đội mất động lực và mất luôn trí tuệ tập thể. Vai trò mới của bạn là tạo môi trường, không phải điều phối từng tay người.

Tình huống 3 — Đội quá lớn và cái giá của giao tiếp

Một ngân hàng số ở Đông Nam Á muốn tăng tốc nên gộp 14 lập trình viên vào một Dev Team "cho mạnh". Nghịch lý xảy ra: đội càng đông, mọi thứ càng chậm. Daily Scrum kéo dài 35-40 phút vì 14 người ai cũng nói. Sprint Planning mất nửa ngày mà vẫn rối. Số kênh giao tiếp giữa các thành viên tăng theo cấp số nhân — với 14 người là gần 91 cặp tương tác có thể, so với chỉ 21 cặp khi đội có 7 người.

Họ tách thành hai Scrum Team, mỗi đội 7 người, mỗi đội cross-functional và sở hữu một phần sản phẩm rõ ràng. Daily Scrum trở lại đúng 15 phút. Tốc độ ra quyết định nhanh hẳn.

Bài học: "Nhiều người hơn" không đồng nghĩa "nhanh hơn". Đội Scrum hiệu quả là đội đủ nhỏ để giữ sự nhanh nhẹn, nhưng đủ lớn để hoàn thành công việc có ý nghĩa trong một Sprint. Mốc "10 người hoặc ít hơn" cho cả Scrum Team là một chỉ dẫn đáng tôn trọng.

Hướng dẫn từng bước

Nếu bạn đang xây dựng hoặc cải tổ một Dev Team, đây là lộ trình thực tế:

  • Lập đội theo nguyên tắc cross-functional. Liệt kê tất cả kỹ năng cần để đưa một tính năng từ ý tưởng đến "Done" (phân tích, thiết kế, code front/back, test, triển khai). Đảm bảo tập thể đội phủ hết các kỹ năng đó. Nếu thiếu, hãy tuyển hoặc đào tạo, đừng phụ thuộc đội ngoài.
  • Giữ quy mô hợp lý. Nhắm tới Scrum Team từ khoảng 5 đến 9 người (tổng cộng cả PO, SM). Quá nhỏ thì thiếu kỹ năng; quá lớn thì giao tiếp nặng nề.
  • Cùng nhau xây Definition of Done. Để đội tự thống nhất tiêu chuẩn "thế nào là xong" (đã review, đã test, đã tích hợp, đã viết tài liệu...). Đây là cam kết chất lượng do chính đội đặt ra và tuân thủ.
  • Trao quyền quyết định "how". Tuyên bố rõ ràng và nhất quán: PO quyết "cái gì/tại sao", đội quyết "như thế nào". Ngừng phân task từ trên xuống. Để đội tự kéo việc từ Sprint Backlog.
  • Thiết lập cơ chế trách nhiệm tập thể. Khuyến khích đội tự chịu trách nhiệm với nhau (peer accountability) thay vì báo cáo lên một người. Khi một item kẹt, đó là việc của cả đội xúm vào, không phải lỗi cá nhân.
  • Lan tỏa kỹ năng để xóa nút thắt. Khuyến khích pairing, chia sẻ kiến thức, "T-shaped skills" (mỗi người giỏi sâu một mảng nhưng biết rộng nhiều mảng) để không phụ thuộc vào một cá nhân duy nhất.
  • Bảo vệ đội khỏi can thiệp bên ngoài. Trong Sprint, không ai được tự ý thêm việc hay thay đổi phạm vi của đội. Đây là vai trò Scrum Master cần giữ vững.

Lỗi thường gặp & mẹo

Lỗi: Hiểu "Developers" chỉ là lập trình viên. Hệ quả là tester, designer, BA bị xem là "người ngoài". Mẹo: nhắc cả đội rằng mọi người đóng góp vào Increment đều là Developer, bình đẳng trách nhiệm.

Lỗi: PM/sếp phân task cho từng người. Đây là sai lầm phổ biến nhất với người chuyển từ quản lý dự án truyền thống. Nó giết chết tự tổ chức. Mẹo: chuyển sang mô hình pull — đội tự nhận việc theo ưu tiên.

Lỗi: Cross-functional trên giấy nhưng silo bên trong. Đội có đủ vai trò nhưng mỗi người chỉ làm đúng phần mình, dồn ứ ở một khâu. Mẹo: theo dõi xem công việc có "chảy" suốt không; nếu nghẽn ở một kỹ năng, hãy lan tỏa kỹ năng đó.

Lỗi: Đội quá đông cho "chắc ăn". Mẹo: tách đội khi vượt quá 9-10 người; ưu tiên nhiều đội nhỏ cross-functional hơn một đội khổng lồ.

Lỗi: Đổ lỗi cá nhân khi trượt Sprint. Phá vỡ tinh thần tập thể và sự an toàn tâm lý. Mẹo: nói về "đội chúng ta học được gì", không nói "ai làm hỏng".

Mẹo vàng: Đo lường sức khỏe của Dev Team không chỉ bằng velocity, mà bằng việc đội có chủ động không — họ tự đề xuất cải tiến, tự nhận việc khó, tự giải quyết chướng ngại trong tầm tay. Đó mới là dấu hiệu một đội tự tổ chức thực sự.

Bài tập thực hành

  • Lập bản đồ kỹ năng (skill matrix). Vẽ một bảng: hàng là tên thành viên trong đội, cột là các kỹ năng cần thiết (phân tích, frontend, backend, test, deploy...). Đánh dấu ai biết gì. Tìm xem kỹ năng nào chỉ có một người sở hữu — đó chính là rủi ro nút thắt cổ chai. Đề xuất kế hoạch lan tỏa kỹ năng đó.
  • Audit quyền tự tổ chức. Quan sát (hoặc hồi tưởng) một Daily Scrum của đội bạn. Trả lời: Ai quyết định ai làm task nào? Nếu câu trả lời là "sếp/PM", hãy viết ra một kế hoạch cụ thể để chuyển sang mô hình đội tự kéo việc trong 3 Sprint tới.
  • Phân tách What vs How. Lấy 5 quyết định gần đây trong dự án của bạn (ví dụ: chọn database, ưu tiên tính năng A trước B, chọn framework, định nghĩa luồng nghiệp vụ...). Phân loại từng quyết định thuộc về "What/Why" (của PO) hay "How" (của Developers). Có quyết định nào bị nhầm chủ thể không?
  • Tính kênh giao tiếp. Với công thức số cặp tương tác = n(n-1)/2, tính số kênh giao tiếp cho đội 5 người, 7 người và 12 người. Suy ngẫm về ý nghĩa của con số này với quy mô đội của bạn.

Tóm tắt

  • Developers (Dev Team) là lực lượng tạo ra Increment mỗi Sprint — không chỉ lập trình viên, mà mọi người đóng góp vào sản phẩm hoàn chỉnh.
  • Hai đặc tính nền tảng: cross-functional (tập thể sở hữu đủ mọi kỹ năng để tự đi từ đầu đến cuối, không phụ thuộc bên ngoài) và self-organizing/self-managing (đội tự quyết cách làm).
  • Ranh giới vai trò: PO quyết What/Why, Developers quyết How. Không ai bên ngoài được chỉ đạo đội phải làm bằng cách nào.
  • Đội nên nhỏ (Scrum Team thường ≤ 10 người), không có chức danh phụ hay tiểu đội, và chịu trách nhiệm tập thể về kết quả.
  • Sai lầm chí mạng của PM chuyển sang Agile là phân task từ trên xuống và kiểm soát từng người — nó phá vỡ chính cơ chế giúp Scrum tăng tốc.
  • Sức mạnh thực sự của Scrum nằm ở một Dev Team chủ động, tự tin và tự chịu trách nhiệm. Nhiệm vụ của bạn là tạo môi trường cho điều đó, không phải điều khiển từng đôi tay.