開発者がチームをリードするポジションに昇進する場合、新たなスキルセットが必要だ。Talking with Tech Leadsの著者によればPatrick Kua氏によれば、技術的リーダーは共通の技術的なビジョンに向けてチームを動かすため、権限を委譲し、ファシリテーション、コミュニケーションをし、リスクを管理しなければならない。
Patrick Kua氏はOOP 2015カンファレンスでThe Geek‘s Guide to Leading Teamsと題した講演を行う予定だ。カンファレンスの模様はInfoQでも取り上げる。
InfoQは氏にインタビューを行い、技術的リーダーの必要性、スクラムマスタと技術的リードの役割の違い、リーダーシップのスキル、能力やスキルを磨くのを支援するために技術的リーダーがするべきことについて話を聞いた。
InfoQ: なぜ技術的リーダーが必要なのでしょうか。
Patrick: 今やソフトウエアはこれまで以上に広まり、引き続き、成長し続けます。ソフトウエアのスケールもさまざまであり、より多くのソフトウエア開発者が必要です。技術的リーダーは、ソフトウエア開発者を共通のゴールへ導くために、今まで以上に重要になります。
多くのタイプの技術的リーダーがいます。それぞれが異なるレベルの組織を動かしています。CTOは組織全体のITに責任を持ちますが、日々のコーディングからは離れてしまうのが常です。技術的リーダーは対照的です。開発チームのリードに責任を持ちます。産業としては、私はこのような技術的リーダーをサポートする必要があると思っています。育てるのが最も難しく、かつ、チームの開発生産性に大きな影響を与えるからです。
例えば、私は開発者に議論によって進捗が止まってしまうという状況に何度も立ち会ったことがあります。どの道に進めばいいかわからないからです。技術的リーダーの中心的な役割は技術的ビジョンに向かう道を見つけることです。
開発者は、技術的リーダーになることの難しさを知っています。生産性の高いソフトウエア開発者のスキルは生産的な技術的リーダーのスキルとは違うからです。
InfoQ: アジャイルチームのスクラムマスタは技術的リーダーの役割とは違うのですか。
Patrick: スクラムマスタと技術的リーダーには共通の性質がいくつかあります。状況を促進し、チームが共通の目標に向かって動くようにすることです。しかし、責任が全く違います。スクラムマスタはスクラムを実践するチームのために存在します。しかし、技術的リーダーはあらゆる環境に存在します。スクラムを実践しないアジャイルチーム、アジャイルを実践しないチームにも存在します。
私の考えでは、生産的な技術的リーダーはコードを書き、技術的であり続けることが重要です。しかし、スクラムマスタはそうである必要はありません。私はコーディングの経験のないスクラムマスタが、多く成功しているのを知っています。しかし、開発者出身ではない、技術的リーダーで成功している人は見たことがありません。
また、技術的リーダーに固有の責任として、技術的リスクを特定し、管理することが挙げられます。ビジネスサイドの人と緊密に連携して、ビジネス上の問題に対して技術的解決を提供し、技術的ビジョンに向かってチームを押し進めます。
InfoQ: なぜ技術的リーダーはコードを書けるべきなのでしょうか。
Patrick: 生産的なリーダーになるには、技術的リーダーはチームから尊敬されなければなりません。開発者と信頼関係を構築する最も効果的な方法は、能力を示すことです。チームと一緒にコードを書くというのは、良いやり方でしょう。
技術的リーダーの主要な責任は技術的ビジョンに向かってチームを押し進めることです。技術的ビジョンに変更が必要かどうかを判断するためにも、技術的リーダーがコーディングできるのがいいでしょう。技術的リーダーがコードの読み書きができなければ、コードをしっかり把握しないで本当の影響を理解するのは不可能です。
技術的リーダーの最も大きなチャレンジのひとつはコードを書くこととその他の果たすべき責任のバランスを取ることです。
InfoQ: 技術的リーダーに必要なスキルはどんなものでしょうか。どのように身につければいいでしょうか。
Patrick: どのようなリーダーシップのスキルであれ、技術的リーダーには役に立ちます。リーダーなのですから。また、私は、技術的リーダーとしては、権限委譲、ファシリテーション、コミュニケーション、リスク管理が重要なスキルだと思います。
権限委譲はひょっとしたら最も難しいかもしれません。しかし、技術的リーダーにとっては重要なスキルです。というのは、“すべてやる”から“必要な分だけやる”という働き方に転換しなければならないからです。開発者は設計とコードをコントロールしますが、この仕事が技術的リーダーの仕事になってしまうと開発者は面白くありません。
ファシリテーションは対立を解消し、多くの選択肢からベストな解決策を見つけるために必要なスキルです。このスキルが重要なのは、多くの環境で、声が大きい人、しゃべるのが長い人が勝利しているためです。声が大きい人、しゃべるのが長い人が支配的になると、次善の策が採用され、チームのメンバは不愉快になります。
技術的リーダーは非技術的な人とのミーティングに出席し、チームと効果的に対話する必要があります。技術的な概念を完全に異なる戦略を用いて説明し、技術的なアイディアを比喩や図を使って、技術的でないやり方で説明する必要があります。
また、技術的リードはチームが技術的ビジョンに対して同じように理解していることを保証しなければなりません。効果的な図を書き、誤解や食い違いを解消するために注意深く聞くのが、重要なコミュニケーションスキルです。
これらのスキルの良い点は、多くの本や外部のトレーニングコースによって気付きが得られる点です。難点は知識を経験値にすることです。私が薦めるのは、リーダーシップのコーチや定期的にフィードバックや示唆を与えてくれる人を見つけ、リーダーシップの問題についてどのようにアプローチするべきか、指摘を受けることです。
InfoQ: 開発者がスキルや能力を身につけるために技術的リーダーはどのような支援ができるでしょうか。
Patrick: 効果的な技術的リーダーは定期的にチームのメンバーと、現在のスキルの状況と身につけたいスキルについて話すべきです。定期的にワンツーワンのセッションを開催して、ゴールと興味について話し合うといいでしょう。
そして、開発者が知らないことと繋がる機会を提供することでスキルの習得をサポートできます。例えば、開発者の誰かが身につけたいと考えているスキルに関連する外部トレーニングコースやカンファレンスについて知っているといいでしょう。
何か新しいことに調整させ、“安全に失敗”できる環境を整えるのも一つの手です。例えば、開発者に新しいスキルが必要なタスクを担わせ、ただし、そのタスクは時間的制約が緩いものにして、学習できる時間を確保します。同時に、技術的リーダーはそのタスクに必要なスキルを既に身に付けている人を見つけておいて、開発者が助けを乞えるようにしておきます。さらに、定期的に進捗をチェックし、障害にぶつかったときに、助けが必要かどうか、新しい選択肢を提供するかどうかを見るようにします。