Nếu bạn xem việc phát triển phần mềm là điều không thể thiếu trong mục tiêu phát triển nghề nghiệp của mình thì có lẽ bạn nên nghĩ đến mục tiêu trở thành một tech lead trong tương lai. Một tech lead có thể đảm nhận nhiều vị trí, có thể là team lead (nhưng không báo cáo trực tiếp) hoặc manager. Engineer manager là người chịu trách nhiệm cho cả dự án và cả team của mình. Điều đó có nghĩa họ phải gánh trên vai công việc của các thành viên trong team, sự phát triển của doanh nghiệp, khả năng điều phối, deadline, văn hóa, code, technical dept, vân vân và mây mây.
Và có lẽ cũng chẳng có con đường cụ thể, rạch ròi để đi từ vị trí developer đến tech lead. Nếu mục tiêu của bạn là trở thành người quản lý trong nay mai, bạn sẽ cần phải tự vấn bản thân với câu hỏi tại sao mình lại muốn vai trò này. Cần dựa trên các mục tiêu dài hạn để xem xét việc trở thành nhà quản lý có phù hợp với bản thân hay không.
Khuôn mẫu điển hình của một developer: ngủ, ăn, làm việc đêm và lặp lại
Xuất phát điểm của tôi là phát triển phần mềm vì tôi cảm thấy thoải mái khi làm việc với máy tính hơn là với mọi người. Nhưng sau một thời gian, tôi thấy mình hỗ trợ các nhà phát triển khác tốt hơn. Tôi thích thú tham gia các dự án hàng đầu và không ngừng nâng cao kỹ năng code standard. Đó là một lựa chọn rõ ràng của bản thân tôi.
Đối với nhiều kỹ sư phần mềm, phấn đấu trở thành một IC (Individual Contributor: người đóng góp cá nhân) có lẽ là một con đường tối ưu hơn. Rất nhiều công ty sử dụng IC như một nhà quản lý. Những IC này còn có thể thay thế một số vị trí như staff engineer, distinguished engineer hay fellow engineer. Đây đều là những vị trí kỹ thuật cấp cao, nhưng nhân viên cấp dưới lại chỉ báo cáo với quản lý chứ không phải các nhân sự kỹ thuật cấp cao này.
Vậy, giờ bạn còn muốn trở thành một tech lead hay trưởng nhóm nữa hay thôi? Điều quan trọng là phải xác định được những gì đang điều hướng bạn. Liệu đó có phải là viết code hay lập trình? Điều này có giúp cải thiện kết quả hay hỗ trợ trong đàm phán deadline với các bên liên quan hay mang đến hiệu quả khi thuyết phục đội ngũ kinh doanh của bạn rằng tái cấu trúc code là điều thực sự cần thiết? Câu trả lời cho những câu hỏi này sẽ giúp bạn xác định con đường nào phù hợp hơn để đi đến vị trí mong ước của mình.
Lãnh đạo là về con người và làm việc nhóm
Nếu vẫn bạn đã tin sẽ có một con đường đi đến vị trí tech lead phù hợp với mình, thì trước mắt, bạn có một số công việc cần giải quyết. Nhờ quản lý hoặc một người cố vấn tin cậy giúp đỡ trong những lĩnh vực mà bạn chưa nắm chắc. Dưới đây là mười điều cần lưu ý:
1. Bước tiến đầu tiên
Một nhà lãnh đạo thực sự có thể dẫn dắt mà không cần phải mang trên mình chức danh hoặc quyền hạn nhất định. Bất cứ ai có chức danh và được ban lãnh đạo trao cho thẩm quyền đều có thể ra lệnh. Nhưng đó không phải là lãnh đạo - lãnh đạo nằm ở những gì bạn làm được.
Do đó, bạn nên bắt đầu từng việc nhỏ một. Đảm nhận nhiều trách nhiệm hơn trong các dự án khó nhằn. Giúp đỡ đồng nghiệp bằng cách đưa feedback trong khi làm các pull request. Tình nguyện trình bày về các bản cập nhật của dự án. Đề xuất cải tiến cho nhóm hoặc quy trình làm việc. Hướng dẫn một đồng nghiệp khác.
Có nhiều cơ hội nhưng mọi người hoặc không muốn nhìn thấy hoặc không đủ chuyên môn hay tự tin để nắm bắt. Xác định những điều đồng nghiệp của bạn đang vướng mắc, sau đó bước lên và giải quyết những vấn đề đó.
2. Trách nhiệm
Khi đảm nhận trách nhiệm, hãy ước tính trước về mọi việc bạn cần làm và không nên làm. Một nhà lãnh đạo luôn biết chịu trách nhiệm và không đổ lỗi cho người khác, không kịp deadline hoặc do bug.
Thay vì chỉ trích về một lỗi mà ai đó đã tìm ra, một người lãnh đạo nên giúp họ sửa lỗi và đưa ra lời khuyên để tránh lặp lại lỗi này. Những lời bào chữa sẽ chẳng giúp ích được gì, thay vào đó hãy dành thời gian để bàn giao những gì bạn cam kết một cách tốt nhất. Nếu cần thiết, hãy thương lượng gia hạn deadline với quản lý. Xem việc điều hành một dự án giống như công việc kinh doanh của riêng bạn và thực sự chăm sóc nó.
Gần đây, một trong những tech lead trong nhóm tôi đã phải cắt giảm một nhánh chủ đạo mới thành lập vì xuất hiện thiếu hụt lớn trong unit test coverage. Tuy nhiên, thay vì phàn nàn, anh đã nhanh chóng tiến hành bổ sung thêm kiểm tra những chỗ bị sót. Sau đó, giải thích cách kiểm tra phù hợp với tổng thể, bao quát và cách viết unit test cho các tính năng phức tạp. Vị leader không hề đổ lỗi cho bất kỳ ai, thậm chí còn đề xuất giúp đỡ cho những ai cần. Nhóm tôi thực sự đánh giá cao điều đó.
3. Mối quan hệ
Đôi khi mọi người giải thích sai các mối quan hệ và gọi những mối quan hệ này là lấy lòng các sếp. Có thể chúng là những thứ giống nhau. Tuy nhiên, nếu bạn không muốn dính dáng vào chuyện “xây dựng các mối quan hệ”, thì có lẽ ngay từ đầu, hãy suy nghĩ lại về việc trở thành lãnh đạo.
Xây dựng các mối quan hệ là một trong những trách nhiệm của các engineering manager. Ý nghĩa của việc quản lý là hoàn thành công việc thông qua những người khác. Do đó hãy bắt đầu xây dựng mối quan hệ tốt với các engineering manager khác vì họ là chính là những đồng nghiệp tương lai của bạn.
Có nhiều cách để bắt đầu, chẳng hạn như thuyết trình tại các buổi tech talk, tham dự hội thảo hay làm cố vấn cho developer nhóm khác. Các engineering manager sẽ đánh giá cao các mối quan hệ mà bạn xây dựng thông qua những việc làm này.
4. Chuyên môn kỹ thuật
Để trở thành một engineering manager, đầu tiên nên học để trở thành một kỹ sư có nền tảng kỹ thuật phần mềm vững chắc và kinh nghiệm thực hành, thực tiễn đa dạng. Chính vì vậy, hãy cố gắng một trong những kỹ sư giỏi nhất trong nhóm. Một người quản lý không thể viết mã hay không hiểu về các chi tiết kỹ thuật thì chẳng thể nào tham gia vào các cuộc thảo luận kỹ thuật. Khi bạn trở thành người quản lý, bạn phải luôn giữ cho kỹ năng của mình đủ sắc bén để có thể thành thạo ở mức cấp cao hơn.
5. Cố vấn
Bất kỳ một “developer thực sự tài giỏi” nào trong team nhưng không làm việc theo đội nhóm đều có hại hơn là có ích. Nếu kỹ thuật là điểm mạnh của bạn, hãy giúp đỡ người khác đạt đến trình độ của bạn. Lập trình theo cặp, đánh giá code, thuyết trình nhóm, làm việc trong các dự án nguồn mở hoặc nguồn đóng là đều là những trường hợp cụ thể để bạn bắt đầu tư vấn cho người khác.
Rất hiếm khi ai đó đến và yêu cầu bạn làm cố vấn của họ. Tuy nhiên, bằng cách tự xây dựng thương hiệu cho mình thành “chuyên gia” và chủ động thực hiện những điều được đề cập ở trên, mọi người sẽ tự nhiên bắt đầu tìm đến bạn để xin lời khuyên. Bằng cách giúp đỡ người khác, bạn xây dựng các mối quan hệ có ý nghĩa và khiến mọi người tôn trọng. Và biết đâu, họ cũng làm tương tự như vậy với bạn để “đáp lễ” hay làm cố vấn cho những người khác.
6. Quản lý dự án
Giao trả các dự án đúng thời hạn là một trong những trách nhiệm cốt lõi của bất kỳ nhà lãnh đạo nào. Là một nhà phát triển, nếu bạn liên tục trễ deadline và đánh giá thấp các task được giao, chẳng ai có thể tin tưởng bạn. Bạn phải tự sắp xếp và làm việc để luôn đứng đầu trong các nhiệm vụ được giao.
Thực ra, rất khó để ước tính các dự án phần mềm vì có nhiều vấn đề không thể khẳng định trước. Tuy nhiên, nếu làm đúng với quy trình điều này không phải là không thể. Hãy trao đổi liên tục về tiến độ và kỳ vọng của dự án với người quản lý hoặc các bên liên quan.
Các tech lead có thể đề cập đến tiến độ, blocker hay bàn đến việc không giao kịp deadline trong các các báo cáo hàng tuần.
7. Giao tiếp
Giao tiếp rõ ràng và chính xác là một kỹ năng cực kì quan trọng của bất kỳ nhà lãnh đạo nào. Nếu bạn không thể giải thích rõ ràng những gì bạn muốn có được từ đội nhóm của mình, thì bạn đã thất bại với tư cách là người lãnh đạo trước cả khi bắt đầu công việc.
Giao tiếp có nhiều hình thức, bao gồm bằng lời nói, bằng văn bản và thậm chí là ngôn ngữ cơ thể. Luôn luôn cải thiện tất cả các kỹ năng giao tiếp của bạn.
Nhóm của tôi đã trễ deadline trong một vài dự án vì tôi không thể truyền đạt các yêu cầu rõ ràng và đúng lúc. Một vài trường hợp trong đó, việc thiếu kỹ năng giao tiếp tạo ra sự nhầm lẫn đối với đội được giao. Qua đó, tôi học được rằng dựa vào các nhà quản lý dự án hoặc các bên liên quan đến kinh doanh để giải thích các chi tiết của dự án thường không hiệu quả. Một tech lead phải hiểu rõ dự án và sau đó tự giải thích cho bản thân và sau cùng là giao việc cho nhóm. Đồng thời cũng phải thúc đẩy nhân viên của mình làm việc dựa trên cách hiểu đó.
8. Quản lý ngược
Quản lý người quản lý của bạn (và đôi khi là quản lý cả người quản lý của quản lý). Điều này có nghĩa là liên tục liên lạc với họ và tính đến các trường hợp có thể xảy ra. Các nhà quản lý không mấy ai thích bất ngờ, dù cho đó là tình huống tốt hay xấu. Thiết lập mối quan hệ tin cậy với người quản lý của bạn. Hãy trở thành người thực hiện các dự án quan trọng, cao cấp, và thực sự hoàn thành chúng đúng thời hạn và ngân sách đã đề ra. Như vậy, các dự án về sau bạn cũng có thể được tin cậy và được áp dụng lại quy trình tương tự.
9. Xung đột và khủng hoảng
Bất kể bạn có bao nhiêu unit hay tích hợp đi chăng nữa thì vẫn sẽ luôn xảy ra các vấn đề sản xuất. Tất nhiên, bạn luôn muốn giảm đến mức tối thiểu số lượng bug khi làm 1 dự án. Điều quan trọng hơn là cách bạn xử lý các vấn đề sản xuất. Một người hoảng loạn khi đối mặt với áp lực ngay lập tức bị loại khỏi cương vị một nhà lãnh đạo trong mắt nhân viên. Cả nhóm và các nhà quản lý khác muốn thấy một người bình tĩnh, giữ mọi thứ trong tầm kiểm soát, ngay cả trong những tình huống căng thẳng nhất.
Có một tech lead mà tôi đã từng làm việc chung luôn giữ được bình tĩnh này. Không có một xung đột hoặc áp lực nào có thể làm cho người lead này bối rối. Ít nhất là không ai thấy anh ta căng thẳng. Khi có vấn đề liên quan đến sản xuất vào lúc 3 giờ sáng, anh ấy không hề than phiền. Vấn đề đã được khắc phục trong vài phút và anh ta đi làm như không có gì xảy ra.
Một tech lead khác mà tôi biết thì lại rất căng thẳng với deadline, anh ta cáo ốm vào đúng ngày chúng tôi phải ra mắt tính năng mới. Anh ấy cho mọi người thấy sự lo lắng của mình, và điều này làm cho mọi người xung quanh không thoải mái khi làm việc chung
Trên đây là 2 trường hợp đối lập hoàn toàn, và cũng dễ để đoán xem ai thành công hơn với vai trò là một tech lead.
10. Tầm nhìn
Một nhà lãnh đạo nên hiểu rõ về vấn đề “tại sao” đối với tất cả mọi thứ họ chịu trách nhiệm. Họ cũng phải có trách nhiệm trong việc đảm bảo mọi người trong team hiểu ”tại sao” họ lại làm việc trong một dự án. Một nhà lãnh đạo phải giải thích (thường là nhiều lần) lý do tại sao dự án đang được triển khai, tại sao những người này lại làm việc này và dự án này có vai trò như thế nào trong toàn bộ bức tranh lớn. Một team phải tin vào những gì họ làm, chỉ khi đó họ mới có thể làm việc hiệu quả.
Sẵn sàng để trở thành một tech lead
Dẫn đầu con đường phía trước, bắt đầu từ hôm nay
Khả năng lãnh đạo không giới hạn ở một hoặc hai người, vì vậy, đừng chờ đợi sự cho phép, hãy bước những bước đầu tiên ngay hôm nay. Hãy trở thành một chuyên gia trong lĩnh vực của bạn và bắt đầu giúp đỡ mọi người khi họ gặp khó khăn. Trau dồi thêm các kỹ năng giao tiếp, thậm chí cải thiện một cái gì đó nhỏ bé như kỹ năng tra cứu tài liệu kỹ thuật. Xây dựng mối quan hệ chuyên nghiệp, tin cậy với các đồng nghiệp hiện tại, tương lai và tiềm năng. Hãy chắc chắn rằng bạn quản lý thời gian của mình một cách khôn ngoan và thể hiện cách làm việc chuyên nghiệp trong việc bàn giao đúng deadline. Và đừng quên rằng lãnh đạo là về con người, vì vậy hãy giúp mọi người phát triển và làm tốt công việc của họ một cách tốt nhất.
Ứng tuyển vị trí Tech Lead tại Chí Doanh!