私は最近、私の会社がメンテナンスを支援し、マイナーな機能を追加するために雇いたいと考えている 2 人の候補者に、私が書いた (社内の) アプリケーションを説明する立場にいることに気付きました。
これは私が書いた最初の「プロダクション」アプリケーションで、45,000 の LOC を持ち、「ソロ」開発にほぼ 2 年を費やしました。私はかなり若い (18 歳) で、会社を辞めた元開発者の代理として契約されながら、アプリケーションをゼロから作成しました。このサイズのアプリケーションを設計する経験がなかったので、共通のアーキテクチャおよび設計パターンを使用しようとしました。
今日、選択した ORM が既に実装している Unit Of Work パターンの代わりに、切断された変更追跡アーキテクチャを使用するなど、深刻なオーバーエンジニアリングを行ったことを知っています。「本当の」3層に行く必要はおそらくないでしょう。
両方の候補者は、関連するプラットフォームを使用した社内アプリケーション開発で 10 年以上のバックグラウンドを持っています。彼らの半分の年齢で、経験も浅い私は彼らの意見を尊重します。彼らにアプリケーション アーキテクチャを説明していたとき、次のようなコメントがありました。
- ええ、そんなことをするために誰も私にお金を払ってくれません。私は物事を成し遂げなければなりません
- フレームワークの機能に固執し、派手なライブラリ/テクノロジーを使用しないでください
- フレームワーク コードをラップしないでください。チームでは、とにかく全員が独自のラッパー コードを記述します。
- .NET 3.5 を使用していますか? さて、私たちは2.0を使用しています。
- その LINQ は私に何をもたらしますか? このすべてのクエリの構成と射影は複雑すぎるようです。
今、私は自問しています:
私は建築宇宙飛行士ですか? 自分が建築に行き過ぎていることをどのようにして知ることができますか? オーバーエンジニアリングの一般的な症状は何ですか?