Skip to main content

Khung năng lực của Tech lead

Assign to: Thomas Nguyen Status: Done

Miêu tả vị trí

Trong 1 đội nhóm dev từ khoảng 3-7 người (5 người là tối ưu nhất), cần có 1 người đứng đầu về công nghệ, giải pháp và kinh nghiệm để dẫn dắt và vận hành đội nhóm để đảm bảo việc sản xuất phần, tính năng được diễn ra đáp ứng đủ được yêu cầu giải quyết vấn đề vận hành của khách hàng trong hiện tại và cả trong tương lai nếu có những phát sinh, yêu cầu thêm về tính năng.

Vị trí tech lead sẽ đóng vai trò quan trọng trong việc lãnh đạo đội phát triển, đảm bảo chất lượng và hiệu suất của sản phẩm, và hỗ trợ quá trình phát triển công nghệ dài hạn dựa trên việc công ty là một công ty product nên cần phải được đánh giá.

Các đầu công việc chính

  • Tham gia cùng BA xác định khả năng thực hiện của một tính năng. Tham gia đóng góp ý kiến cho việc xây dựng sản phẩm.
  • Giao và chia nhỏ task cho các bạn trong team.
  • Gán story points cho các task trong team.
  • Follow up và đưa ra hướng làm cho các task trong team.
  • Hỗ trợ các thành viên trong team để đảm bảo task được hoàn thành và nâng cao năng lực các bạn trong đội nhóm.
  • Tham gia vào quá trình review code, QC sản phẩm cuối cùng.
  • Chịu trách nghiệm go live các hotfix, tính năng, và sản phẩm mới trong team.
  • Chịu trách nghiệm chính trong quá trình support khách hàng, sửa lỗi của sản phẩm.

Yêu cầu công việc và trách nghiệm chi tiết

1. Quản lý Đội Phát triển

Lãnh đạo và quản lý đội phát triển để đảm bảo hiệu suất và cùng nhau đạt được mục tiêu phát triển.

Có định hướng, và tầm nhìn rõ ràng về sản phẩm. Luôn thúc đẩy việc nâng cao hiệu suất công việc, thay vì làm chăm, làm nhiều nhưng hiệu quả không cao. Đẩy mạnh tư duy đổi mới trong team. Luôn đi đầu trong việc đổi mới sáng tạo.

Hướng dẫn, đào tạo và phát triển các thành viên trong đội.

Cân bằng giữa việc sử dụng nguồn lực trong team và việc phát triển các thành viên trong đội. Không để đánh đổi, mất cân bằng một trong hai. Không lấy hiệu suất công việc để đánh đổi thui chột năng lực của 1 thành viên, và ngược lại cũng không vì để 1 thành viên có cơ hội học hỏi nhiều hơn các thành viên khác làm ảnh hưởng tới công việc.

2. Kiến Thiết và Phát triển.

Tham gia vào việc kiến thiết hệ thống và các tính năng mới của sản phẩm.

Luôn có kiến thức về hệ thống, kiến trúc cơ sở dữ liệu, kiến trúc của GCP đủ chắc để đưa ra thiết kế cho sản phẩm, và sẵn sàng chịu trách nghiệm với thiết kế này. Thiết kế, giải pháp và kiến trúc này cần tuân thủ các yêu cầu về mặt hiệu năng, tối ưu chi phí cho mục tiêu hiện tại, và có tính mở rộng cao trong tương lai.

3. Lập kế hoạch và hỗ trợ quá trình phát triển, đảm bảo việc triển khai được thực hiện một cách suôn sẻ

Luôn có tinh thần hỗ trợ quá trình thực hiện và phát triển sản phẩm của các bạn trong team. Một khi đã giao một task cho các bạn thành viên cần:

  • Xác định trước được luồng chính của tính năng, sản phẩm, hướng làm, hướng giải quyết, tương đương với việc nếu mình chính tay làm cũng có thể thực hiện được.
  • Xác định được năng lực của thành viên mình giao task so với độ khó của task để từ đó xác định được vùng xám, vùng mà developer có thể gặp khó trong quá trình phát triển và có sẵn trong đầu hướng giải quyết từ trước nếu có sẽ là tốt nhất.
  • Luôn luôn theo sát, đánh giá các commit của developer trong quá trình phát triển để đánh giá tiến độ, hướng làm, tránh để lâu, tới bước review mới quay ra đọc và review lại toàn bộ code thì đã quá muộn để sửa, và nếu quá sai thì sprint cũng sẽ phải đập đi làm lại.
  • Kết nối với PM để luôn nắm được deadline của task nằm ở thời gian nào. Nếu chậm deadline thì cần hỗ trợ để đưa hướng giải quyết như: Cắt sprint, tinh gọn tính năng, giãn thời gian, etc.

4. Quản lý Dự Án

Một techlead vẫn cần hiểu được quy tắc, và cách vận hành tối ưu nhất của một dự án.

  • Chịu trách nhiệm đảm bảo tiến độ dự án, kiểm soát chi phí, và giải quyết mọi vấn đề xuất hiện (Phối hợp cùng với PM).
  • Thực hiện các phương pháp quản lý dự án như Agile hoặc Scrum.

5. Kiểm Soát Chất Lượng

