テトリスのような技術的負債

勝つことはできません。 あなたはどれだけ早く失うかを決める









次の動きは?



私もテトリスが好きな人が多い。 ニンテンドーゲームボーイで初めて友達と遊んだことを覚えています。 おそらく、その曲もあなたの頭に残っています。 テトリスは史上最高のゲームの1つであるだけでなく、技術的負債の大きな例えでもあります。 技術的な負債とその影響についての一般的な理解を提供します。



個人的な経験から、私のチームが何らかの請求コードで技術的な負債を減らし、同時にエラーを年間100万ドル修正した方法についてお話しします。









最初は、タスクは簡単で、難易度は低い



ソフトウェア会社では、製品/プロジェクトマネージャーと開発者が、次のリリースでどのコードを記述して顧客に送信するかを決定します。 テトリスで行を終了することは、関数を解放するようなものです。









複雑な機能は完全に実行可能であり、技術的な負債はほとんど増加しません。



複雑な関数を発行するには、 いくつかの行を完了する必要があります。



多くの場合、ビジネスニーズ(新機能、新製品)は、期限を過ぎないように、コードの妥協(ハッキング、回避策)につながります。 または、製品戦略の変更は以前の設計と互換性がなく、クライアントを移行するか、「新しい」ロジックと「古い」ロジックの両方をサポートするための追加の努力が必要です。









小さな技術的負債は正常で管理しやすいです。



このようなシナリオでは、コード内に技術的な負債が生じます。 テトリスの隠されたパスは技術的な義務です。



コードには技術的な義務があります。 これは正常です。 数回のパスで引き続きプレイできます。









技術的負債に埋もれている



技術的な負債が多すぎると、新しい機能をリリースしたりバグを修正したりするのに十分な時間が与えられません。



この問題は、新しい開発者を追加したり、さらに劇的に既存の開発者を置き換えたりしても解決できません。 これは技術的負債と呼ばれます:ある時点でそれは支払われなければなりません。



技術的な借金を返済することで、競争力を高めることができます。 それはあなたをゲーム内に保ちます。









ゲームオーバー



テトリスのビジネス管理と同様に、時間の経過とともに複雑さが増します。 形状はより速く動き、追いつくのが難しくなります。



ビジネスのように、ここで勝つことは不可能です。 実際のフィニッシュラインはありません。 唯一の質問は、どれくらい早く失うかです。



ビジネスのように、テトリスのギャップが多すぎると損失につながります。



百万ドルのバグ



少し前、私のチームは、製品コードの請求/請求ロジックを更新して、新しい価格設定プラン、新しい支払いプロセッサをサポートし、請求プロセス全体を改善するように指示されました。 いくつかの詳細はまだ明らかにされていなかったので、今回は既存のコードを深く掘り下げて、今後の変更のより正確な推定値を提供しました。



このコードの主なタスクは、すべての顧客のアカウントを調べて、それぞれを計算し、請求書発行のためにAPIに情報を送信することでした。 システムは細心の注意と善意で書かれました-ずさんなほど柔軟ではありません。 モノリシック機能。 テストなし。 非常に少ないログ。 ドキュメントは実質的にありませんでした。 いくつかの不可解なランダム化がありました。 創設者の1人が5年以上前にシステムを作成しました。 その後の唯一の変更は、すでに会社を欠席していた最初の従業員の1人によって行われました。



問題はありましたか? 請求書が請求されました。 会社はお金を稼ぎました。 問題の兆候はありませんでした。 これはすべてリファクタリングに反対しましたが、大きな変化が来ることはわかっていました。この関数はニーズに合わせてスケーリングすることはできません。



あるスプリントで、機能を再設計し、非常に必要なログを追加しました。 そのとき、実際に修正したことがわかったのです。 会計士の一人が私たちの机に立ち寄って、なぜ送り状の数が予想外に増えたのかと尋ねました。 古いコードは静かにタイマーで落ちました-そして、いくつかのクライアントは処理されませんでした。 奇妙なランダム化? 彼女は、一部のクライアントに請求書が発行されていないことを明らかにできるモデルを隠しました。 アセスメントを実施したときに、不足している請求書を年間100万ドル以上計算しました。



支払いは必ずしも報われるとは限らない



話は完全に真実ですが、技術的負債の返済は必ずしもそのような劇的な効果をもたらすとは限りません。 ラッキーです。









技術的負債の適切なバランスを見つける



技術的な負債を返済する必要がある場合、賢明なアドバイスをしたいと思います。 残念ながら、答えは難しいということです-そして、常にバランスが取れています。 あなたは世界で最もクリーンで、最もよくテストされたコードを持っているかもしれませんが、クライアントは持っていません。 そしてその逆に、あなたの会社は本当に汚いコードで働くことができますが、それは顧客を満足させ、お金は川のように流れます。



製品の所有者と開発者の両方が技術的負債の本質を理解しなければならず、それを永遠に回避することはできないとしか言​​えません。 最後に、テトリスのように、ここでは決して勝てません。



All Articles