昨日の技術的負債に今日の悪を責める


38

現在サポートしているアプリケーションで、当初作成しなかった驚くほど多くの品質、スケーラビリティ、および負荷の問題が発生しています。ありがたいことに、私は正気を保つために一からやり直した新しいプロジェクトがあります。

元のチームは20人の開発者(ほとんどが時代遅れのスキルセットを使用)で構成され、ビジネス要件ドキュメントや品質保証テスターはなく、最初からウォーターフォール方式で管理が不十分でした。制作の初期は、もろい手続き型のコードをさらにもろい修正で修正することを伴う恥ずかしい悪夢でした。後に追加された機能は、それらをサポートすることを意図したものではないデータモデルに組み込まれ、同じコードが10回重複して表示され、リソースが安全に閉じられず、何万ものエンティティをフェッチするORMクエリが表示されることも珍しくありません一握りを除いてすべてを捨てる。

それは私だけであり、新しい問題が発生するたびに、モジュールをより良い標準に書き換えて、はるかに安定させますが、管理者はこのすべてが発生する理由について適切な説明が必要です。

彼らは、このアプリケーションの質が低く、技術的負債にownれているという概念にショックを受け、当惑しているように見えます。幸いなことに、彼らは技術的負債の概念を理解し、それを根絶するために私の探求の私をサポートし、彼らは非常に協力的で、私の感謝ですが、私はちょうど続けるかのように私は感じて非難すべての異なる別のプロジェクトを台無しに左のオリジナルチームを(分割)。

一番下の行は、私は彼の前にプロジェクトの開発者について常に文句を言う「あの人」になりたくないということです。私は以前、自分のキャリアの中で無知であり、物事をそのように奨励する状況やデザインの影響を考慮していないと感じた人々からこの態度を見てきました。

通常、私は、以前のチームを、より多くの上級メンバーが経験し、恩恵を受けた人生経験を持っていない理想主義的なジュニア開発者からの貧弱な設計と実装のために非難するこの態度を見る。

あなたの前に人/チームの評判を踏むことなく、これらの種類の問題を経営陣に報告するより良い方法、おそらくもっと柔らかい方法があると感じますか?


17
非難ゲームをプレイしないことについての質問では、質問の約50%を構成する3つのパラグラフを前のチームについて暴言するのは皮肉です。そして、質問[bad-code]と[bad-programmer]にタグを付けました。
アーロンノート

8
@Aaronaught、わかりました、噛みますbad-code、コードが実際にバグと問題を引き起こしているので、私はそれをラベル付けしました。bad-programmer前のチームを非難することで自分が1つになっているのではないかと恐れているので、それをラベル付けしました。最初の3つの段落が考慮される限り、おそらく私はその記述的である必要はありませんでしたが、私の現在の状況の正確な絵を描き、これまでに収集したものの歴史を伝えたかったのです。
maple_shaft

2
...それで、そこに暴言の要素がありますか?ええ、私はそう思いますが、私は死を願うADHDの子供のように動作するアプリケーションの乳母にうんざりしています。
maple_shaft

2
私はあなたに同情します。私がやります。しかし、あなたが蒸気を吹き飛ばしたり吹き飛ばしたい場合は、チャットシステムがあります。建設的な質問は中立的なトーンを持ち、そのような不必要な詳細を省く必要があります。
アーロンノート

私の人生の物語
イウリアンOnofrei

回答:


46

技術的負債は金融負債のようなものです。あなたは、将来的に報われるという意図を持って、プログラムの開発において(できれば)戦略的にそれを引き受けます。時々、人々は技術的な負債の決定を下します(クレジットカードを使い果たすなど)が、時には一定量の技術的な負債が正常な場合もあります。将来変更する必要があるという前提で、今日何かを「正しい」方法にするために時間を費やさないことを決定することは完全に正常であり、予想されるべきです。もちろん細かい線はありますが、最初に正しい方法にすると考えれば、独自の問題が発生する可能性があります(分析麻痺)。

要するに、数年以上続く重要なプロジェクトは、技術的な負債を返済するために新しい開発時間を費やす必要があります。問題は、アプリケーションを正しい方法で作成したとしてもこれは事実です。あなたがそうでないなら、あなたは借金に借金を積んでおり、経営者はあなたがそれをそのように提示すればそれを確かに理解することができます。

