彼らはそれをReal World™と呼んでいます。
あなたが実際の企業の世界で遭遇するものの99%はがらくたと考えられます、そして私が説明する正当な理由のために。がらくたと見なされない1%は、最終的にはがらくたになります。
#1コードを書く、#2 ????、#3利益!
利益を得るためにまずビジネスが存在しますが、完璧な黄金のリポジトリに収められた完全に理論的にきれいに設計された原始的な学術コードの山を生成するためには存在しません。近いものではなく、彼らが作ったソースコードを販売するビジネスの人たちでさえありません。
ビジネスの世界では、コードは終わりへの手段です。一部のコードがビジネス上の問題を解決し、作成と保守にかかる費用よりも多くのお金を稼ぐ場合、ビジネスにとって望ましいことです。コードを書くためにあなたを雇うことは、ビジネスがコードを取得するための1つの方法にすぎません。
理論0-練習∞
理想的には、メンテナンスはより懸念されるべきですが、短期的には経済的に勝てないため、通常はそうではありません。長期的には、ソフトウェアのライフサイクルは通常比較的短く、特にWebベースのアプリケーションは、すぐに廃止され、より頻繁に書き換えられます。
社内の基幹業務アプリケーションは、勢いに基づく多くの理由により、無限のゾンビプロジェクトとして認識されているものとして変化し続けています。これらのプロジェクトは、ビジネスの利益を上げ続けているため、実際に成功しています。
理論的には、理論と実践に違いはありません。実際にはあります。-ヨギベラ
理論的には、100%のコードカバレッジを備えた完全にクリーンな原始的なコードベースを完全に設計すると、企業のお金を節約できます。実際には、有効な投資収益率に近いものを提供することさえできません。
ソフトウェアライフサイクルの物理
ソフトウェアの世界では、非常に強力なエントロピー力も働いています。それはすべてのソフトウェアが泥のビッグボールに退化することを非難する不可避のブラックホールです。
BBMから開始するほど良いですが、すべてのソフトウェアシステムは十分な時間を与えられて最終的にそこに到達します。エントロピーを100%に近づける速さは、どこから始めて、どのくらいの速さで技術的負債を積み上げ、それに対する関心がどれだけ高いかによって決まります。
ソフトウェアシステムは、メンテナンスが原因で劣化したり腐敗したりします。定義によりコードを変更せずに何年も使用されているシステムは、そのすべての要件と目標を満たし、成功しています。
エントロピーが最大エントロピーに近づき始めたために絶えず変化が必要なのはシステムであり、常に突かれて突進し、負の変化を加速するのはメンテナンスです。
Good Enough is Good Enough
絶えず変化するWebサイトのような短いライフサイクルシステムは、費用を回収するには償却時間が短すぎるため、ユニットテストで100%のコードをカバーする高価な巨大な先行設計の恩恵を受けません。
上記の内部ビジネスアプリのような長いライフサイクルシステムは、100%コードカバレッジユニットテストの大規模な投資の恩恵も受けません。これは、プロジェクトの存続期間にわたる変化率が、非線形ファッション。
そのため、寿命末期計画がより重要であり、交換システムは何かがリリースされたときに計画する必要があります。数年前にプライムを通過してサポート不能であったため、新しいシステムを急いで設置する必要があります。
私が知っている限り、彼らはBBMについて教えていません。最近のCSの卒業生に出会ったことはありません。
だからこそ、Good EnoughはGood Enoughであり、多かれ少なかれそうではないのです。
ソフトウェアスラムロード
不動産スラム街の大家がいるのには理由があります。彼らは自分たちが所有する貧民街の建物で利益を上げています。彼らは荒廃した財産の増分維持に費やすよりも多くの利益を上げます。そうでなければ、建物を取り壊して交換します。しかし、増分コストは建物全体のオーバーホールまたは交換よりはるかに少ないため、そうではありません。荒廃した不動産に対して喜んで支払いをする顧客(テナント)もいます。
建物の所有者、スラム街の主人、またはそうでない人は、関連する費用を上回る実質的な利益に変換されない完璧さの学問的概念のために、財産にお金を使うつもりはありません。
顧客が許容できる範囲で機能しているソフトウェアシステムのアップグレードに料金を支払うことはありません。目に見える実質的な利益なしに、コードを書いたり書き直したりするだけでお金を使うビジネスはありません。
マイクロソフトが最も支配的で成功したソフトウェアスラムロードです。Windowsはごく最近まで、主要な基礎的な書き換えを取得していませんでした。そして、彼らはまだすべてのレガシーコードをカーネルから落としていません。彼らにとってビジネスに意味はありません。人々は過去10年間に設定した期待の低い水準を喜んで受け入れるでしょう。
予後
これは、私がソフトウェア開発に携わってきた20年以上のパターンです。すぐに変更されることはありません。これは人々が何らかの信念体系から抜け出すことを望んでいる方法ではなく、ビジネスに対する外力の現実です。ビジネスは意思決定を後押しし、利益はあなたの給料を支払う悪ではありません。短期的または長期的なビジョンは無関係です。これは定義によって絶えず変化する短期的な業界です。利益を上げるのに十分な善に反対する人は、ビジネスを理解しません。
コンサルティングに15年を費やし、それだけで十分だということをすぐに学びました。完璧なものにしたかったのですが、ソリューションを販売している時間の99.99999%をコードベースで販売している場合を除き、きれいで整理されたエレガントなコードはすべて失われ、あなたは払い戻しを受けることのない時間を無駄にしているだけです。
進歩と希望
アジャイル手法は、少なくとも哲学的には正しい方向への良い一歩です。彼らは一流市民としての混乱と絶え間ない変化に対処し、それを受け入れます。彼らは、方法論と実践が要件と技術だけでなく変更されるべきであることを認め、独断的な実践を拒否します。
彼らは、時間の不足や要件の変更、スタッフの変更、技術的負債の概念を備えたソフトウェアシステムの活性化によってもたらされるエントロピーを受け入れます。
しかし、アジャイルは万能薬ではなく、物理学の基本的な法則を変更するものではなく、コードベースは関係なく腐敗します。腐敗が完全に手に負えなくなり、管理不能になる前に、腐敗への対処を計画するのは管理者の責任です。
アジャイルは正しく実行されると、エントロピーの管理、スローダウン、追跡、測定、計画的な方法での対処に役立ちます。止まらない!
キャリア決定
これがあなたにとって本当の哲学的な問題であるなら、おそらく他のキャリアの選択肢を考慮する必要があります。オープンソースプロジェクトにはこれ以上の実績はなく、多くの場合、コードは私が見たほとんどの企業コードよりもさらにひどいものです。