Nền tảng Cơ bản 7 phút đọc

PM vs EM vs TPM: Bạn thật sự đang đóng vai nào?

Project Manager, Engineering Manager, và Technical Program Manager thật ra làm gì trong shop phần mềm, và bạn đang làm hỗn hợp ba vai trò nào mà chưa nhận ra.

Mục lục
  1. Khi nào câu hỏi về vai trò thật sự quan trọng?
  2. Cái giá phải trả khi vai trò vẫn còn ngầm là gì?
  3. Phân chia vai trò ở team 5 người trông thế nào?
  4. Phân chia vai trò ở 50+ người trông thế nào?
  5. Template định nghĩa vai trò cụ thể là gì?
  6. Vai trò mơ hồ tạo ra những kiểu lỗi nào?
  7. Khi nào việc phân biệt vai trò là quá liều?
  8. Đi tiếp từ đây như thế nào?

Cuộc trò chuyện đầu tiên về việc ai-làm-gì trong một dự án phần mềm gần như bao giờ cũng bắt đầu từ chức danh, và gần như bao giờ cũng rối. Một người mang chức danh "Senior Engineer" thực ra đang làm việc của PM. Một người tên là "PM" lại đang làm việc của TPM. Còn một "EM" thì lại đang được nhờ ước lượng. Mục đích của chương này là tách ba vai trò đó ra một cách sạch sẽ, để bạn gọi đúng tên việc bạn đang thực sự làm hôm nay và biết việc nào nên uỷ quyền cho người khác.

Khi nào câu hỏi về vai trò thật sự quan trọng?

Có ba thời điểm.

Lúc kickoff dự án. Phải có người đứng tên sở hữu scope, schedule và status. Nếu cả ba người cùng nghĩ "chắc người kia sẽ lo", dự án sẽ trôi đi cả tháng trước khi có ai đó nhận ra. Ghi rõ vai trò ngay trong kickoff doc là cách bảo hiểm rẻ tiền nhất.

Lúc tuyển dụng. Một mô tả công việc trộn lẫn trách nhiệm EM và PM là công thức chắc chắn cho việc tuyển sai người và nhân viên thất vọng sau vài tháng. Tuyển đúng người luôn bắt đầu từ việc biết rõ mình đang cần vai nào.

Lúc trao đổi về sự nghiệp. Câu nói "tôi muốn phát triển" thường rơi vào một trong ba hướng: đóng góp cá nhân sâu hơn, quản lý người nhiều hơn, hoặc điều phối phạm vi rộng hơn. Mỗi hướng tương ứng với một vai trò khác nhau. Sếp bạn không thể giúp được nếu bạn không gọi tên ra được hướng mình chọn.

Cái giá phải trả khi vai trò vẫn còn ngầm là gì?

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

Quyết định bị kẹt. Hai người cùng nghĩ "chắc người kia sẽ quyết". Suốt hai tuần liền không có gì xảy ra. Đến lúc cuối cùng có ai đó ép phải quyết, các phương án tốt đã đóng cửa từ lâu.

Sai người làm sai việc. EM rốt cuộc lại đi viết status report vì không có PM; PM lại đi viết code vì không đủ engineering. Cả hai đều làm phần việc tốt thứ hai của mình và bỏ lỡ phần việc tốt nhất.

Stakeholder nhận tín hiệu mâu thuẫn. Sales hỏi PM về ETA, nhận một con số. Sau đó hỏi EM, nhận một con số khác. Khách hàng nghe được cả hai. Niềm tin bắt đầu bào mòn từ đó.

Phân chia vai trò ở team 5 người trông thế nào?

flowchart TB
    Lead[Tech Lead<br/>1 người] --> PM[Việc PM:<br/>scope, schedule, status]
    Lead --> EM[Việc EM:<br/>1-on-1, phát triển, tuyển]
    Lead --> TPM[Việc TPM:<br/>comms đa team]
    Lead --> IC[Việc IC:<br/>code, thiết kế]

Một người gánh cả bốn chiếc mũ. Thử thách lớn nhất là không để rơi chiếc nào: nếu tech lead dành 100% thời gian để code, chiếc mũ PM sẽ rơi xuống và dự án bắt đầu trôi. Cách phòng ngừa là kỷ luật về lịch - chặn buổi sáng cho việc IC, chặn một buổi chiều mỗi tuần cho 1-on-1, và viết status report đều đặn vào thứ Sáu.

Phân chia vai trò ở 50+ người trông thế nào?

flowchart TB
    VP[VP Eng] --> EM1[EM<br/>Team A]
    VP --> EM2[EM<br/>Team B]
    VP --> EM3[EM<br/>Team C]
    PMO[PM Lead] --> PM1[PM<br/>Dự án X]
    PMO --> PM2[PM<br/>Dự án Y]
    TPMO[TPM Lead] --> TPM1[TPM<br/>Initiative Z<br/>vượt A B C]
    EM1 -.cộng tác.-> PM1
    EM2 -.cộng tác.-> PM2
    EM3 -.cộng tác.-> TPM1

