ブレスト&決定力向上塾

【実践ワーク】チームで最適な技術を選ぶ技術選定ワークショップ

Tags: 技術選定, チームワーク, 意思決定, ワークショップ, アジャイル開発

はじめに

ソフトウェア開発において、使用する技術スタックの選定はプロジェクトの成否を左右する重要な意思決定の一つです。フレームワーク、ライブラリ、プログラミング言語、データベースなど、選択肢は多岐にわたります。これらの技術選定を特定の個人や少数のメンバーで行うのではなく、チーム全体で議論し、合意形成を図ることは、その後の開発効率、品質、そしてチームのモチベーションに大きく影響します。

しかし、技術選定は単純なタスクではありません。考慮すべき要素が多く、個人の経験や好みが入り込みやすく、主観的な判断に偏るリスクも伴います。また、多くの情報を集め、比較検討し、チームメンバー間の意見の相違を乗り越えて一つの決定に至るプロセスは、時に難航します。

本記事では、チームで効果的に技術選定を行うための具体的なワークショップ手法をご紹介します。このワークショップを通して、チームメンバー全員が選定プロセスに関与し、客観的な基準に基づいた議論を行い、納得感のある技術決定を下せるようになります。

チームでの技術選定ワークショップとは

このワークショップは、開発プロジェクトや特定の機能に最適な技術を選択するために、チームメンバー全員が集まり、構造化されたプロセスで議論・検討を行うものです。個々の知識や経験を結集し、様々な視点から候補技術を評価することで、より質の高い意思決定を目指します。

ワークショップの目的

ワークショップの進め方(具体的な手順)

このワークショップは、以下のステップで進行します。時間配分は検討する技術の種類や数、チームの規模によって調整してください(例:全体で2〜4時間)。

ステップ1:選定基準の定義(目安:30分)

まず、どのような基準で技術を評価するかをチーム全体で合意します。この基準が曖昧だと、議論が発散したり、主観的な意見に偏ったりする原因となります。

  1. 基準の洗い出し: プロジェクトの特性やチームの状況を踏まえ、「どのような点が重要か?」を各自がブレインストーミングします。
    • 例:
      • パフォーマンス、スケーラビリティ
      • 学習コスト、開発効率
      • コミュニティの活発さ、サポート体制
      • ライセンスの種類と制約
      • 既存システムとの連携性、移行容易性
      • 保守性、安定性
      • セキュリティ
      • 採用実績、将来性
      • チームメンバーのスキルセットとの適合性
      • コスト(ライセンス費用、運用コストなど)
  2. 基準のグルーピング・整理: 出された基準を類似するものでまとめ、分かりやすい言葉で表現します。
  3. 基準の優先順位付け: 洗い出した基準の中から、特に重要度の高いものをいくつか(例えば5〜7個)選び、チームで優先順位を付けます。優先順位付けの方法としては、ドット投票(各自に数点の持ち点があり、重要な基準に投票する)などが有効です。全ての基準を同等に扱うのではなく、プロジェクトにとって何が最も重要かを明確にすることが重要です。

ポイント: * このステップでは、具体的な技術の評価に入る前に、評価の軸をチームで共有することが目的です。 * 基準は具体的かつ測定可能なものにできると理想的です。

ステップ2:候補技術のリストアップ(目安:15分)

選定の対象となる候補技術をリストアップします。

  1. 候補の提示: 事前に調査しておいた候補技術を提示します。チームメンバーからの提案も歓迎します。
  2. 候補の絞り込み: 議論の効率を考慮し、検討する候補技術の数を絞り込みます(例えば、3〜5個程度)。数が多すぎると評価に時間がかかり、議論が拡散しやすくなります。網羅性よりも、現実的に有力な候補に焦点を当てます。
  3. 簡単な特徴の整理: 各候補技術の基本的な特徴や前提知識を簡単に共有し、チーム全体の理解度を合わせます。

ポイント: * このステップの前に、ファシリテーターや一部のメンバーが候補技術について基本的な情報を収集しておくとスムーズです。 * なぜその技術が候補になったのか、簡単な背景説明を加えると良いでしょう。

ステップ3:各候補技術の評価(目安:60分〜90分)