Vai trò của một techlead có bao gồm cả bước kiểm soát chất lượng hay còn gọi là Quality Control, hay mọi người còn gọi là testing. Nếu một sản phẩm có chất lượng kém về kĩ thuật, sót lỗi, sót luồng do thiếu những checklist, đặc tả về kĩ thuật ngay từ ban đầu của techlead thì khi nếu sai sót, trách nghiệm này cũng là của techlead, chứ không chỉ của các QC khác trong team. Chi tiết như sau:

  • Đảm bảo chất lượng của mã nguồn và sản phẩm cuối cùng. Ở đây còn gọi là review code. Review code hoàn toàn theo tiêu chuẩn coding standard của team. Các techlead cần tôn trọng coding standard của team đã thống nhất, không tự có tiêu chuẩn của riêng mình. Nếu có thì có thể đưa ra để cả team thống nhất dưới tiêu chí đồng ý số đông.
  • Triển khai các quy trình kiểm thử và đảm bảo rằng mã nguồn đáp ứng các tiêu chí chất lượng. Trong bước QA cuối cùng của sản phẩm, techlead cũng tham gia vào việc kiểm thử sản phẩm ở mức cao. Những yêu cầu về tối ưu về hiệu năng, tối ưu về mặt chi phí, các lỗi liên quan tới bảo mật (accessToken, customer data), tối ưu về việc styling CSS, code có documetation rõ ràng và đầy đủ.
  • Bên cạnh đó có những đóng góp cho đội nhóm về đánh giá trải nghiệm người dùng.

6. Tối Ưu Hóa Hiệu Suất.

Giám sát và tối ưu hóa hiệu suất của sản phẩm, đảm bảo khả năng mở rộng và hiệu quả, bên cạnh đó cũng tối ưu hóa hiệu suất của các thành viên trong đội nhóm.

  • Luôn dành thời gian định kì review lại hiệu suất sản phẩm, hiệu suất của solution trong sản phẩm. Dành thời gian thường xuyên cập nhật những update về công nghệ của Shopify, Firebase, GCP để đưa ra các solution giải quyết các vấn đề bottleneck của team, của sản phẩm. Thí dụ như Shopify release API mới liên quan Bulk Operation thì cần hỗ trợ team update lại luồng code để nâng cao hiệu năng app. Khi Firebase release tính năng count, sum, average cần lên task để giúp team update lại sản phẩm để đạt hiệu năng và tối ưu chi phí hơn.
  • Dành thời gian hỗ trợ các bạn trong team phát triển các kĩ năng tối ưu hóa hiệu suất. Thí dụ như quan sát cách làm việc của các bạn trong team, luôn để ý xem các bạn có đáp ứng được yêu cầu về hiệu suất như: tận dụng không gian làm việc 2 màn hình, tốc độ gõ phím, tốc độ thao tác chuột, quản lí thời gian làm việc cá nhân, để đưa ra đề xuất, thậm chí bắt buộc để nâng cao hiệu suất làm việc của các thành viên nhằm đặt được lợi ích chung cho đội nhóm.

7. Giao Tiếp và Tương Tác

  • Tương tác hiệu quả với các bên liên quan bao gồm đồng đội, khách hàng và các đối tác. Luôn khiêm tốn, nhẫn lại, nhiệt tình trong quá trình giao tiếp, tương tác, chỉ bảo các thành viên trong team và trong việc phối hợp với các team khác.
  • Báo cáo tiến trình và vấn đề cho quản lý cấp cao và các bên liên quan khác. Luôn nắm được tiến độ tình hình trong team, của các vấn đề team đang nhận giải quyết để khi được hỏi có thể trả lời sơ bộ, hoặc trình bày đủ sâu về tình hình của vấn đề cho các bên liên quan để có hướng giải quyết kịp thời. Giữ tinh thần sẵn sàng báo cáo, sẵn sàng rà soát để năng cao tính chủ động, bao quát trong công việc.

8. Hỗ trợ khách hàng và sửa lỗi.

Là cầu nối chính cho việc đảm bảo sức khỏe của sản phẩm luôn trong trạng thái tối nhất, và kết nối với đội support, khách hàng để xác định, nhận định lỗi của sản phẩm trên môi trường production. Nếu có lỗi luôn có trách nghiệm xử lí luôn đầu tiên, mọi lỗi của sản phẩm đều liên quan tới mình, không có ngoại lệ. Nếu tự xử lí được có thể tự xử lí hoặc giao cho các member. Hạn chế giao cho các thành viên nếu như mình cũng không thể giải quyết, vì như thế mình cũng không thể review lại cách sửa có đúng hay không.

Việc sửa phải mang tính triệt để, đúng vấn đề, không xử lí tạm thời mà không thông báo cho Product Manager hay phía team support. Chỉ sử lí tạm thời khi có sự đồng nhất về quan điểm với CTO. Thí dụ, không try catch để skip lỗi để không hiện ra lỗi nữa thay vì sửa vấn đề thực tế gây ra lỗi, ảnh hưởng tới tính năng.

Nếu cần thiết, cần có lường trước việc xảy ra lỗi, thêm các logging cần thiết trong sản phẩm trước như ở các webhook, pubsub để khi khách hàng report lỗi có thể tìm ra được nguyên nhân càng sớm các tốt, tránh việc lỗi của app, nhưng phải xin quyền vào store khách để tái tạo lỗi quá rườm rà khi không thực sự cần thiết.