Tech Lead(TL/テックリード)の役割 - サンフランシスコではたらくソフトウェアエンジニア

Tech Lead(TL/テックリード)の役割。聞きなれない名前かもしれない。リードプログラマやテクニカルリードと呼ばれることも。過去にいくつものチーム(最大で10人以上)の Tech Lead をやってきた自分の経験を踏まえて書いてみる。

Tech Lead の主な役割

  • Tech Lead はエンジニア班長と言いかえるとイメージがわきやすいかもしれない
  • 顧客に提供したい価値(プロダクトゴール)を正しく理解する
  • エンジニアチームの生産性を可能な限り最大化。プロダクトマネージャ・デザイナと顧客に価値を提供する
  • Product の Launch に責任を持つ
  • Product の Launch 後のメンテナンスに責任を持つ
  • エンジニアを過負荷から守る
    • ときにはマネージャ、プロダクトマネージャのアイデア、スケジュールに NO を言う。代替案を提示する
  • チーム内のテクニカルデザイン、採用技術などに責任を持つ
    • 例1) 早い時期に問題になりそうな技術コンポーネントを特定・対処する
    • 例2) 他チームの技術コンポーネントとの依存関係を理解し正しいデザインを選ぶ
    • 例3) 「より短いサイクルで顧客に価値を提供する vs コードの品質を保つ」のバランスをとる
  • 適切なテストが書かれているかなど品質に目を配る
  • コードレビュー
  • 他のチームからの技術的問い合わせ窓口となる
  • バグレポートのトリアージ

Tech Lead はどれくらいコードを書くのか?

チームによるが、想像しているよりもコードを書いていないというのが率直な印象。それよりもチームメンバーのデザインレビュー・コードレビューに時間をかけるほうがチームとしてのアウトプットは良くなる。

Engineering Manager (EM) と Tech Lead (TL) の違い

以下はマネージャの仕事で Tech Lead の仕事ではない。

  • エンジニアのキャリア形成の手助けに責任を持つ
  • 人事考課
  • 採用などのチームビルディング
  • 各エンジニアとの 1 on 1 を定期的に行う
  • 会社やチームの方向性の調整

以下はどちらの仕事かあいまいな部分。チームによって違う。

  • Spring PlanningSprint Planning
  • 各エンジニアのタスク進捗管理

一番大切なこと

Tech Lead の役割をいくつかの例とともに挙げたが、個人的な経験から学んだ一番大事なことは、技術的な「最後の砦」になることだと思う。チーム内、チーム外の両方からみて「あの人がいるから大丈夫」と思われること。自分もまだまだ実践できていないのだが、そう思われるためには以下のような小さなことの積み重ねが必要。

  • コードレビューリクエストを逃すことがない。コメントが適切。
  • 問い合わせメール等取りこぼさずに必ず対応する
  • 「誰がボールを持っているか不明なアイテム」に必ず対処する。誰かがやってくれると思わない。
  • 技術トラブル時に適切に対応したという実績があり安心。
  • 他のチームの Tech Lead からも信頼されている。
  • とにかく安定している(チームビルディング、品質、機嫌、技術レベル)。

Tech Lead がいないチーム

Tech Lead がいないチームはどうすればよいだろうか?もしチームがすでにうまくいっているなら必要がないかもしれない。ただし上記の Tech Lead の役割のほぼすべてをカバーする人がいないなら試してみる価値はある。また Tech Lead を置くことでマネージャの負担がかなり減ることもメリットの1つだ。たいていのチームでは技術的に頼りになるエンジニアがいる。そういう人をマネージャが正式に Tech Lead として任命する。あわせてチームにその役割を共有すると良い。


ジュニアなエンジニアに Tech Lead を任せてもよいだろうか?マネージャもしくはシニアな Tech Lead がメンターになれるならありだと思う。ジュニアな Tech Lead がはまりがちなのは

  1. プロダクトマネージャに NOと言えず過剰にコミットしてしまう
  2. スケジュール、工数の見積が甘い
  3. 潔癖すぎるほどきれいなデザインを目指してしまい進まない。
  4. 細かい技術部分はとても良く見るが、より大きな視点でプロジェクトを見られない

など。メンターはこれらに気をつけるべき。理想的には致命的ではない小さな失敗をしてもらって学んでもらうのが良い。