これを経営陣に説明し、以前のチームを常に「非難」する代わりに、これを「通常どおりのビジネス」として提示できます。


4
+1は、プロジェクトが技術的負債を負うために(正しく!)選択する方法についての非難のない非常に良い説明です。
ジョリスティマーマンズ

1
@Nemi:技術的負債と金融負債の重要な違いの1つは、後者を定量化する方がはるかに簡単だということです。(利子の累積と金融債務の繰り返しを考慮に入れても)返済するために残した金銭的負債を知ることは、技術的負債で行う方がはるかに簡単です。これはmaple_shaftの問題を悪化させる1つのことだからです。
ベン・ホッキング

2
@Ben-あなたは絶対に正しいです。すべての類推と同様に、これは顕微鏡下で故障します。ただし、比較は依然として高いレベルで安定しています。本質的に詳細を省き、そのレベルで経営陣に話します-技術的な問題ではなく、ビジネス上の問題として。基本的に、長期にわたるプロジェクトには一定の技術的負債が蓄積されるため、時間が経つにつれて開発に追加費用がかかることを意味します。これは隠されている(そしてよく理解されていない)ので、それが話題になっていることを確認することは誰にとっても最大の利益です。
ネミ

2
+1「アプリケーションを正しい方法で作成しても、これは事実です。」
マウリシオシェファー

1
@radarbob私は同意しません-金融負債のように、それが悪運または愚かさのために意図的に行われたかどうかは関係ありません-誰かが将来それを支払う必要があります。この用語は、原因に関して本質的に中立です。
ハルク

23

IMOの場合、これについてはすでにほとんど正しい方法で行っています。「古いコードはダメ」という理由でゼロから書き直すことを提案しているのではなく、一度に1つの問題を修正しています。

あなたが古いチームを非難していると感じないようにするには、彼らが恐らく大きな時間的プレッシャーの下でこのコードを作成しなければならないと想像してください。当時の経営陣は、コードが「多かれ少なかれ機能する」からといって、多くの苦痛とやり直しなしにメンテナンスが可能であるということを意味するわけではないことをおそらく理解していなかったでしょう。

実際にある程度のビジネス価値を提供する製品を作成するために管理している古いチームに感謝します。そうしなければ、もはや使用されなくなります。たとえプロジェクトが美しく書かれていても、プロジェクトがビジネス価値を提供できない頻度に驚くかもしれません。


3
+1:高品質な製品の提供に失敗した古い経営陣を非難し、(願わくば)新しい経営陣がメッセージを受け取る(または、あなたを追い払う、両方のケースがあなたに関する限り勝利である)
gbjbaanb

15
@gbjbaanb-誰も責めるな!誰のせいにもしないでください。現在の状況と希望する状況を確立し、そこに到達する必要がある方法と理由について論理的な議論をするだけです。
マーマンズ

ええ、新しい管理者がいることを確認してください。同じボスがまだいる可能性があります。そして、たとえ彼が先に進んだとしても、彼はそこのどこかにいます。バスの下に人を投げて回る前に、必ず確認してください。
フィリップ

誰のせいでもないくらい簡単だったらいいのに。経営陣は、指を指す誰か/何かを主張します。私が指し示す人または人々のグループを指してはいけない場合は?
maple_shaft

4
@maple_shaft-だから、経営陣への私の答えで私が作った議論をし、彼らがまだ「非難」を主張しているなら、あなたが見つけることができる限り多くのサイトに履歴書を投稿してください。他の人が指向けていないことを非難することにします
ジョリスティマーマンズ

7

問題のある製品の現在の状態についてコメントするよう求められたとき、私はいつも「それが何であるか」に頼り、それからそれを改善する計画について話し始めました。

この問題を引き起こした決定に至った要因のすべてを知っているわけではありません-おそらく、それらは当時合理的だったかもしれません。あなたにできることは、前進して明日物事を改善することだけです。そして、あなたは良い仕事をしているように聞こえます-あなたはこの状況に対して正しい態度を持っています。

尋ねられたときに事実を報告することに焦点を合わせます。物語や解説を追加する必要はありません。「ケースXでシステムが失敗する」または「ケースYでレポートが正しくない」と言うだけです。次に、現在の状況を改善する計画をすばやく追加します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.