Khi tổ chức vượt 50 engineer, các vai trò bắt đầu tách ra. Mỗi EM phụ trách con người của một team (5-8 báo cáo). Mỗi PM phụ trách lịch trình của một dự án (thường trải dài 1-2 team). Mỗi TPM phụ trách một initiative liên team (3+ team hoặc vendor). Các vai trò này phối hợp với nhau theo cách rõ ràng: mỗi dự án đều có cả một EM (cấp engineer cho team) và một PM (chạy lịch trình). Chương về stakeholder sẽ nói tiếp về cách bộ ba này giao tiếp ra bên ngoài.

Template định nghĩa vai trò cụ thể là gì?

Đây là một block markdown ngắn, để trong README.md hoặc trong kickoff doc của dự án:

## Vai trò

| Vai trò     | Người        | Trách nhiệm                                     |
|-------------|--------------|-------------------------------------------------|
| Sponsor     | {{ Tên }}    | Phê duyệt scope và budget, gỡ blocker          |
| Tech Lead   | {{ Tên }}    | Sở hữu kiến trúc, mentor engineer              |
| PM          | {{ Tên }}    | Sở hữu schedule, status, đổi scope             |
| EM          | {{ Tên }}    | Sở hữu nhân sự, hiệu suất, giữ người           |
| TPM         | {{ Tên }}    | Sở hữu phối hợp đa team (nếu 2+ team)          |
| Engineer    | {{ Tên }}    | Xây cái này                                    |
| QA          | {{ Tên }}    | Kế hoạch test, tiêu chí ra mắt                 |
| Designer    | {{ Tên }}    | UX, tuân thủ design system                     |

## Quyền quyết định

- Đổi scope: PM (cần Sponsor duyệt nếu ảnh hưởng tới budget)
- Kiến trúc: Tech Lead (peer review cho thay đổi lớn)
- Tuyển dụng: EM (panel của team + sponsor)
- Chọn vendor: PM (có Tech Lead tham vấn)

## Đường escalation

Engineer -> Tech Lead -> EM -> VP Eng -> Sponsor

Phần "Quyền quyết định" là phần mà phần lớn các team bỏ qua, và cũng là chỗ phần lớn dự án bị kẹt. Khi không có nó, mọi quyết định mặc định sẽ bị đẩy ngược lên sponsor - vừa chậm, vừa không scale được.

Vai trò mơ hồ tạo ra những kiểu lỗi nào?

Có bốn kiểu lỗi cổ điển:

Khi nào việc phân biệt vai trò là quá liều?

Có hai tình huống.

Team hai người. Hai engineer xây một side project chẳng cần chính thức hoá gì cả về PM, EM hay TPM. Việc cần làm là ship.

Prototype có hạn thời gian rõ. Một spike hai tuần không có rủi ro lịch trình nào đáng để quản lý chính thức. Engineer senior cứ quyết và ghi lại kết quả là đủ.

Phân vai trò chỉ thật sự đáng phức tạp khi team vượt qua khoảng 5 engineer, khi dự án bắt đầu vượt biên giới của một team, hoặc khi không còn ai có thể giữ hết bối cảnh trong đầu được nữa.

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

Chương tiếp theo: ước lượng cơ bản - artifact đầu tiên và cụ thể nhất mà mọi PM đều phải sở hữu. Sau đó, theo dõi rủi ro và issue sẽ nói về cách giữ cho dự án an toàn khi đã bắt đầu chạy.

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

Chức danh tôi chỉ 'Senior Engineer' nhưng tôi điều dự án, vậy tôi là gì?
Bạn đang làm việc của PM mà không mang chức danh PM. Đó là chuyện rất bình thường ở các công ty dưới ~50 engineer - engineer senior trong dự án thường là người lead trên thực tế. Hãy ghi rõ vai trò trong kickoff doc để cả team biết ai quyết scope, ai trả lời các câu hỏi về status, ai chặn merge. Nếu không có handoff rõ ràng, mọi quyết định sẽ bị kẹt lại.
Khi nào team thật sự cần một PM riêng?
Khi dự án vượt qua ba team hoặc liên quan tới vendor, và lượng việc engineering thuần không còn đủ chỗ để chạy thêm các cuộc họp stakeholder hàng tuần. Dưới ngưỡng đó, một engineer senior cùng template status report là đủ. Vượt ngưỡng đó, chi phí điều phối (họp, comms, escalation) trở thành một công việc full-time riêng biệt.
EM làm về con người - tuần này qua tuần khác là làm gì?
Có ba mảng chính. Hiệu suất: từng người có đạt mục tiêu quý không, lộ trình phát triển ra sao, có cần tăng lương không. Rủi ro nghỉ việc: ai đang không hài lòng và vì sao. Tuyển dụng: cần tuyển vai nào tiếp theo và làm sao chốt được offer. Lịch của EM phần lớn xoay quanh các buổi 1-on-1 (chương 15), phỏng vấn, và chu kỳ đánh giá.
Một người có làm cả PM và EM được không?
Được, nhưng rất mệt. Hai công việc kéo về hai hướng ngược nhau: PM tối ưu cho việc giao hàng quý này, còn EM tối ưu cho hai năm tăng trưởng và giữ người. Khi dự án đang cháy, phần PM trong bạn sẽ hy sinh thời gian phát triển con người để có thêm thời gian giao hàng - và phần EM sẽ chịu thiệt. Phần lớn tech lead thành công đều xếp lịch rõ ràng mỗi ngày là đang đội mũ nào.