Upgrade to Pro — share decks privately, control downloads, hide ads and more …

大規模言語モデル時代の開発生産性

 大規模言語モデル時代の開発生産性

開発生産性カンファレンスの講演内容です。

hirokidaichi

July 14, 2023
Tweet

More Decks by hirokidaichi

Other Decks in Programming

Transcript

  1. 開発生産性の3つのレベル ソフトウェアの生産を3つのフェーズで分けて、評価できないか。 PRやコード行数など作業量を評価。それ 自体に値打ちはつかないが、どれだけの 「生産」ができたかを評価する。先行指標に なる。 仕事量生産性 期待付加価値の生産性 実現付加価値の生産性 プロダクトとしてその機能にどれだけ価値

    が見込まれていたかを評価して、生産した 価値の評価。工数をかけずに顧客価値あ るものが作れるほど高く それがマーケティングやセールスによっ て、実際に売り上げにつながって実現され た時の評価。遅行指標になる。
  2. ビジネスは資産に関する微分方程式 製造力の生産性に関する考え方では、ビジネスモデルの生産性は評価できない。 資産 利益 = フロー = P/L 利益速度=ビジネスモデル,顧客価値 微分

    微分 積分 積分 g(t) g’(t) g’’(t) 利益加速度=ビジネス生産力 微分 積分 g’’’(t) Current Future 先行指標 遅行指標 製造力の生産性 ビジネスモデル の生産性 イノベーションの 生産性
  3. 生産性のスペクトラムとKPI 現在価値 将来価値 Engineering Manager Sales/Marketing Manager Product Manager 売上距離/収支

    売上速度 売上加速度 P/L B/S GP KGI/KPI 担当者 • 売上 • 当期利益 • 案件獲得数 • アポ数等行動量 • オペレーションコスト • 優良顧客数 • 顧客満足度 • LTV • 退会率/Churn • アップセル/クロスセル率 • 開発機能/開発価値量 • テスト自動化率 • デプロイ成功率 • デプロイ数 • ベロシティとその分散 総生産力 gross productivity 継続して改善する 確率が上がる 継続して改善する 確率が上がる に資する仕事 に資する仕事 に資する仕事
  4. リードタイムとビジネスの三階層 リードタイム評価においてもビジネスの 3階層を意識する必要がある。 ①backlog ready ②the issue in progress ③first

    commit ④merge to main ⑤running in production Lead time for changes デリバリのリードタイム Cycle time サイクルタイム Lead time for development 開発可能になってからリリースされるまでのリードタイム Lead time after management has made a decision 経営が意思決定をしてから、リリースされるまでのリードタイム delivery coding
  5. 目標の構造と Fourkeys 目標は定性目標と定量目標、健全化指標の 3つによって表現される。 定性目標
 定量目標
 健全化指標
 共感しイメージを膨らませるための 
 ビジョンとしての目標

    
 定性目標では曖昧になりがちな目指す べき姿をクリアにするための指標 
 定量目標によって、質的なバランスが崩 れないように維持すべき指標 
 “高速で迅速な開発チーム ” リードタイム デプロイ頻度 MTTR デプロイ成功率
  6. 1 3 2 4 ソフトウェア開発の本質的な難しさ ブルックスの名著「人月の神話 ―狼人間を撃つ銀の弾はない」より筆者によるまとめ ソフトウェアはその規模に対して複雑さが非線形に増大しま す。基本的にソフトウェアというものは一度作られたものであ れば、再利用できます。そのため、どんな人工構造物よりも

    複雑になります。 複雑性 ソフトウェアは、文化・業務・経済環境・商習慣、顧客行動な どさまざまな点に連動して、変わり続ける必要があります。当 初の計画通りのシステムが出来上がったとしてもそれは利用 者の要望により変わり続けます。 可変性 ソフトウェアは、それ単独で意味を成すものではなく自分自 身を動作させるハードウェアや、ネットワーク、OS、その他の システムなどと連携しながら、同調することで初めて意味をな します。 同調性 ソフトウェアは、目に見えません。抽象的な概念の相互関係 であり、それは一般に技術者にしか理解できない言語で記述 されます。そのため、ソフトウェアの構造を他の構造物とは違 い見ることができません。 不可視性
  7. 本質的なソフトウェアの生産とは 不確実性のある環境への曝露 (Exposure)によって、不確実性が削減された時 • 別システムとの統合 • 受入テスト • 関係者レビュー •

    マーケットイン • ユーザーレビュー • 市場性調査 関係者への曝露 市場への曝露 通信不確実性 環境不確実性
  8. wanna think / コマンドを考えるコマンド ソフトウェア開発のプロセス設計し、 AIと人間の役割を決めてステートマシンとして実装 生成 名前提案 概要生成と保存 反省とデバッグ

    指示出し 実行 保存 追加指示 指示リセット 名前選択 これまでの 指示をまとめる レビュー 保存フェーズ 終了 Exit 問題があれば修正 LLM の仕事 人間の仕事
  9. AIエージェントのアーキテクチャ Function Functional Agent Function Function Programming Functional Agent Functional

    Agent 関数を利用する関数的なエージェント、それらをさらに利用するエージェントと多層的に問題解決する sandbox上でLLMが生成した コードを安全に動かす Function