※以前社内向けに書いた記事を、全体公開向けに修正した記事になります。
ここ1,2年で、AI技術の進化によって開発の在り方が本当に変わってきて、現在進行形でどんどん新しい開発の手法が出てきます。
自分自身がAIを使って開発をしたり、AIをガンガン使って開発している人の話を聞いたりしていると、AIを活用する力はマネージャーや管理職に求められるマネジメント力と似ているなと思うようになりました。
AIを使いこなすための力
適格な作業指示
AIから自分の求めている情報を引き出すには、プロンプトの精度が重要になります。自分が何を求めているのか、前提条件や制約などを適切に伝えておく必要があります。そして、AIの出力結果と求めていた情報とで乖離がある場合は、フィードバックを与えながら自分が求めている精度の出力に近づけていく必要があります。
求めているもの、前提条件、制約などを的確に伝え、求めている精度の成果物になるまでフィードバックを繰り返すという作業は、チームメンバーや部下に作業を依頼して成果物の精度を上げる作業とあまり変わりません。
育成
AIは多くの場合人間よりも賢いが、学習済みのデータがなければ有効な使い方はできません。ソフトウェア開発においては、プロジェクト固有のドメイン知識などはAIが知識を持っていないため、人間がそれらの情報を整備してAIにコンテキストとして学習させる必要があります。また、AIにコーディングの多くを任せようと思うと、コーディング規約や設計思想・設計方針などを事前にコンテキストとして伝えておくが重要になります。
必要なときに、必要な情報を正しく伝える、という作業は、部下や案件の新規参画メンバーに対して必要な知識を与えて育成することに似ていると思う。
評価
AIが提供してくれた情報は不正確な場合もあります。正しい情報かどうかは最終的には人間の判断が必要になります。AIにコードを書いてもらう場合には、AIの書いたコードが正常に動くのか、正常に動いたとしても要件を満たしているのか、などは基本的に人間が評価する必要があります。動作が正常だったとしても、コーディング規約や設計思想に沿ったコードなのかも評価が必要になります。AIの生成物に対して素早く、精度の高い評価をするためには、評価する側にもそれなりに開発スキルが必要になります。
AIを信じて任せることも大事ですが、信じて任せても良いと判断するためには、AIが生成したコードが信用に足ると確信できるだけの評価を下している必要があります。それは、評価する側の開発スキルに大きく依存します。評価者の開発スキルが低ければ、要件を満たしていないコードになっていたり、設計思想が思った通りではなくて保守性の低いコードになってしまう可能性があります。
管理職やマネージャーは、部下を評価する立場にあります。この時、評価する側(マネージャー、管理者)が、評価される側(部下)の能力を適切に測れるだけの能力がなければ、正当な評価は難しい。評価される側から見て評価が適切でないと思われた場合、不満が勃発して揉めたりします。適切に評価するスキルが求められるという点でも、AIを使うスキルとマネージャーのスキルは似ているなと思います。
信じて任せてる勇気
AIはほとんどの場合で人間よりも賢いし、作業スピードも速いです。作業の内容にもよるが、現在のAIの精度を考えると、人間が自分で作業するよりも大半をAIに任せてしまった方が良い結果になることも多いです。ただ、AIに多くの作業を任せるということは、AIのことをある程度信じていなければできません。作業を効率化するには、自分で作業したい気持ちをグッとこらえ、AIのことを信じる勇気を持つことが大事であると思います。
これは、部下や他のメンバーに仕事を任せるときも同じであると思います。
結果に責任を持つ
AIを信じて任せた結果、思った通りの結果にならない場合もある。そういう時に、「AIは使えない」とか、「AIではできない」と簡単にあきらめてしまうのはよくない。AIはほとんどの場合において人間よりも賢いので、思い通りにならなかった時の原因はたいてい人間側の指示の出し方にある。AIの出力結果がどうであれ、それを指示したのが自分である以上、原因と責任は自分にあると認識し、自分自身がAIへの接し方を見直して、改めて思い通りの結果になるまで指示を改良し続けることが大事であると思う。要は、思い通りにいかない時に、他責にせず、自責思考いることがAIを使いこなすうえで重要になる。
相手のせいにせず、自責思考で相手への接し方を変えていくスタンスは部下やチームメンバーにへの接し方としても大事な考え方であると思う。
リーダーシップと軌道修正
AIにコーディングのほとんどを任せていると、最初はいい感じに実装していたものが、途中から意図しない内容のコードを書き始めたりすることもあります。そうなると、改めてAIに適切なゴール設定やコーディングの指針などを認識させて、うまく軌道修正していくことが必要になります。つまり、AIに対して利用者がリーダーシップを発揮することが重要になるなと。
プロジェクトマネジメントやプロダクトマネジメント、あるいは組織のマネジメントにおいては、ゴールを設定してゴールまでの道筋を示すリーダーシップが重要です。ゴールやプロジェクトの目的に対する認識がずれていたり、チームメンバーの作業内容が目的達成への道筋から逸れている場合は、チームメンバーに対して目的やゴールを再認識させ、適切な軌道修正を行うことが必要です。
ここまでのまとめ
まとめると、AIを使いこなすには以下のようなスキルが必要。
- AIに的確な指示を出す力
- AIを必要に応じて育成する力
- AIを適切に評価する力
- AIを信じて任せる勇気
- AIからの成果物に責任を持つ覚悟
- AIにゴールや目的を示すリーダーシップ
- AIの作業が脇道にそれたら軌道修正する力
そして、これら要素の「AI」の部分を「部下」とか「チームメンバー」にすると、マネジメントに必要なスキルと言っても違和感はないように思います。
AIと人間の違い
では、AIと人間とでは、どちらのマネジメントが難しいのでしょうか。
個人的には、断然人間の方が難しいと思います。人間は感情や体調といった要因でモチベーションやパフォーマンスに大きな影響を受けてしまう。バイアスも多く、新しいことを理解することに時間がかかる場合も多い。個人によってスキル差も大きく、価値観や性格の相性もあります。逆にAIは感情に左右されることがなく、日によってモチベーションやパフォーマンスが変わることもありません。バイアスも人間よりは(おそらく)少ないし、AI相手であれば自分がどう思われるかもあまり気にしなくても良い。利用者のモチベーションを下げるようなネガティブな意見もあまり言いません。
そう考えると、AIをうまく使いこなすより、複数の人をマネジメントして成果を上げる方が断然難しいでしょう。特に、プロジェクトマネジメントやプロダクトマネジメントとなると、顧客やステークホルダも考慮した人間関係の上で、ビジネス的な観点と開発の観点を持ち合わせてうまくバランスの取れた意思決定が要求されるので、より難しい。なので、人をマネジメントするよりも、AIをマネジメントする方が多分難易度は低いと思われます。
マネジメントスキルの向上
AIを使いこなすためのマネジメント能力は、人に対するマネジメント能力よりも一般的には難易度は低いと思われます。ただ、そう考えると、AIを使いこなして成果を上げられない人は、人をマネジメントして成果を上げるのも難しいんじゃないかと思ったりもします。AIと人間に様々な違いがあるとしても、マネジメントスキルとして共通している部分があるのであれば、マネジメントスキルの土台を鍛えるためにのステップとしてAI活用術を学ぶのはありなんじゃないかとも思います。
AIにあえて人格や欠点などを与えて、そのうえでAIを使って成果を出す方法を模索していけば、人に対するマネジメント力を鍛えることもできるのではないかと思う。マネージャーや管理職を対象した、AIを使ってマネジメント力を鍛える研修やワークショップとかがあったら面白そうだなとも思います。
今後
AIはこれからもっと進化して、どうなるかは分からなりません。AIによって仕事が奪われるとか、プログラマーが要らなくなるのでは?みたいな話はずっと前からあります。確かに、指示されたものを設計書通りにコーディングするだけのプログラマーであれば、もうAIで良いなという感じではあるけれど、AIを使いこなすためには、AIが書いたコードを評価したり、AIに設計思想を伝える必要があるため、ある程度のプログラミングスキルはまだ重要だなと思う。
それに加えて、進化していくAIをうまく使いこなすマネジメント力が重要であるなと思う。AIは基本的に人間よりも優秀なので、自分の手に負えない優秀な部下をマネジメントする力を磨けば、それがAIを使っていく上でも役に立つスキルになるのかもしれません。
今後しばらくは、AIを適切に評価できるだけの開発スキルと、AIを使いこなせるマネジメント力の2つを持つ人がどんどん生産性を上げていき、そのいずれかが欠けている人が徐々に淘汰されていく時代になるかもしれません。