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

失敗から学ぶ 技術的負債との正しい歩き方 / learn from predecessors

失敗から学ぶ 技術的負債との正しい歩き方 / learn from predecessors

# ソフトウェアエンジニアリングサバイバルガイド: 廃墟を直す、廃墟を出る、廃墟を壊す、あるいは廃墟に暮らす、廃墟に死す
https://www.youtube.com/watch?v=PSCmjrrbNkg

# Howだけ考えると複雑さを導入して仕事が増える
https://soudai.hatenablog.com/entry/2020/08/14/101657

# 質とスピード(2020春版) / Quality and Speed 2020 Spring Edition
https://speakerdeck.com/twada/quality-and-speed-2020-spring-edition

# 判断と決断の違いと決断のコツ
https://soudai.hatenablog.com/entry/2022/01/04/151923

# Worse Is Better - 過去を知り、未来に備える。技術選定の審美眼
https://speakerdeck.com/twada/worse-is-better-understanding-the-spiral-of-technologies-2019-edition

soudai sone

May 16, 2023
Tweet

More Decks by soudai sone

Other Decks in Technology

Transcript

  1. 失敗から学ぶ
    技術的負債との正しい歩き方
    【リンケージxセレス】~失敗する開発とその対策~

    View full-size slide

  2. 技術的負債



    What is it?

    View full-size slide

  3. 技術的負債

    ||

    廃墟

    What is it?

    View full-size slide

  4. What is it?
    https://www.youtube.com/watch?v=PSCmjrrbNkg

    View full-size slide

  5. ソフトウェアと共に暮らす


    そんな暮らし方の話をします

    What is it?

    View full-size slide




  6. What is it?

    View full-size slide

  7. 技術的負債は


    エンジニアを滅ぼす

    What is it?

    View full-size slide

  8. バルスしないために必要な話します



    What is it?

    View full-size slide

  9. 1. 自己紹介

    2. 技術的負債と共に歩む

    3. プロダクトと向き合え

    4. 技術選定と未来への投資

    5. まとめ

    あじぇんだ

    View full-size slide

  10. 1. 自己紹介

    2. 技術的負債と共に歩む

    3. プロダクトと向き合え

    4. 技術選定と未来への投資

    5. まとめ

    あじぇんだ

    View full-size slide

  11. 自己紹介

    曽根 壮大(38歳)

    Have Fun Tech LLC 代表社員

    株式会社リンケージ CTO


    そ  ね   たけ とも

    ● 日本PostgreSQLユーザ会 勉強会分科会 担当

    ● 3人の子供がいます(長女、次女、長男)

    ● 技術的にはWeb/LL言語/RDBMSが好きです

    ● コミュニティが好き

    View full-size slide

  12. 突然の宣伝

    
