一般的なソフトウェアエンジニアリングのデザインパターンの使用を拒否するマネージャーにどのように対処すればよいでしょうか?
Background
私は会社でソフトウェアエンジニアと TDD の実務家をしています。私のマネージャーはコーディング(必要に応じて)と彼のエンジニアの部下の管理にも責任を持っています。彼はそれが不必要であり、1つは可能な限り「簡単な」ようにコードを書くべきだと考えています。私が「わかりやすい」に引用符をつけたのは、私たちは「機能」の範囲が何であるべきかについて意見が合わないように見えるからです。多くの場合、その機能は私のマネージャーが考えているほど「簡単な」ものではなく、責任を分離し、(ほとんどがテストされていない)コードベースへの影響を最小限に抑えるためにデザインパターンの使用を必要としています。ある激論では、「彼は20年以上プログラミングをしている!」とまで言われ、彼の権威に疑問を抱く勇気すらないような言い方をされました。
私はこの問題を軽減しようとしたもの
- 私はなぜそれらを必要とし、どのような目的でそれらを提供するのか
- 私の設計が変更にはるかに適応性があることを受動的に示した
- 私が構築したコンポーネントは、他のほとんどのコンポーネントよりも大幅に低いバグカウントを持っています
- 正しく要件の変更を予想しています。このことは、その要件を満たすために必要な最小限のコード変更につながりました
- 私の思考プロセスと理由を説明することによって、私が挑戦されたときに、彼の懸念に前もって対処しました
- しかし、私はまだコードを過剰にエンジニアリングしたために叱責されています。
- 非公式に同僚と議論し、プライベートで意見を求めました
- 彼らのほとんどは私の十分な理由のあるアプローチを評価しており、ある人は私から多くを学んだとさえ言っていました。また、ほとんどのエンジニアは、私とコーディングの問題について話し合うのが好きで、有益なアドバイスをしたり、見落としていた点を指摘したりすることができるからです。一方では、バグのない、ユニットテストされ、設計されたコードを提供したいと思っています。一方で、私の設計は良い感じではなく、確かに「承認された」方法に強制することで私のコードを「複雑に」していると批判され続けています。
どのように我々は中間点を見つけることができますか?
Update
私はソフトウェア工学の原則に従うために私の独断的な、さらには熱狂的な態度について言及する多くのコメントを得ているので、私は明らかにすべきだと思います:
私は独断的であろうとしているわけではありませんし、熱狂的であろうとしているわけでもありません。デザインパターンを使っているかどうか、理解しているかどうかに関わらず、私のコードを読んで理解してくれる人のことを気にかけています。私は、コードレビュー中に同僚に私のコードを理解しているかどうかのフィードバックを求めました。彼らは理解していると言っていましたし、私がなぜそのような方法でコンポーネントを設計するのか理解していると言っていました。ある時には、私がデザインパターンを使うことで、設定のルックアップロジックを一箇所に集中させることができ、それが何十箇所もの場所に分散されていて、頻繁に変更しなければならないこともありました。結局のところ、何事もオーバーエンジニアリングとしか言いようがありません。
私がデザインパターンを使う上で、あるいは実際にソフトウェアエンジニアリングをする上でのモチベーションは、リスクを最小化し、会社に価値をもたらす(例えば、コードベースのロジックの不必要な広がりを減らして、一箇所で管理できるようにする)ことです。エンジニアは誰も理解していない設計パターンを適用することで自分たちを賢いと思っている」というような見下した回答ではなく、「どうすれば中間点を見つけることができるのか」というラインに沿った回答を探しています。