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

pdm_vibe_coding_fail.pdf

Avatar for hiroaki hiroaki
August 08, 2025

 pdm_vibe_coding_fail.pdf

Avatar for hiroaki

hiroaki

August 08, 2025
Tweet

More Decks by hiroaki

Other Decks in Technology

Transcript

  1. package main import "fmt" func VibeCoding(pdm *ProductManager) (Output, error) {

    // AI を活用してコードを生成 code := generateCodeWithAI() // 軽いテストで機能確認 if simpleTesting(code) { return deployToProduction(code) } return nil, fmt.Errorf("test failed") } // 生産性は本当に上がるのか? // システム全体への影響は? // エンジニアの役割とは? 2025 年8 月8 日  上田裕耀    PdM がVibe Coding したら 生産性が下がった話
  2. package main import "fmt" func main() { fmt.Println("Hello, I'm a

    Server-Side Engineer!") } 自己紹介 PdM@CastingONE キャリアパス 最近の興味  筋トレ 95%  サウナ 90%  AI 活用 80%  顧客理解 80% 冷食リサーチャー 美味しい餃子とは何か?とか調査してました。 サーバーサイドエンジニア(Go/GCP ) クリーンアーキテクチャとかモジュラーモノリスとか興味あります。 プロダクトマネージャー 1 人PdM 。組織全体で顧客解像度を高められるように日々奮闘しています。
  3. func calculateProductivity(outcome float64, timeSpent float64) float64 { return outcome /

    timeSpent } // 生産性は成果を時間で割ったもの // 同じ時間でより大きな成果を出せるか // または同じ成果をより短時間で出せるか 生産性とは? Outcome Time かけた時間に対してどれだけ価値を出せたか?    小さいインプットで大きなアウトカムが出せるかどうか 同じ時間でより大きな成果を出す・同じ成果をより短時間で出す
  4. func HandleProductDevelopment(team, pdm, tasks []Task) []Outcome { // チームは大きなタスクに集中 majorOutcomes

    := team.FocusOn(tasks.Filter(ByPriority("high"))) // PdM は小さいけど価値のあるタスクを実行 minorOutcomes := pdm.VibeCoding(tasks.Filter(ByValueToEffortRatio("high"))) // 全体の成果 return append(majorOutcomes, minorOutcomes...) } なぜPdM がVibe Coding したのか? プロダクト開発 = やりたいことが無限大 重要な機能A 優先度高UI 改善 バグ修正 小さな改善X 軽微な修正Y 内部改善Z 重要な機能B 緊急修正 UX 改善 マイナー改修 新機能C  チームの主な取り組み 大きな価値を生む重要な開発に集中  PdM のVibe Coding 素早い改善で価値を素早く提供
  5. func handleIncident(report *IncidentReport) error { // 想定外の動作が報告された if report.Source ==

    "customer_support" { incident := investigateIssue(report.Description) if incident.RootCause == "unintended_side_effect" { // 他機能への影響を見落としていた fixUnintendedSideEffect(incident) } } return nil } そして失敗しました  他の機能に対する影響  実装した機能自体は意図通り動作していたが他の機能との連携を考慮できていなかった  関連機能への副作用を事前に予測できず、想定外の動作を引き起こした  顧客に迷惑 マイナスの価値提供 +  エンジニアの追加工数 リソース圧迫  結果的に生産性が 大幅に低下  リリース 自分の実装でリリース Vibe Coding で実装 簡易的なテスト PR  機能自体は意図通り動作 1 ヶ月後 CS からの問い合わせ 「◦◦◦ の部分が想定と違う動作をしているようです」  自分の実装で起こしたインシデント
  6. func ensureQuality(code *SourceCode) (Product, error) { if !isAccessible(code) { return

    nil, errors.New("accessibility standards not met") } if !isSecure(code) { return nil, errors.New("security requirements not met") } if !isPerformant(code) { return nil, errors.New("performance benchmarks not met") } // 他の品質チェックも同様 ... return buildProduct(code), nil } エンジニアの仕事って複雑 品質を保った上でアウトカムを生み出すために、 エンジニアはあらゆる要素を考慮した複雑な意思決定を行っている 直感性 クリーンコード 自動化 多言語対応 脆弱性検査 メモリ最適化 モジュール化 レビュー UX データ保護 スケーラビリティ 一貫性 品質保証 アクセシビリティ バグ対策 速度最適化 拡張性 CI/CD 使いやすさ セキュリティ パフォーマンス 保守性 テスト 品質
  7. func makeEngineeringDecisions(requirements *ProjectRequirements) *Solution { // 技術的な深い理解が必要 knowledge := acquireTechnicalKnowledge()

    experience := reflectOnPastProjects() // トレードオフの意思決定 decision := balanceTradeOffs( requirements.Performance, requirements.Maintainability, requirements.Security, requirements.DeliverySpeed, ) // AI フレンドリーな環境構築 workspace := prepareAIFriendlyEnvironment() workspace.AddStructuredDocumentation() workspace.OrganizeCodeArchitecture() return &Solution{ Quality: knowledge.Combined(experience), TradeOffs: decision, AIReady: workspace.IsReady(), } } AI 時代だからこそ求められる専門性  技術の深い理解  「複雑なシステムの相互作用を把握する力」  学びのサイクル  「過去の失敗と成功から学び続ける姿勢」  トレードオフの意思決定力  「相反する要素の最適なバランスを見極める」  AI フレンドリーな開発体制 「人間とAI の両方が理解しやすい環境が生産性を高める」  構造化ドキュメント  明確なアーキテクチャ  一貫性のあるコード規約  ユビキタス言語
  8. func humanResponsibility(capabilities []Capability) Value { // AI ができるからやるのではなく // 価値提供を高速で行うために使う

    var totalValue Value for _, capability := range capabilities { if judgement := evaluateRealValue(capability); judgement.IsValuable() { totalValue += implementWithResponsibility(capability) } } return totalValue } 最後に 「できるからやる」ではなく、 「価値提供を高速で行うために使う」ことが大切 価値提供は(まだ)プロフェッショナルな領域しかできない(と思っている) AI によって多くが自動化される時代だからこそ、 人が担うべき価値に対しては、責任を持ち続ける必要がある
  9. package main import "fmt" func main() { // 発表終了 fmt.Println("

    ご清聴ありがとうございました ") // 質問があればお気軽に questions := []string{ "AI との協働について ", "Vibe Coding の可能性 ", " エンジニアの役割 ", } for _, q := range questions { listenAndRespond(q) } } func listenAndRespond(question string) { // 質疑応答の時間 fmt.Printf("Q: %s\n", question) // 回答準備 ... } ご清聴ありがとうございました