予防医療のリンケージ



    ● リモートワークの不安を数値にするストレスチェック
    ● 女性の健康課題をサポートする
    ● リモートワーク、ちょっとした心配を相談できる安心をご提供

    View full-size slide

  13. 1. 自己紹介

    2. 技術的負債と共に歩む

    3. プロダクトと向き合え

    4. 技術選定と未来への投資

    5. まとめ

    あじぇんだ

    View full-size slide

  14. 技術的負債と共に歩む



    技術的負債と共に歩む

    View full-size slide

  15. 技術的負債と共に歩む

    ↓

    我々自身が

    技術的負債と共に歩む

    View full-size slide

  16. 技術的負債と共に歩む

    View full-size slide

  17. ソフトウェアを


    継続的にメンテナンスする

    技術的負債と共に歩む

    View full-size slide

  18. 当たり前にできていますか?



    技術的負債と共に歩む

    View full-size slide

  19. なんのためにリリースするの?


    なんのために監視するの?

    技術的負債と共に歩む

    View full-size slide

  20. ● ソフトウェアを補強する

    ○ ユニットテスト、シナリオテスト

    ● ソフトウエアの状態を把握する

    ○ モニタリング、オブザーバビリティ

    ● ソフトウェアの改善を行う

    ○ リファクタリング、リリース

    当たり前の日常にすべきこと

    View full-size slide

  21. これらはリリースを恐れず


    素早く改善サイクルを回すための手段

    技術的負債と共に歩む

    View full-size slide

  22. 進捗の麻薬と


    Howの呪い

    技術的負債と共に歩む

    View full-size slide

  23. https://soudai.hatenablog.com/entry/2020/08/14/101657
    “例えばリリース手順書を作りました!ってな
    ると作業の内容が変更になるたびに手順書
    のメンテナンスをしなければいけない。そうす
    ると作業が増えるのでリリース方法をできる
    だけ変更したくないという力学が働きやすくな
    る。

     その結果、自分たちがリリース方法を変え
    るだけでより良くしていける可能性があっても
    無駄な議論が増えたり、間接的な作業がま
    た増えたりする。

     こうやって作業が増え、仕事が増え、リソー
    スがどんどん足りなくなる ”


    View full-size slide

  24. 問題にフォーカスする。 


    その上で問題を技術で解決する。

    技術的負債と共に歩む

    View full-size slide

  25. 当たり前にできていますか?



    技術的負債と共に歩む

    View full-size slide

  26. 当たり前にできていますか?

    ↓

    当たり前の積み重ねの先に共存がある

    技術的負債と共に歩む

    View full-size slide

  27. 1. 自己紹介

    2. 技術的負債と共に歩む

    3. プロダクトと向き合え

    4. 技術選定と未来への投資

    5. まとめ

    あじぇんだ

    View full-size slide

  28. ???「よっしゃ!作り直すぞ!」



    プロダクトに向き合え

    View full-size slide

  29. ???「Scrumやってみましょうよ」



    プロダクトに向き合え

    View full-size slide

  30. ???「DDDでやればうまくいきます!」



    プロダクトに向き合え

    View full-size slide

  31. プロダクトに向き合え

    View full-size slide

  32. プロダクトに向き合え

    View full-size slide

  33. Howに囚われるな!!!!


    (本日2度目)

    プロダクトに向き合え

    View full-size slide

  34. 問題はプロダクトの中にあるし


    課題の解き方はプロダクトに左右される

    プロダクトに向き合え

    View full-size slide

  35. って話をすると現れる話



    プロダクトに向き合え

    View full-size slide

  36. ???「リリース優先なんで」



    プロダクトに向き合え

    View full-size slide

  37. ???「リリース優先なんで」

    ↓

    YAGNIを言い訳に使うな!!

    プロダクトに向き合え

    View full-size slide

  38. 妥協しなかった者だけが


    質とスピードは両立する

    プロダクトに向き合え

    View full-size slide

  39. プロダクトに向き合え
    https://speakerdeck.com/twada/quality-and-speed-2020-spring-edition

    View full-size slide

  40. プロダクトと向き合った先に


    真の目指すべきアーキテクチャがある

    プロダクトに向き合え

    View full-size slide

  41. ● リファクタリング

    ○ 振る舞いを変えず、コードだけを変える

    ● リアーキテクチャ

    ○ サービスを変えず、アーキテクチャから変える

    ● リプレース

    ○ サービスから変える

    どこを変えたいのか

    View full-size slide

  42. ● リファクタリング

    ○ 振る舞いを変えず、コードだけを変える

    ● リアーキテクチャ

    ○ サービスを変えず、アーキテクチャから変える

    ● リプレース

    ○ サービスから変える

    どこを変えたいのか
    サービスがうまく行っていて、コードの品質だけが問題
    ならこのアプローチ。
    上手く行ってるサービスはこれでよい。
    日常的にやるべきこと

    View full-size slide

  43. ● リファクタリング

    ○ 振る舞いを変えず、コードだけを変える

    ● リアーキテクチャ

    ○ サービスを変えず、アーキテクチャから変える

    ● リプレース

    ○ サービスから変える

    どこを変えたいのか
    パフォーマンスやリリースサイクルの改善などがやりたい場
    合はここ。
    エンジニアがやりたいことはリアーキテクチャでよく、リプ
    レースではないことが多い
    小さくコンポーネント単位で置き換えることができると成功す
    ることも多く、腕の見せ所

    View full-size slide

  44. ● リファクタリング

    ○ 振る舞いを変えず、コードだけを変える

    ● リアーキテクチャ

    ○ サービスを変えず、アーキテクチャから変える

    ● リプレース

    ○ サービスから変える

    どこを変えたいのか
    様々な理由で選ばれる。
    大体失敗するし、真に必要な場合は少ない。
    真に必要な場合、リアーキテクチャの後に行う方が安全
    なことが多い。
    1億歩譲って式年遷宮するとしても、小さくすべき

    View full-size slide

  45. プロダクトに向き合え

    View full-size slide

  46. セカンドシステム症候群にならない



    プロダクトに向き合え

    View full-size slide

  47. セカンドシステム症候群にならない

    ↓

    小さくリリースする

    プロダクトに向き合え

    View full-size slide

  48. 1. 自己紹介

    2. 技術的負債と共に歩む

    3. プロダクトと向き合え

    4. 技術選定と未来への投資

    5. まとめ

    あじぇんだ

    View full-size slide

  49. 投資をするなとは言ってなくて


    ちゃんと投資は回収しましょう

    技術選定と未来への投資

    View full-size slide

  50. 負債を作るなと言ってなくて


    負債はちゃんと返済しましょう

    技術選定と未来への投資

    View full-size slide

  51. 結論から言えば、決断のコツは失敗できるようにすることだ。

    失敗できる状態なら決断することができる。

    そして素早くアクションして、失敗のフィードバックを受け取ることで新しい決
    断をすることができる。

    もう少し具体的に踏み込むと、決断をするとき、

    自分は次のようにステップを踏む。

    1. 決断するために必要な条件を整理する 

    2. 決断が難しい場合は、素早く始め、小さく失敗できるように考える 

    3. 失敗が難しい場合は、社内外も含めて多くの知見を集める 

    4. それでも難しい場合は、結論をできるだけ先伸ばす 

    5. 難易度が高く、失敗も許されず、今決断しなければいけない場合は 

    一番ダメージの少ない 方法を選ぶ

     大体、1~4で解決する。1と2でまとまるような決断は小さな決断だ。チーム
    に任せて手を離すこともセットで考える。 3からが難しいとされる決断になる。

    特に5の場合においては結論は数年後だったりするし、答えは無いので腹を
    括って決断するしかない。

    https://soudai.hatenablog.com/entry/2022/01/04/151923

    View full-size slide

  52. 技術の選び方



    技術選定と未来への投資

    View full-size slide

  53. 技術選定と未来への投資

    View full-size slide

  54. 自分たちの解くべき問題を考える



    技術選定と未来への投資

    View full-size slide

  55. 自分たちの解くべき問題を考える

    ↓

    世の中のHowが解いた問題を知る

    技術選定と未来への投資

    View full-size slide



  56. 愚者は経験から学び


    賢者は歴史から学ぶ


    – オットー・フォン・ビスマルク 

    技術選定と未来への投資

    View full-size slide




  57. 技術選定と未来への投資
    https://speakerdeck.com/twada/worse-is-better-understanding-the-spiral-of-technologies-2019-edition

    View full-size slide



  58. 優れた芸術家は模倣し、


    偉大な芸術家は盗む


    – パブロ・ルイス・ピカソ

    技術選定と未来への投資

    View full-size slide

  59. 1. 自己紹介

    2. 技術的負債と共に歩む

    3. プロダクトと向き合え

    4. 技術選定と未来への投資

    5. まとめ

    あじぇんだ

    View full-size slide



  60. Better late than never. 


    遅くても、やらないよりはやったほうがいい



    – @miyagawa

    まとめ

    View full-size slide

  61. 先人から学ぶために


    本を読みましょう

    まとめ

    View full-size slide

  62. 一冊だけおすすめの本


    今日はご紹介します

    まとめ

    View full-size slide



  63. “手を動かした者だけが、世界を変える”




    株式会社はてな id:onishi

    自律を勝ち取る

    View full-size slide

  64. ご清聴ありがとうございました



    まとめ

    View full-size slide