Case study Trung bình 7 phút đọc

Dự án quản vendor: khi phần lớn việc nằm ngoài

Cách quản một dự án phần mềm mà phần lớn việc do vendor bên ngoài làm. Cấu trúc hợp đồng, nhịp tuần, tiêu chí chấp nhận, và team nội bộ mỏng.

Mục lục
  1. Khi nào quản vendor là có lý?
  2. Cái giá khi quản vendor kém là gì?
  3. Team mỏng nội bộ trông thế nào?
  4. Cấu trúc hợp đồng trông thế nào?
  5. Nhịp tuần với vendor trông thế nào?
  6. Rủi ro tích hợp và cách xử ra sao?
  7. Scale lên đa vendor hoặc chương trình lớn ra sao?
  8. Quản vendor có thể tự tạo ra những lỗi nào?
  9. Khi nào quản vendor là hình sai?
  10. Đi tiếp từ đây như thế nào?

Một dự án vendor là hình hoàn toàn khác: team mà bạn quản không phải team đang làm việc. Việc của bạn nằm ở hợp đồng, scope, chấp nhận, và tích hợp. Case study này giới thiệu cấu trúc team nội bộ mỏng, nhịp tuần với vendor, và các artifact ngăn tranh chấp vendor biến thành thảm hoạ dự án.

Khi nào quản vendor là có lý?

Có ba tín hiệu chính.

Kỹ năng không có sẵn nội bộ. Một domain chuyên (tích hợp SAP, firmware embedded, tuân thủ một quy định cụ thể) - nơi xây kỹ năng đó còn đắt hơn mua.

Nhu cầu có hạn thời gian. Một dự án 6 tháng nhưng tuyển sẽ mất 4 tháng. Capacity của vendor có sẵn ngay hôm nay.

Dự đoán chi phí quan trọng. Hợp đồng vendor giá cố định cho sponsor một con số biết trước. Còn nội bộ thường kèm scope creep khó dự đoán.

Nếu việc thuộc lõi nghiệp vụ, sẽ kéo dài liên tục, và kỹ năng nội bộ vẫn khả thi, đừng outsource. Vendor chỉ phù hợp cho việc không cốt lõi và có hạn thời gian.

Cái giá khi quản vendor kém là gì?

Có ba kiểu lỗi thường gặp.

Vendor giao sai thứ. Spec mơ; vendor xây theo cách diễn giải của họ; gap lộ ra ở bước chấp nhận. Sửa cần đàm phán lại và mất thêm thời gian.

Ác mộng tích hợp. Vendor giao code, nội bộ phải tự tích hợp, và tích hợp tốn lâu hơn cả việc xây. Team nội bộ chưa chuẩn bị cho việc đó.

Khoá vendor. Vendor nắm phần lớn kiến thức; thay họ tốn đến mức bất khả thi. Dự án vô tình biến thành quan hệ vendor vĩnh viễn.

Team mỏng nội bộ trông thế nào?

flowchart TB
    InHouse[Team nội bộ] --> PM[PM<br/>scope, hợp đồng, status]
    InHouse --> SE[Engineer senior<br/>review tech, tích hợp]
    InHouse --> Buyer[Procurement<br/>hợp đồng, thanh toán]
    Vendor[Team vendor<br/>5-15 engineer] --> VL[Lead vendor<br/>sync tuần với PM]
    Vendor --> VEng[Engineer vendor]
    PM <-.sync tuần.-> VL
    SE <-.code review.-> VEng

Hai người nội bộ full-time, cộng support procurement bán thời gian. PM sở hữu quan hệ; engineer senior sở hữu bar kỹ thuật. Cùng nhau, hai vai này tốn khoảng 50% thời gian cho việc quản vendor; nửa còn lại dành cho phần tích hợp.

Cấu trúc hợp đồng trông thế nào?

Bản thân hợp đồng nằm ngoài scope của series, nhưng artifact bọc quanh hợp đồng thì không:

# Plan Dự án Vendor — {{ Tên dự án }}

## Vendor
{{ Tên vendor }}; liên hệ chính: {{ tên }}; SLA: {{ link }}

## Deliverable theo phase và thanh toán

| Phase | Deliverable | Tiêu chí chấp nhận | Thanh toán | Hạn |
|-------|-------------|--------------------|------------|-----|
| 1 | Doc kiến trúc | Engineer senior review; khớp hệ hiện có | $X | Tuần 4 |
| 2 | Tích hợp auth | Pass bộ test ta cung cấp; đạt SLA | $Y | Tuần 8 |
| 3 | Tính năng cốt alpha | Demo cho team nội bộ; test hiệu năng pass | $Z | Tuần 14 |
| 4 | Sẵn sàng production | Review bảo mật pass; runbook giao; support 30 ngày | $W | Tuần 20 |

## Quy trình chấp nhận mỗi phase
1. Vendor demo
2. Engineer nội bộ review theo tiêu chí (3 ngày)
3. Pass: thanh toán được cho phép; Fail: feedback viết, thử lại
4. Sau 2 lần fail cùng phase, kích escalation theo hợp đồng

## Out of scope (vendor không làm)
- Deploy production (nội bộ sở hữu)
- Oncall 24/7 (nội bộ sở hữu)
- Customer support (nội bộ sở hữu)
- Training cho team nội bộ (add-on riêng)

