いろんな問題が技術的負債という一言にまとめられてしまっているので、負債の性質に合わせて、技術的奨学金、技術的FX、技術的年金、など用語を分けると良いのではないか、という話をした
変更困難パターン
期限付き返却パターン
- 期限と、その期限が過ぎることによるデメリットが、どちらかといえば見えやすい。そのため先に調査だけすることで新機能作成との優先度を比較がしやすい。簡単な調査を行い、実際のプロダクトバックログに乗せてしまうのが良い
- 可能ならの返却期限(Long-term supportなどの期限)と、絶対の返却期限(これを過ぎるとサービスが動かなくなる)の二つを可視化して、絶対の返却期限は守れるようにしておく
ヒヤリハットパターン
まとめ
今回は技術的負債のパターンと悪影響・原因・返却方法についていろいろ考えてみたことを書いてみた。この三つのパターンをあげてみたけど、実際にはパターンが組み合わさったりしてより複雑になっていることも多い。
例えば
- JSのフレームワークのバージョンが古くなっていて、Long-term supportの期限が切れそう
- サポートが切れた時に、ブラウザのdeprecatedの機能を使っていた部分がfixされないこともありそうで、どこかで動かなくなりそうという期限付きの場合がある
- またJSのフレームワークが古いため、開発速度のスピードが下がり(変更が容易でなくなり)、変更困難パターンも包含している
みたいなこととか?
これが正解だとも思えていないけど、技術的負債にパターンを見出し、それぞれの返却方法について深掘りしていくという考え方は良いような気がする。なので他の人はどういうパターンを見出しているのかとかを聞いてみたい。
2018/03/29 21:30追記
技術的負債、グッドパターンとアンチパターンに分けて考えてみたい気がする。計画的に借り入れられて、そのおかげでビジネスが成功して、計画的に返済できるのはどういうときなのかカタログ化したい https://t.co/5eZhXfL4Ma
中には「借り入れてるつもりじゃなかったのに負債化しちゃってる」みたいなやつがあるんだよな。これはなんかレベルを上げて殴る以外の方法で解決できない気がしている……
グッドパターンって返済時期の目安が決まっている(例えばサービス規模がこのくらいになったときには返済しよう)ものとかですかねえ。早すぎる最適化をしないとかもある意味グッドパターンかもしれない。
「借り入れているつもりじゃなかったのに負債化しちゃってる」というがほとんどだと思っていて、それってもしかしたら負債という言葉が適切じゃない気もしますね
たしかにそうですね。「なんのために借り入れるのか」というのが明確な負債はたぶん前向きな負債だと思っていて、それを取るのは悪いことではないことも多いと思っています。そういう負債と、「いつのまにか変更のコストがでかくなっちゃった」みたいなやつは分けて考えたい気持ちは大きいです
のですが、現在地点から見ると「このコードのせいで早く価値を届けるのがむずかしい」というのは一緒みたいなのはあるかも……とも思います
同じ悪影響でも理由は違うことはありますね。ただ今は「このせいでバグが起きやすい」「このせいで変更がしにくい」など、実際の起きている悪影響もまだちゃんと分離できてなくて、ごっちゃになっている気がするので、まずは悪影響の分離をしたい気がしますね
たしかに、「どういう負債の結果なにが起こるのか」の軸と「なんのためにその負債を取るのか」の軸は別の軸として考えたほうがよさそうな気がしますね
というのも、悪影響とその悪影響を取り除く時間を明確化できれば、他タスクとの比較が可能になるからです。ただし昨日言っていたとおり、悪影響が「開発時間」に影響をおよぼす場合、観測が難しいので、別指標に変換もしくは分離できるとさらに良いですね。
悪影響具合、返済コスト、あえて負債を作ることのベネフィットなどが少しずつ明確になってくると、グッドパターン・アンチパターンが見えてくる気がする
2018/03/29 22:00追記
さらにいい意見が出てきたので引用させてもらいます。
奨学金パターンで借り入れた返済が変更困難パターンを引き起こすこともあればヒヤリハットパターンを引き起こすこともあるみたいな感じで、技術的負債を取る目的と結果はやっぱり独立になる気がする。前者をカタログ化することで、「その負債をなぜ取る/取らないべきか」が議論できるようになり、
— しんぺいくんさん (@shinpei0213) 2018年3月29日
後者をカタログ化することで「どうやって返すか、いつ返すか(なぜ今返すべきなのか)」を議論できるようになる
— しんぺいくんさん (@shinpei0213) 2018年3月29日