定義した基準に基づき、各候補技術を一つずつ評価します。このステップがワークショップの中核となります。

  1. 評価方法の選択: どのような方法で評価するかを決めます。
    • 評価マトリクス: 各候補技術を、定義した基準に対して点数付け(例:1〜5点)や段階評価(例:◎〇△✕)で行います。基準の重要度に応じて重み付けを行うことも考えられます。
    • Pros/Consリスト: 各候補技術について、メリット(Pros)とデメリット(Cons)を基準に沿って洗い出します。
  2. 情報の共有と議論: 各候補技術について、知っている情報、懸念点、メリット、デメリットなどをメンバーが率直に共有し、議論します。事前に各メンバーが担当の技術や基準について調べてきてもらうと、より深い議論ができます。
  3. 評価の実施: 選択した評価方法に従って、チームで評価を進めます。評価マトリクスであれば、議論しながら点数や評価を決定していきます。

使用ツール例: * ホワイトボード/オンラインホワイトボードツール (Miro, Muralなど): 評価マトリクスを作成したり、Pros/Consをリストアップしたりするのに便利です。 * スプレッドシート: 複雑な評価マトリクスや重み付け計算に適しています。

ポイント: * 特定の技術に詳しいメンバーがいる場合でも、その意見を鵜呑みにせず、他のメンバーが理解・納得できるように説明を求めます。 * 評価はあくまで現時点での情報に基づく暫定的なものであることを理解しておきます。PoC(概念実証)が必要になる場合もあります。 * 議論が行き詰まったら、一旦休憩を挟んだり、評価基準に立ち戻ったりします。

ステップ4:比較検討と意思決定(目安:30分〜60分)

評価結果をチーム全体で比較検討し、最終的な技術を決定します。

  1. 評価結果の提示: ステップ3で作成した評価マトリクスやPros/Consリストを提示し、チーム全体で共有します。
  2. 総合的な比較検討: 各候補技術の評価結果を横並びで比較し、それぞれの利点・欠点を総合的に検討します。特定の基準で評価が低くても、他の重要な基準で高評価であれば採用を検討するなど、多角的な視点から議論します。
  3. 意思決定: 議論の結果を踏まえ、最終的に採用する技術を決定します。合意形成の手法としては、以下のものが考えられます。
    • コンセンサス: 全員が積極的に賛成ではないにしても、決定に反対する重大な懸念がない状態を目指します。
    • 少数意見の尊重: 決定を下す前に、反対意見や懸念を持つメンバーに十分に発言の機会を与え、その意見をどのように考慮したかを明確にします。
    • ドット投票(最終投票): 複数の候補が僅差の場合、最後に各自に数点を与えて投票し、最も多くの票を集めたものに決定することもあります。ただし、これは補助的な手段として、十分な議論が行われた後に行うのが望ましいです。
  4. 決定の明確化: 決定した技術を明確にし、「なぜその技術に決定したのか」という理由を簡潔にまとめます。

ポイント: * 決定プロセスでは、単なる多数決ではなく、チームとしての納得感を重視します。 * 全てのメンバーが100%満足する決定は難しい場合もありますが、少なくとも決定プロセスへの納得と、決定された技術で進めることへの同意(コミットメント)を得ることが目標です。

ステップ5:決定理由の文書化(目安:15分)

決定した技術と、その決定に至った理由、評価プロセス、考慮した基準などを文書に残します。

  1. ドキュメント作成: ワークショップの結果(定義した基準、候補技術リスト、評価結果、決定理由、検討しなかった技術とその理由など)を分かりやすいドキュメントとしてまとめます。
  2. 共有: 作成したドキュメントをチーム内外の関係者と共有します。

ポイント: * このドキュメントは、後任者への引き継ぎ、将来の技術見直しの際の参考、あるいは意思決定の透明性確保のために非常に価値があります。 * 「なぜ他の技術を選ばなかったのか」という点も記載しておくと、さらに有用です。

ワークショップを成功させるためのポイント

まとめ

チームでの技術選定ワークショップは、単に技術を決めるだけでなく、チームメンバーの知識共有を促進し、主体性を引き出し、決定に対するコミットメントを高める効果的な手法です。本記事でご紹介した手順やポイントを参考に、ぜひ皆様のチームでも技術選定ワークショップを実践してみてください。

このワークショップを通じて、チームとしての問題解決能力や意思決定能力が向上し、より質の高い開発に繋がることを願っております。