/note/tech

シニア開発者はなぜ専門知識をうまく伝えられないのか?

要約:

■ 1. 背景: AIと開発者の役割

  • AIエージェントによるソフトウェア開発の普及に伴い、開発者の必要性への疑問が生じている
  • シニア開発者の役割は単なるコード記述にとどまらず、不要な開発の回避、複雑さの抑制、稼働中のシステムの維持にある
  • コピーライターのトゥヒン・ナイール氏が、シニア開発者の専門知識が伝わりにくい理由を「複雑さ」と「不確実性」の観点から説明している

■ 2. シニア開発者の2つのタイプ

  • 新しいツールや外部のベストプラクティスを持ち込むタイプ
  • 実装の必要性を問い、既存のもので対応できないかを検討するタイプ
    • ナイール氏はこの後者を評価している
    • コードを増やす前に、実装の回避・規模の縮小・既存リソースの再利用を検討する

■ 3. 複雑さと不確実性の対立

  • シニア開発者が警戒するもの: 「複雑さ」
    • 新しい条件分岐、データベーステーブル、コンポーネントの追加がシステムを複雑にする
    • コードを増やす前に「本当に必要か」を確認する
  • ビジネス側が恐れるもの: 「不確実性」
    • 市場向けループ: 会社が市場にプロダクトを出し、フィードバックを受け取る
    • マーケター、営業、PM、CEOなどが「何に価値があるか分からない」という不確実性を減らそうとする
    • できるだけ早く市場に出して反応を得ることが重要
    • 既存ユーザー向けループ: 会社が既存ユーザーにサービスを提供し、支払いを受ける
    • サービスの継続稼働、問題発生時の理解・修正・デバッグの容易さが重要
    • 複雑さが増すほどこれらが困難になる

■ 4. 専門知識が伝わりにくい理由

  • 市場向けの人々は「早く出してフィードバックを得たい」と考える
  • シニア開発者は「複雑さを抑えて安定したサービスを提供したい」と考える
  • 優先する問題が異なるため、専門知識が伝わりにくい

■ 5. シニア開発者の専門知識の示し方

  • 「複雑さを増やしたくない」と伝えるだけでなく、「不確実性をより早く減らす方法」として専門知識を示す必要がある
  • 不要なものを作らない力と既存のものを再利用する力が有用
  • 具体例:
    • 調査データ収集: 新しい機能を作る前にGoogle Formsを活用する
    • 新機能への需要確認: 完全な機能開発前に既存UIへのボタン設置でクリック率を確認する
    • 新しい分析サービス: 「一つの判断、一つのグラフ、一つの指標」から始める
  • フレーズ: "Can we try something quicker?"
    • 「quicker」: 相手が求める速さを認める
    • 「something」: 別の方法の存在を示す
    • 「try」: 不完全な状態でも試せる余地を残す

■ 6. AIの役割と責任の所在

  • AIによって試作品やコードの作成速度は大幅に向上する
  • AIにはシニア開発者が担う「責任を取ること」はできない
    • AIが書いたコードでシステムが理解しにくく、修正・デバッグ・教育が困難になっても、顧客への責任はAIではなく開発者が負う

■ 7. 2システム構造の提案

  • スピード版: 速く試すためのシステム
    • AIエージェント、未レビューの生成コード、ジュニア開発者、マーケティング担当者が使用
    • 市場からフィードバックを得られる程度のものを素早く作ることが目的
  • スケール版: 安定して運用するためのシステム
    • シニア開発者が安定性・理解しやすさ・拡張しやすさを重視して整える
    • スピード版で有効と判明したものを顧客向けに信頼できる形へ組み込む
  • 実用例: 「スピード版は3日、スケール版は6週間」という提案が可能になる

■ 8. シニア開発者の再定義

  • ナイール氏は、シニア開発者を「senior software developer」でなく「senior software editor(シニアソフトウェア編集者)」と呼ぶべきと結論づけている
    • 小説家が初稿を急いで書き、編集者が整えるプロセスに例えている

MEMO: