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

急成長スタートアップにおける技術的負債とトレードオフ・スライダー / Technical De...

急成長スタートアップにおける技術的負債とトレードオフ・スライダー / Technical Debt and Trade-off Sliders in Fast-Growing Startups

⬢イベント
技術的負債に向き合う Online Conference
https://findy.connpass.com/event/297813/

⬢株式会社ROUTE06 (ルートシックス) について
会社情報 https://route06.co.jp/
採用情報 https://jobs.route06.co.jp/
Tech Blog https://tech.route06.co.jp/

Tadashi Shigeoka

November 21, 2023
Tweet

More Decks by Tadashi Shigeoka

Other Decks in Technology

Transcript

  1. Index / 目次 1. 自己紹介 2. 会社紹介 3. 技術的負債とエンジニア 4.

    急成長期のスタートアップにおける挑戦 5. 頭の中ほとんどトレードオフ・スライダー 6. 技術的負債の管理戦略 7. 技術的負債とトレードオフ・スライダーの事例紹介 8. まとめ 9. 質疑応答 2
  2. 1. 自己紹介 重岡 正 (SHIGEOKA Tadashi) / GitHub @shige 株式会社ROUTE06

    取締役 CTO / 共同創業者 普段は熊本からフルリモートワーク 本日は出張で今年初のオフィス出社 3
  3. 5

  4. 6

  5. 7

  6. 8

  7. 2. Company / 参考情報 事業内容 - 株式会社ROUTE06 (ルートシックス) 顧客事例 -

    株式会社ROUTE06 (ルートシックス) 数字で見るROUTE06〜働き方・キャリア編〜 9
  8. 技術的負債とは何か? 技術的負債(英語: technical debt)、または設計負債[1]、コード負債とは、ソフトウェア開発における概念であり、時間がかかるより良い アプローチを使用する代わりに、今すぐ簡単な(限定的な)解決策を選択することで生じる追加の手直しの暗黙のコストを反映したものであ る[2]。 金銭的な負債と同様[3]に、技術的負債も返済されなければ、「利子」が蓄積され、変更の実施が困難になる。技術的負債を処理しないと、ソ フトウェアのエントロピーが増大する。金銭的負債と同様に、技術的負債も必ずしも悪いものではなく、プロジェクトを前進させるために (概念実証として)必要な場合もある。一方で、「技術的負債」というメタファーは、その影響を最小限に抑える傾向があり、その結果、修 正するために必要な作業の優先順位付けが不十分になると主張する専門家もいる[4][5]。

    コードベース上で変更が開始されると、コードベースの他の部分やドキュメントにも、他の調整された変更が必要になることがよくある。完 了していない必要な変更は負債とみなされ、支払われるまでは利息が上乗せされて発生するため、プロジェクトの構築が煩雑になる。この言 葉は主にソフトウェア開発で使われるが、他の職業にも適用できる。 引用元: 技術的負債 - Wikipedia 13
  9. 14

  10. [大前提] エンジニア、個として目指したいこと 質とスピードを両立させて、開発 質とスピード(AWS Dev Day 2023 Tokyo 特別編、質疑応答用資料付き) /

    Quality and Speed AWS Dev Day 2023 Tokyo Edition - Speaker Deck 未来の技術動向の変化やビジネス要求を見極めて、技術選定 技術選定の審美眼(2023年版) / Understanding the Spiral of Technologies 2023 edition - Speaker Deck 15
  11. 20

  12. 6. 技術的負債の管理戦略 管理戦略 理想:同じプロダクトバックログとチームで扱う 基本戦略:隙あらば返す 効果的な返済戦略 短期で借りる場合 借りたら、次のイテレーションで返す 中長期で借りる or

    気付いたら負債があった場合 借りる前にPros/Consを出して、チームと合意形成を得る 返済計画を立てて、チームと事業責任者や経営陣と合意形成を得る 21
  13. わたしの頭の中 前提: 事業の成功 ≒ 顧客への価値提供ができていること 新規事業: 機能開発を優先 既存事業: 事業成長の進捗状況を見ながら、技術的負債を返済することを優先 背景:

    プロダクトの中長期的な開発・利用が予想できているため 期限を最優先する場合に意識したいこと リリース時点での機能・非機能に加えて、技術的負債のお品書きも作成 目的: エンジニア以外とも技術的負債を負う合意形成を得る チームが変化する場合に考えていること 継続的にチームに人が増える場合 技術的負債を返済することで、チームの知識共有を促進する 認知負荷は人の数だけ線形的にコストとなるので、早めに返済したい 24
  14. 事例B: 積極的な技術選定 or 消極的な技術選定 創業初期に消極的な技術選定をしたことがありました。 すでにチームメンバー(主に自分)が習熟している言語を用いる Node.js + Vue.jsの経験が長かったので、NestJS +

    Nuxt.jsを採用 学習コストが少なくて済むように、フロントエンドとサーバーサイドで同じ言語を用い る TypeScriptを採用 開発メンバーのレベル感に配慮し、学習コストが小さい言語を選定する TypeScriptなら、あとから入ってきたエンジニアも書ける可能性が高そう 参考: 積極的な技術選定と消極的な技術選定 - uhyo/blog 25
  15. 事例C: ドキュメントを書く or 書かない ドキュメントを書く チーム内での共通認識を得やすい あとから入社する人がわかる ドキュメントを書かない あえて属人性を許容して、開発スピードを上げて、リリースを早める あとで書く

    -> 書かない -> 忘れた頃に質問が来る -> やっと書く 社内事例 創業1-2年目は属人性を許容して、ドキュメントは最低限 3年目からドキュメント文化が醸成されて、現在はドキュメント文化が根付いてい る 参考: チームにおける ADR 導入から 1 年経った振り返りと感想 - ROUTE06 Tech Blog 26
  16. 事例D: Monorepo or Polyrepo Monorepo(モノレポ) コードを共有できる 全体の状況を把握しやすい Polyrepo(ポリレポ) 各repositoryで管理すれば良い(Monorepo管理ツールが不要) 関心の分離

    社内事例 エンジニア数名のフェーズでPolyrepo管理したことがあった 7 repositoriesを行き来していてオーバーヘッドが勿体なかった 現在、Monorepoを採用することが多い 参考: Plainのフロントエンドにおける技術選定(2023年8月版) - ROUTE06 Tech Blog 27
  17. [付録] ROUTE06の技術スタック Go, Kotlin for server-side, Python, Ruby, Swift, TypeScript

    NestJS, Spring Boot, Ruby on Rails Next.js, Nuxt.js, Vite MySQL, PostgreSQL 29
  18. 参考情報 【翻訳】技術的負債という概念の生みの親 Ward Cunningham 自身による説明 - t-wada のブログ Why Understanding

    and Reducing Technical Debt Matters - Orange Matter Trade-off sliders - Agile Experience Design: A Digital Designer’s Guide to Agile, Lean, and Continuous [Book] O'Reilly Japan - レガシーコードからの脱却 Clean Architecture 達人に学ぶソフトウェアの構造と設計【委託】 - 達人出版会 アジャイルサムライ―― 達人開発者への道 | コンピュータ・一般書,プログラミング・開 発,開発技法 | Ohmsha LeanとDevOpsの科学[Accelerate] テクノロジーの戦略的活用が組織変革を加速する - インプレスブックス Monorepo開発のメリット vs デメリット | CircleCI 32
  19. 参考情報 全社ワークスペースに GitHubを選んだ ROUTE06の開発生産性 / Development productivity of ROUTE06 -

    Speaker Deck ROUTE06 CTOが考えていること(2023年9月) - ROUTE06 Tech Blog チームにおける ADR 導入から 1 年経った振り返りと感想 - ROUTE06 Tech Blog Plainのフロントエンドにおける技術選定(2023年8月版) - ROUTE06 Tech Blog ドキュメント文化を支える不文律 - ROUTE06 Tech Blog 33