Bài học vỡ lòng của một tech lead
Công việc của Tech Lead không phải là chỉ viết code, mà là dẫn dắt, scale up khả năng của bản thân để cả team cùng thực hiện một cách hiệu quả.
Câu chuyện bản thân
Đó là một project nho nhỏ ban đầu, một may mắn cho đời gõ code dạo của mình khi có cơ hội tham gia một dự án bắt đầu từ con số không. Team khi đó chỉ có 3 người, mình làm Frontend và 2 bạn còn lại phụ trách Backend. Một trong hai bạn team Backend là tech lead cho cả dự án. Vì là build project từ số không nên một lợi thế lớn đó là mình hiểu rõ kiến trúc ứng dụng và nghiệp vụ từ đầu, có cơ hội được thực hành những good practices đặt nền móng coding convention1, component structure một cách chuẩn chỉnh. Dần dần, dự án được tăng budget và team bỗng phát triển lên 15 người. Được chừng 2 năm, bạn tech lead làm cùng từ những ngày đầu xin nghỉ. Và mình được promote lên làm tech lead.
Thành thật mà nói thì lúc đó mình tuy buồn vì chia tay bạn tech lead làm việc rất ăn ý lâu năm, nhưng cũng có phần hào hứng kèm chút lo lắng với vị trí mới 😬.
Trong những tháng tiếp theo, cuộc hành trình như kiểu bạn đang chơi game ở level 5 mà bỗng nhiên bị đẩy lên level 7, 8, đôi khi là Hell Mode. Và buộc phải chơi hết mình để qua được màn.
👋 Hey, mình là Bryant (Dũng), chào mừng bạn đến Growth Engineering Journal newsletter hàng tuần của mình, nơi mình chia sẻ về Engineering Growth, phát triển bản thân và những thứ hay ho mình học được qua quá trình bán mình cho tư bản.😜
❓Định nghĩa
Tech Leads are technology-centric and are prioritise technical solutions, while Team Leads are people-centric and prioritise nurturing the team.
Tuy là 2 chức danh khác nhau: team lead và tech lead, nhưng trong thực tế, ngay cả trong những công ty công nghệ lớn, để tiết kiệm và tối ưu chi phí thì đôi khi bạn sẽ kiêm luôn cả 2 vai trò này, vừa là đầu tàu về công nghệ và là người quản lý đội nhóm, đối ngoại, đối nội, miễn sao là lèo lái project cùng PM2 về đích an toàn.
Nếu bạn hỏi 3 tech lead thì sẽ được 3 câu trả lời khác nhau. Những câu trả lời đó hoàn toàn đúng. Tùy vào cách tổ chức của mỗi công ty sẽ có kì vọng khác nhau cho vị trí này. Nhưng nhìn chung thì cũng gói gọn trong 3 phạm vi
Leadership
Development
Architecture
Sự khác nhau phần lớn nằm ở việc mỗi tech lead sẽ ưu tiên vào mảng công việc nào.
Tech lead 101:
Dưới đây là những sai lầm mình đã mắc phải cho lần đầu tiên, hi vọng những chia sẻ này có thể giúp ích cho bạn-một tech lead trong tương lai-tránh được những sai sót không đáng có và làm tốt công việc hơn.
1. 👨🏻💻Dùng tư duy của developer cho role tech lead
Đây có lẽ là bài học lớn nhất và vỡ lòng nhất khiến mình mất một thời gian để chấp nhận rằng code chỉ là công cụ, không hẳn là cách hiệu quả nhất để giải quyết được vấn đề.
Phần lớn vấn đề xảy ra liên quan đến con người, quy trình, vận hành. Công việc của Tech Lead không phải là chỉ viết code, mà là dẫn dắt, scale up khả năng của bản thân để cả team cùng thực hiện một cách hiệu quả.
Khi nhìn lại, chính vì việc gì cũng đến tay như vậy dẫn đến tình trạng cả team không thể trưởng thành, điểm yếu vẫn không được cải thiện, và điểm mạnh vẫn không thể phát huy.
Một hệ quả của kiểu tư duy này là khi này bạn chỉ nhìn thấy lá hơn là cành và xa hơn là toàn bộ cái cây. Và tệ hơn là khi bạn tập trung vào một chiếc lá đó thì tầm ảnh hưởng chỉ gói gọn ở một chiếc lá cho sức lực và thời gian bạn đã bỏ ra. Trong khi với thời gian đó bạn có thể nhân rộng để cả team cùng đi hái được nhiều chiếc lá, trồng thêm nhiều cây mà sức lực bỏ ra lại ít hơn, bạn có thời gian làm việc quan trọng hơn.
📖 Bài học:
Từng cá nhân cải thiện thì cả tập thể đều được cải thiện. Sẽ chẳng có ý nghĩa mấy nếu bạn (tech lead) cải thiện kĩ năng code trong một tập thể 10 người. Nhưng vài team member cải thiện được kĩ năng code thì team lại farm task nhanh hơn. 😎
Một người tech lead giỏi không nhất thiết phải code nhiều, mà làm sao train được cho team cách suy nghĩ để có thể tự tìm lời giải cho vấn đề kĩ thuật đang gặp.
2. 👥 Không chú trọng phát triển kĩ năng mềm
Nếu học kỹ thuật là cái gì đó true-false, trắng-đen thì học kỹ năng mềm nó không rõ ràng như vậy.
Việc học một ngôn ngữ, công nghệ mới chỉ cần google là ra được cả lộ trình học và hàng ngàn video, (đa số là mấy anh Ấn Độ 😜) dạy học một cách bài bản. Còn học kĩ năng mềm như lên kế hoạch, lên chiến lược, xây dựng mối quan hệ, đưa feedback, managing up… cần thời gian thẩm thấu và áp dụng cho hoàn cảnh cá nhân.
Một ngày có 8h làm việc thì có khi bạn họp hết 5 giờ và không còn năng lượng để thực sự tập trung hoàn thành task cá nhân. Có khi sau giờ làm hoặc tối muộn mình mới có thời gian yên tĩnh để tập trung làm task.
📖 Bài học:
Càng lên vị trí cao thì kĩ năng mềm càng quan trọng. Tỉ lệ giữa hard skill và soft skill sẽ thay đổi theo cấp độ và độ trưởng thành, tầm ảnh hưởng trong công việc. Những kỹ năng như họp hành, managing up….
Phần lớn những vấn đề xảy ra trong dự án do sự không nhất quán về thông tin và góc nhìn, dẫn đến kì vọng và suy nghĩ khác nhau. Đa phần sẽ liên quan đến kĩ năng làm việc với con người. Việc liên tục cập nhật trạng thái để xem có thay đổi gì phải ứng biến cho phù hợp hay không.
3. 👨🏻💻📑 Cố Gắng biết hết mọi thứ
Với tâm lý là tech lead là người giỏi technical nhất team nên mình luôn trong tâm thế phải học và sợ không đủ giỏi để làm tech lead (hội chứng kẻ giả mạo3).
Mình vốn xuất thân là Front end nên khi làm lead mình vẫn tư duy là phải học thêm backend để nắm được công nghệ, và sa đà vào học code trong khi chỉ cần nắm được tổng quan và nguyên lý.
Nhưng khi bạn là một người mới ở vị trí này, bạn phải chấp nhận một sự thật rằng có những thứ mình sẽ không thể biết hết và kĩ năng quan trọng là kết nối tạo quan hệ để tìm được người có câu trả lời có thể giúp mình. Nó như google nâng cao nhưng trong ngữ cảnh của một tổ chức, vận hành nhiều phòng ban và nhiều đội nhóm.
Mình cũng nhận thấy mình sẽ không thể học tất cả vì nếu mình là người giỏi technical nhất team thì chính mình sẽ là ngưỡng chặn trên để cả team phát triển. Trong khi nhiệm vụ của tech lead là kết nối và tạo môi trường để bồi dưỡng sự phát triển của các thành viên.
📖 Bài học:
Xây dựng văn hóa để khích lệ học hỏi, chia sẻ và giúp team member phát triển về mặt nghề nghiệp. Chính sự phát triển của từng team member sẽ nâng tầm tổng thể chất lượng của cả team.
Cứ thẳng thắng thừa nhận là mình không biết và tìm cách để nắm vấn đề nhanh nhất có thể và tổng hợp đủ thông tin để có căn cứ ra quyết định.
4. 😨🏖️Không dám nghỉ phép
Bạn không đọc nhầm đâu, gần 6 tháng đầu khi mình trở thành tech lead, mình đã từng tư duy như vậy
Việc quá ôm đồm khiến mình có cảm giác nếu mình nghỉ 1 ngày thì team sẽ không chạy được, có issue mình không có mặt giải quyết thì sếp sẽ đánh giá…
Đây là kết quả của việc không xây dựng sự kết nối đủ sâu và thiếu sự tin tưởng và trao quyền cho team, dẫn đến khuynh hướng over controlling hoặc micromanaging để có output mong muốn.
📖 Bài học:
Cố gắng tìm hiểu team member ngoài phạm vi công việc, xây dựng sự tin tưởng (trust), tăng sự kết nối (engagement), tạo sức ảnh hưởng… Một khi đã thiết lập được mối liên kết, bạn sẽ bất ngờ vì team mình làm được rất nhiều việc.
Tập cách quản lý rủi ro và trao quyền cho một số team member tin tưởng để giúp mình giải quyết khi gặp sự cố (cho dù có nghỉ phép hay làm việc)
Kết
Việc mắc sai lầm là điều không tránh khỏi khi bạn được promote lên vị trí tech lead/ team lead. Tuy nhiên việc nhìn nhận vấn đề và có hành động cải tiến là bước đầu tiên trên hành trình trở thành một người lãnh đạo hiệu quả. Bất kể bạn là IC4 hay là quản lý, kĩ năng lãnh đạo đều cần thiết và giúp bạn nâng tầm và giá trị của bản thân trong sự nghiệp.
📢 Weekly Shoutouts:
The magic of small engineering teams của James Temperton.
How to fix slow loading apps của Caleb Mellas
3 Telltale Signs to Quit Your Software Engineering Job của Kevin Naughton Jr.
Như thường lệ, đừng ngần ngại thả ❤️ hay để lại comment cho newsletter tuần này nếu như bạn đã học được một điều gì đó mới mẻ, hay có một suy nghĩ nào đó từ lá thư này. Mình rất mong nhận được ý kiến từ độc giả của mình (và nếu bạn đã làm được đến mức này thì mình rất trân trọng)
Hẹn gặp mọi người trong bài viết tiếp theo 🤖!
Bryant
coding convention: guidelines for a specific programming language that recommend programming style, practices, and methods for each aspect of a program written in that language
PM: project manager
Imposter syndrome
IC: individual contributor
Bản thân mình không phải developer/engineer nhưng từng có cơ hội va chạm nhiều với tech team, những bài học vỡ lòng của bạn cũng giống với những nỗi lo và quan sát của chính mình khi chứng kiến sự khác biệt giữa những bạn engineer/lead có hay không có soft skill sẽ ảnh hưởng ntn đến quá trình làm việc. Cảm ơn bạn vì đã đưa thêm góc nhìn của người trong cuộc 🙌🏻