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

PdMのためのソフトウェアエンジニアリング入門

kosui
December 08, 2024

 PdMのためのソフトウェアエンジニアリング入門

社内LT

kosui

December 08, 2024
Tweet

More Decks by kosui

Other Decks in Technology

Transcript

  1. なぜ「〇〇機能」の開発は難しくなるのか 
 プロダクトの成長を阻害する原因 
 技術的負債が原因? 
 
 
 
 


    
 時間はかかるがより良いアプローチを選択する代わりに、
 簡単ではあるが限定的な解決策を選択することで生じる、
 将来的な手直しにかかる暗黙のコスト
 — 技術的負債 - Wikipedia この技術的負債を返却しないと 
 〇〇機能の開発は難しいです 
 うーん…?分かりました… 

  2. 技術的負債が原因? 
 
 
 
 
 その”負債”は本当にトレードオフを選択して生まれたのか?
 実はそのトレードオフ の存在がチームに視えていないのかも🦆
 なぜ「〇〇機能」の開発は難しくなるのか

    
 プロダクトの成長を阻害する原因 
 時間はかかるがより良いアプローチ を選択する代わりに、
 簡単ではあるが限定的な解決策 を選択することで生じる、
 将来的な手直しにかかる暗黙のコスト
 — 技術的負債 - Wikipedia
  3. 遠い将来は「既読通知を10,000人へ送信する」というケースもありえる 
 今は対応しないけど、実装を簡単に切り替えられるようにしておこう 
 例) チャットサービスのロードマップ 
 • 現在: 個人同士のチャットができる


    
 
 • 1年後: グループでチャットができる
 
 
 • 2年後: 大人数が参加できるオープンなチャットを作れる
 
 ロードマップがわかる = トレードオフが視える 
 トレードオフを可視化する 
 今は「既読通知はチャット相手にだけ届ける」という機能だけど... 
 今はシンプルなデータベース設計に とどめておくが
 将来は「既読通知が複数人へ送信される」という前提で設計しておこう 

  4. 例) チャットサービスのロードマップ 
 • 現在: 個人同士のチャットができる
 
 
 • 1年後:

    グループでチャットができる
 • 2年後: 大人数が参加できるオープンなチャットを作れる
 
 
 …数年後、恐ろしい工数のリファクタリングやリアーキテクチャが発生する
 先のことは全く分からない… 
 ロードマップがわからない = トレードオフが視えない 
 トレードオフを可視化する 
 今は「既読通知はチャット相手にだけ届ける」という機能だから 
 テーブル設計はこれでいいはず

  5. ソフトウェアエンジニアとは 
 
 
 
 • プログラミング 
 「現在、目の前にある要件」を満たすソフトウェアを作ること 


    • ソフトウェアエンジニアリング 
 過去から未来までの外部環境・内部環境の変化を考慮してソフトウェアを作ること
 ソフトウェアエンジニアリングの重要性 
 PdMと共創するソフトウェアエンジニアリング 
 ソフトウェアエンジニアリングとは時間で積分したプログラミングである 
 — Googleのソフトウェアエンジニアリング 先のことは分からない。が、 仮説を立てて作ることはできる!
 仮説を元にトレードオフを選択しよう。

  6. PdMと共創するソフトウェアエンジニアリング 
 プロダクトロードマップを共有する
 • どんなビジネスモデルや機能へ変化しうるか 
 • どんな法令・ガイドライン・セキュリティ要求が生まれうるか 
 プロダクトロードマップを分析する


    • どんな機能要件・非機能要件が生まれうるか 
 • どんなアーキテクチャや設計が望ましいか 
 プロダクトロードマップへ反映する
 • 現在あるソフトウェアを未来のプロダクト像へ近づけるために 
 これからどんな開発アイテムが必要になる? 
 PdMと共創するソフトウェアエンジニアリング 

  7. 付録: PdMと共創するためにエンジニアができること① 
 プロダクトロードマップを聞く
 • 仮説を立てて聞く
 例) 「エンタープライズなお客様が稼働率99.99%を
 求めてくることってどれぐらい有り得そうですか?」
 •

    二者択一で聞く
 例) 「〇〇機能と△△機能ならどちらが先に開発すべきですか?」
 • 技術の意思決定をビジネスの言葉で説明する
 ◦ そのアーキテクチャではどんな非機能要件を達成できる/できないか
 ◦ そのデータベース設計ではどんな機能の実装が容易か/難しいか
 PdMと共創するソフトウェアエンジニアリング 

  8. ライセンス
 tabler-icons 
 Copyright (c) 2020-2024 Paweł Kuna 
 Permission

    is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 
 
 The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 
 
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.