leuleuleu789
Senior Member
Như đã hứa với các anh em bên topic kia, hôm nay tôi lập thớt chia sẻ về tính chất công việc của những người tầm trên senior ở big tech.
Nội dung bài viết hướng đến hệ thống phân cấp ở big tech, không tính đến các cty khác. Tôi đã chứng kiến nhiều người mang title Principle hay CTO ở các cty khác nhưng khi vào big tech thì chỉ ngang với cấp bậc senior.
Để tiện cho việc tính cấp bậc, tôi lấy bậc của Facebook làm chuẩn. Bạn nào muốn biết L5 ở Facebook tương đương với bậc bao nhiêu ở Microsoft thì có thể dùng levels.fyi
Để viết về "trên senior làm gì" thì có thể phải sơ lược qua chút senior làm gì trước đã.
Senior (L5) ở big tech làm gì?
Để lên được vị trí senior ở big tech, bạn trước hết phải là một chuyên gia trong một phân khúc nhỏ: việc nào cụ thể giao cho bạn cũng làm được, và bạn có khả năng tự nghĩ ra việc được cho bản thân. Ngoài ra kĩ sư senior thường cũng phải có khả năng lãnh đạo nhóm nhỏ: từ 2-3 junior dev khác.
Ở tầm senior thì người ta không phải thắc mắc về khả năng code hoặc thuật toán của bạn nữa. Sự cách biệt giữa senior và junior thường là ở khả năng thiết kế (design) hệ thống. Nếu đếm số dòng code, thường senior dev phải có khả năng thấu hiếu đc cấu trúc của một code base từ 50k dòng đổ lại.
Staff (L6) ở big tech làm gì?
Đến tầng L6 thì hầu như không còn khái niệm "giao việc" cho kĩ sư nữa. Bạn phải hoàn toàn chịu trách nhiệm việc tự nghĩ ra việc cho bản thân và cho các đồng nghiệp xung quanh.
"Việc" ở đây nằm ở mức độ dự án (project) chứ không còn là việc vặt (task). Khi dùng từ "project", thường người ta nghĩ đến một công việc nhất định có thời gian tiến hành từ 2 quí trở lên.
Một trong những cách đơn giản nhất để phân biệt trình độ giữa L5 và L6 là mức độ to của project.
L5: project thường kéo dài 1-2 quí, lãnh đạo tối đa khoảng 3 devs.
L6: project thường kéo dài 1-2 năm, lãnh đạo tối đa từ 10-15 devs.
Để lãnh đạo các project kiểu lớn như vậy, L6 tất nhiên không chỉ mạnh về khả năng kĩ thuật mà còn phải rất mạnh về khả năng trình bày, đối thoại, và giải quyết các vấn đề về mặt con người.
Ngoài việc viết code, viết thiết kế phần mềm, lãnh đạo các dev khác, L6 thường làm thêm những phần như:
Về kĩ năng code: L6 thường ko còn chú trọng quá nhiều vào việc code một phần cụ thể nào đấy mà thường đảm nhận việc kiến tạo các thành phần khác nhau trong một hệ thống software lớn. "Phần" ở đây có thể là module trong một code base đồng nhất (monolithic) hoặc từng service trong thiết kế microservices (đến đây thì khả năng tự dịch sang tiếng Việt của tôi chịu rồi )
..L7 lần sau viết tiếp
Nội dung bài viết hướng đến hệ thống phân cấp ở big tech, không tính đến các cty khác. Tôi đã chứng kiến nhiều người mang title Principle hay CTO ở các cty khác nhưng khi vào big tech thì chỉ ngang với cấp bậc senior.
Để tiện cho việc tính cấp bậc, tôi lấy bậc của Facebook làm chuẩn. Bạn nào muốn biết L5 ở Facebook tương đương với bậc bao nhiêu ở Microsoft thì có thể dùng levels.fyi
Để viết về "trên senior làm gì" thì có thể phải sơ lược qua chút senior làm gì trước đã.
Senior (L5) ở big tech làm gì?
Để lên được vị trí senior ở big tech, bạn trước hết phải là một chuyên gia trong một phân khúc nhỏ: việc nào cụ thể giao cho bạn cũng làm được, và bạn có khả năng tự nghĩ ra việc được cho bản thân. Ngoài ra kĩ sư senior thường cũng phải có khả năng lãnh đạo nhóm nhỏ: từ 2-3 junior dev khác.
Ở tầm senior thì người ta không phải thắc mắc về khả năng code hoặc thuật toán của bạn nữa. Sự cách biệt giữa senior và junior thường là ở khả năng thiết kế (design) hệ thống. Nếu đếm số dòng code, thường senior dev phải có khả năng thấu hiếu đc cấu trúc của một code base từ 50k dòng đổ lại.
Staff (L6) ở big tech làm gì?
Đến tầng L6 thì hầu như không còn khái niệm "giao việc" cho kĩ sư nữa. Bạn phải hoàn toàn chịu trách nhiệm việc tự nghĩ ra việc cho bản thân và cho các đồng nghiệp xung quanh.
"Việc" ở đây nằm ở mức độ dự án (project) chứ không còn là việc vặt (task). Khi dùng từ "project", thường người ta nghĩ đến một công việc nhất định có thời gian tiến hành từ 2 quí trở lên.
Một trong những cách đơn giản nhất để phân biệt trình độ giữa L5 và L6 là mức độ to của project.
L5: project thường kéo dài 1-2 quí, lãnh đạo tối đa khoảng 3 devs.
L6: project thường kéo dài 1-2 năm, lãnh đạo tối đa từ 10-15 devs.
Để lãnh đạo các project kiểu lớn như vậy, L6 tất nhiên không chỉ mạnh về khả năng kĩ thuật mà còn phải rất mạnh về khả năng trình bày, đối thoại, và giải quyết các vấn đề về mặt con người.
Ngoài việc viết code, viết thiết kế phần mềm, lãnh đạo các dev khác, L6 thường làm thêm những phần như:
- Đối thoại với các đội khác để thoả thuận về phần việc. Ví dụ phần mềm của bạn phụ thuộc vào library của đội X sở hữu, việc của L6 là phải đến gặp trưởng đội X và yêu cầu "tôi cần API a, b, c cho project của tôi trong vòng 2 quí tới, đội của bạn có đáp ứng được không?"
- Nói chuyện trước đám đông: L6 thường tổ chức các buổi tech talk để quảng bá về project của đội hắn lãnh đạo. Nếu bạn chưa bao giờ nói chuyện với đám đông khoảng 50 người trở lên thì bạn nên suy tính thêm vào "nói chuyện trước đám đông" vào trong nhóm những kĩ năng bạn cần phát triển.
- Giải quyết mâu thuẫn: nếu trong dự án lớn như vậy thì việc có nhiều định hướng kĩ thuật khác nhau là khó tránh khỏi (dùng angular hay react, dùng pytorch hay tensorflow, cải tiến hay viết lại từ đầu?...). L6 nhiệm vụ là phải đưa ra quyết định kĩ thuật hợp lí và thuyết phục đc đa số mọi người vì sao đưa ra quyết định kĩ thuật đấy. Phần này các bạn chú ý là phải dựa trên khả năng lí lẽ của bạn chứ không phải cứ lôi danh "lãnh đạo dự án" hay L6 để đưa quyết định là người ta tâm phục khẩu phục được.
Về kĩ năng code: L6 thường ko còn chú trọng quá nhiều vào việc code một phần cụ thể nào đấy mà thường đảm nhận việc kiến tạo các thành phần khác nhau trong một hệ thống software lớn. "Phần" ở đây có thể là module trong một code base đồng nhất (monolithic) hoặc từng service trong thiết kế microservices (đến đây thì khả năng tự dịch sang tiếng Việt của tôi chịu rồi )
..L7 lần sau viết tiếp