パンくず
書籍 Refactoring to Patterns
Why I wrote this book
Under-Engineering
概要
Under-Engineeringについて
詳細
「Under-Engineering」は「Over-Engineering」より一般的な問題です。
様々な理由により貧弱に設計されたシステムのことです。
例えば以下のような要因があります。
・納品までの期間が短く製造時間やリファクタリングを行う時間がない
・開発者のコーディング、設計に関する技術力不足
・既存システムへの機能追加をすぐに行うことを求められる
・一度に多数のプロジェクトを並行して担当する
一度開発された、「Under-Engineering」によるシステムは拡張に多くの費用を要し、
メンテナンスが困難であったり、メンテナンス不可能なゴミシステムになります。
Brain FooteとJoseph Yoderの『Big Ball of Mud』に以下のような特長が書かれています。
・データ構造がでたらめ
・何でもかんでもグローバル変数で宣言
・変数名、関数名が意味を成しておらず、下手をすると誤解を招く名称になっている
・関数が長く複雑で複数の役割を果たしている
・コードが重複している
・処理の流れを理解するのが困難
・プログラマーの意図を汲み取ることが出来ない
・単にコードが読みにくい
など。
しかしこういうシステムに限って、修正をすることを許されません。
マネージャーが「壊れない限り修正するな」というのです。
そして、システムの開発はフェーズを減るにつれて
早い→遅い→より遅い→メンテナンス不能になりスクラッチから再構築
という状態になっていきます。
この種の問題はこの業界でよく見受けられます。
この問題により、組織は競争力を失います。
このような組織が衰退することは結果として好ましいことではありますが。
ポイント
日本の開発現場ではありがちすぎて笑えないレベル。
特にマネージャーのくだりとか・・・。
自分自身については継続した学習で技術力を身に付ければいいですが、
現場のチームの開発レベルがあまりに低かったり、無理難題な工程での作業を
強いられた場合はお手上げになりがち。
参考資料
Brain FooteとJoseph Yoderの『Big Ball of Mud』>http://www.laputan.org/mud/mud.html#BigBallOfMud