Có ba chi tiết quan trọng. Một, chấp nhận theo tiêu chí, không theo ý kiến. Hai, thanh toán gắn vào phase được chấp nhận. Ba, phần out-of-scope phải rõ để vendor không thể quay sang nói "chúng tôi tưởng anh sẽ làm cái đó".

Nhịp tuần với vendor trông thế nào?

sequenceDiagram
    participant PM as PM nội bộ
    participant VL as Lead vendor
    participant SE as SE nội bộ
    participant Sponsor as Sponsor
    PM->>VL: Thứ Hai: template status hạn thứ Tư
    VL->>PM: Thứ Tư: status viết (RAG, rủi ro, blocker)
    PM->>SE: Thứ Tư: điểm tech cần review
    SE->>VL: Thứ Năm: feedback code review
    PM->>VL: Thứ Năm: sync 30 phút (chỉ hỏi câu hỏi)
    PM->>Sponsor: Thứ Sáu: status rollup cho sponsor nội bộ

Status viết tuần từ phía vendor là thứ không thương lượng. Không có nó, PM bay mù. Buổi sync thứ Năm cần ngắn và có cấu trúc: chỉ hỏi câu hỏi trên status đã viết, đừng để nó thành cuộc đọc lại status.

Rủi ro tích hợp và cách xử ra sao?

Tích hợp là chỗ phần lớn dự án vendor fail ở bước chấp nhận. Một số phương án giảm thiểu chạy được:

Scale lên đa vendor hoặc chương trình lớn ra sao?

flowchart TB
    Sponsor[Sponsor] --> PMO[PM chương trình<br/>giám sát vendor]
    PMO --> V1[Vendor A<br/>xây front-end]
    PMO --> V2[Vendor B<br/>xây back-end]
    PMO --> V3[Vendor C<br/>QA / pen test]
    PMO --> Internal[Team nội bộ<br/>tích hợp + chấp nhận]

Một PM chương trình điều phối nhiều vendor. Mỗi vendor có hợp đồng riêng và nhịp tuần riêng; PM chương trình rollup status lại thành một bản chung. Team nội bộ lo phần tích hợp giữa các vendor, vì không vendor nào nhìn thấy cả bức tranh.

Quản vendor có thể tự tạo ra những lỗi nào?

Khi nào quản vendor là hình sai?

Có hai trường hợp.

Capability cốt lõi và liên tục. Nếu việc đó là lợi thế cạnh tranh của bạn và sẽ kéo dài mãi, hãy tuyển nội bộ thay. Quan hệ vendor có overhead mà về dài hạn việc tuyển sẽ bù đắp được.

Việc rất sáng tạo hoặc mang tính khám phá. Khó viết tiêu chí chấp nhận cho câu "tìm hướng sản phẩm đúng". Vendor chỉ giao được theo spec; nếu không có spec rõ, vấn đề nằm ở phía nội bộ.

Đi tiếp từ đây như thế nào?

Bạn đã hoàn tất phần case study. Chương tiếp theo: checklist chạy dự án - hub link mọi artifact bạn đã học. Sau đó, kết luận sẽ khép series với những bài học sống sót qua mọi hình dạng dự án.

Câu hỏi thường gặp

Team nội bộ thật sự làm gì?
Có ba việc mà vendor không làm thay được. (1) Scope và chấp nhận: quyết cái nào trong / ngoài và ký off deliverable. (2) Tích hợp: gắn deliverable của vendor vào hệ hiện có. (3) Review bảo mật/tuân thủ: đảm bảo việc vendor đạt chuẩn của bạn. Team nội bộ nhỏ (1-2 người) nhưng việc của họ thì không thay được.
Khác gì so với quản engineer nội bộ?
Có ba khác biệt. Một, nhịp comms chính thức hơn (status viết hàng tuần, theo hợp đồng). Hai, chấp nhận mang tính binary (đạt tiêu chí hay không, có tiền gắn vào). Ba, tin cậy được xây bằng giao hàng thật, không phải mặc định cho vì cùng team. Hãy dùng khung stakeholder nhưng coi vendor là Consulted, không phải Responsible cho outcome nghiệp vụ của bạn.
Tiêu chí chấp nhận gồm gì?
Cho mỗi deliverable: hành vi chức năng (pass test case), hiệu năng (đạt SLA latency), bảo mật (không phát hiện severity cao trong code review), và tài liệu (doc handover hoàn tất). Hãy gắn cột mốc thanh toán với chấp nhận, không gắn với ngày giao. Vendor giao đúng và được trả; vendor giao rác thì bạn giữ tiền cho đến khi họ fix.
Nếu vendor trễ ngày thì sao?
Dùng cùng khung như dự án cứu nhưng với đòn bẩy hợp đồng mạnh hơn. Tài liệu hoá trượt bằng văn bản (email, note chính thức). Kích mệnh đề phạt nếu hợp đồng có. Tệ nhất: chỉ trả cho phần đã giao, kết thúc, tìm vendor khác. Đừng chấp nhận trượt vĩnh viễn với hy vọng nó tự ổn; vendor không tự cứu được.