Technical Lead là một trong những vị trí cao trên con đường sự nghiệp IT (có thể nói là vị trí cao nhất của developer nếu không muốn chuyển hoàn toàn sang quản lý), điều đó đồng nghĩa với trách nhiệm và thử thách rất lớn. Họ có vai trò quan trọng và dẫn đầu trong một team phát triển dự án phần mềm. Bài viết phỏng vấn sau đây của GrowUpWork với anh Nguyễn Huy Phúc một Technical Leader lão làng, với chủ đề "Chia sẻ kinh nghiệm làm việc thực tế ở vị trí Technical Lead"
Anh Nguyễn Huy Phúc sau khi tốt nghiệp kỹ sư phần mềm tại trường Đại học Khoa học Tự nhiên tại TPHCM, anh đã bắt đầu sự nghiệp trong ngành IT, tính đến nay đã được hơn 14 năm trong nghề. Anh Phúc đã từng đảm nhận qua các vị trí như Senior Software Engineer, Team Leader và hiện tại là Technical Lead tại các công ty như Vigilant Solutions (giờ là Motorola Solutions), FPT Software, Dentsu Việt Nam và Dentsu Global. GrowUpWork rất hân hạnh khi nhận được một số chia sẻ của anh về kinh nghiệm làm việc với vai trò Teanical Lead, xin gửi đến các đọc giả qua bài viết dưới đây:
Chủ đề EXPERTS TALK:
"Chia sẻ kinh nghiệm làm việc thực tế ở vị trí Technical Lead".
Để trở thành Technical Lead thì thông thường sẽ trải qua các giai đoạn:
Lập trình giỏi thì chắc chắn rồi, Technical Lead là một vị trí đòi hỏi bạn không chỉ biết làm mà phải làm giỏi hơn những người khác, có vậy nói họ mới nghe và thực hiện theo. Technical Lead khác với các vị trí quản lý như PM hoặc Technical Architect họ thiên về quản lý hoặc đưa ra giải pháp hơn là tự mình thực hiện. Nói như vậy, không có nghĩa giỏi là đủ, Technical lead vẫn phải đảm bảo một số kỹ năng quản lý, kỹ năng giao tiếp và kỹ năng mềm khác để củng cố vị trí của mình.
Về kiến thức học vấn, không quan trọng phải tốt nghiệp ĐH danh tiếng hay phải đạt những chứng chỉ thông dụng (tất nhiên có thì rất tốt), cái quan trọng nhất là mình phải có nền tảng cơ bản vững chắc, và hầu hết kiến thức cơ bản đều được dạy ở các trường ĐH, CĐ.
Tôi có biết những người có nhiều hơn 10 năm làm developer, nhưng vẫn chỉ là senior developer, họ có thể rất giỏi trong việc dev nhưng không muốn hoặc không có kỹ năng teamwork đặc biệt trong việc lãnh đạo một nhóm làm việc hiệu quả.
Về kinh nghiệm, đi làm lâu năm chưa chắc đã có kinh nghiệm nhiều bởi vì có thể có một số trường hợp trong chừng đó năm đi làm mà chỉ làm một ứng dụng duy nhất trên một ngôn ngữ duy nhất lặp đi lặp lại, nghĩa là nhiều năm làm chưa chắc đã có nhiều kinh nghiệm!
Kinh nghiệm cũng không hẳn phải đi làm mới có, ngay từ thời sinh viên, mình có thể tích lũy kinh nghiệm bằng cách tham gia các dự án open source hoặc đi làm freelance, hoặc tự viết dự án của riêng mình giống như một dạng startup đó!
Như vậy, để trở thành Technical Lead thì quan trọng là sự tích lũy thực tế của bản thân developer bao gồm cả kiến thức và kinh nghiệm làm việc. Điều này không hoàn toàn có thể đo lường được bằng số năm kinh nghiệm, số dự án hay số lượng kiến thức, kỹ thuật mà bạn được học, bởi vậy mới cần đến phỏng vấn thực tế nhỉ chứ không chỉ điền các thông tin trong CV là được tuyển nhỉ?
Nói về chuyên môn thì khi là một Technical Lead, bạn sẽ phải chịu trách nhiệm cho mọi quyết định kỹ thuật mà bạn và nhóm của bạn thực hiện. Chính vì vậy kiến thức kỹ thuật vững chắc là rất quan trọng! Mà kiến thức chuyên môn cũng sẽ chia thành nhiều nhóm lĩnh vực khác nhau như Web, System, Android, iOS... tương ứng cho các vị trí Technical Lead.
Dù cho Technical Lead có thể không phải là người thực hiện và chịu trách nhiệm toàn bộ tính năng chi tiết (do các developer khác trong nhóm thực hiện) nhưng bạn vẫn phải chịu trách nhiệm tổng thể về giải pháp và thực thi kỹ thuật mang tính cốt lõi của dự án.
Hơn nữa, để làm tốt chuyên môn của một người dẫn đầu thì Technical lead phải thực sự am hiểu về Technical Stack (bao gồm nhưng không giới hạn ở ngôn ngữ lập trình, khuôn khổ, kho dữ liệu, thư viện mà còn là giải pháp giám sát, quản lý).
Như vậy, về cơ bản một Technical Lead phải thỏa hai điều kiện là giỏi về technical và có khả năng lãnh đạo, điều hành nhóm các developer dưới quyền.
Bạn cũng cần am hiểu rộng hơn về lĩnh vực liên quan như về phần cứng, kết nối mạng, kiến trúc hệ thống, kiến trúc DB, FrontEnd... để khi có phát sinh yêu cầu mới bạn có thể đưa ra quyết định thực thi một cách nhanh chóng và chính xác! Thậm chí đôi khi bạn cũng phải thực hiện các yêu cầu thiết kế giao diện cho phần mềm và hãy vui vẻ với tất cả những điều đó.
Bên cạnh kỹ năng chuyên môn là kỹ thuật bạn cần phải trang bị cho mình những kỹ năng đặc trưng và quan trọng khi ở vị trí Technical Lead.
Thứ nhất là kỹ năng giao tiếp. Là một Technical Lead bạn sẽ thấy mình có vài trò quan trọng trong giao tiếp và kết nối với mọi người ở nhiều nhóm khác nhau: Nhóm quản lý, nhóm kiểm tra chất lượng, nhóm phân tích chức năng, cùng các trưởng nhóm kỹ thuật khác, business solution, marketing, v.v.
Thứ hai là kỹ năng hướng dẫn, cố vấn cho người khác. Vai trò của kỹ năng này là giữ cho nhóm phát triển có động lực để cải thiện kỹ năng của họ và tạo ra một sản phẩm chất lượng tuyệt vời. Là leader, bạn sẽ cần hiểu rõ năng lực của từng thành viên trong nhóm để phân chia nhiệm vụ cũng như hướng dẫn bổ sung thêm cho họ về kỹ năng chuyên môn còn yếu.
Kỹ năng thứ ba là khả năng giải quyết xung đột. Điểm này là một trong những điểm quan trọng và phức tạp nhất bởi vì Technical lead luôn sẽ phải đối mặt và cần giải quyết xung đột giữa các thành viên trong nhóm. Đặc biệt khi có các thành viên lâu năm, họ thường có nhiều quan điểm và giải pháp khác nhau, bạn cần đưa ra một quyết định phù hợp và công bằng để duy trì sự kết nối và làm việc hiệu quả trong nhóm.
Nói một cách tổng quát thì về kỹ thuật Full Stack Developer có thể đảm bảo được công việc của Technical Lead, nhưng về khả năng quản lý thì cần xem xét thêm vì các Full Stack Developer thường có xu hướng làm việc độc lập một mình hơn là làm việc cùng một nhóm.
Một điểm khác là Full Stack Developer thường dùng để nói về lĩnh vực Web, trong khi Technical Lead lại phổ biến hơn trong các lĩnh vực phần mềm khác như App, System...
Đương nhiên là không thể nào thiếu code rồi, dù bạn đang ở vị trí dẫn dắt thì việc lập trình vẫn luôn là một phần trong công việc thường ngày. Sau đó, Technical Lead cần dành thời gian để review code, đây là một khâu thường bị một số công ty nhỏ không chú trọng nhưng thực ra lại rất quan trọng về lâu dài!
Ngoài ra Technical Lead sẽ phải thường xuyên research cập nhật kiến thức mới cũng như giải đáp thắc mắc và hướng dẫn cho các member.
Đúng là điều này khá phổ biến ở một số công ty IT, Technical Lead cũng kiêm nhiệm thêm các chức danh lãnh đạo khác như Project manager, Solution Architect, thậm chí là Technical director... điều này sẽ tùy thuộc vào mức độ và quy mô của các công ty IT đó.
Ví dụ công ty nhỏ với số lượng nhân viên ít và dự án ít thì thường không có nhiều vị trí cấp cao, Technical Lead sẽ kiêm luôn vị trí PM (Project Manager) nhưng nếu quy mô lớn thì điều này sẽ không còn phù hợp và sẽ làm giảm hiệu suất của Technical Lead, do phải đảm nhận thêm những công việc của PM mà công việc của PM hầu hết ít liên quan sâu đến kỹ thuật!
Để trở thành Teachnical Lead, đâu tiên bạn phải giỏi trong stack mình đang làm đã (giỏi ở đây không có nghĩa là phải làm được tất cả mọi thứ, mà phải biết tìm kiếm và đưa ra cách giải quyết vấn đề một cách nhanh chóng!
Tiếp theo, phải luôn mở rộng nghiên cứu những stack khác bởi vì nhiều dự án có thể liên quan, đòi hỏi kiến thức rất nhiều stack khác nhau.
Hãy tự tin và chủ động "gánh team" cáng sớm càng tốt. Ngay từ khi còn ngồi trong ghế nhà trường, bạn đã có thể rèn luyện kỹ năng leader thông qua việc xung phong đẩy mình vào vị trí gánh team. Áp lực và trách nhiệm sẽ giúp bạn phát triển kỹ năng nhanh chóng hơn bạn tưởng nhiều đấy. Tuy nhiên hãy đảm bảo đã nhận phải hoàn thành, không có kiểu "lời nói gió bay", nhận việc xong để đó nhé.
Cuối cùng là phải trau dồi những kỹ năng mềm đặc biệt là các kỹ năng về giao tiếp và lãnh đạo!
-END-
Ban biên tập chân thành cảm ơn anh đã dành thời gian chia sẻ kinh nghiệm quý báu đến các đọc giả của blog GrowUpWork, chúc anh sức khỏe và thành công!