無駄な複雑さを制御するために、開発環境に正式な役割(内部または外部)を割り当てる必要がありますか?


8

数年前、私は社内のフレームワークの開発にこれまで取り組んできた小さな会社で働いていました。彼らは彼らの最上級の開発者とそのアーキテクトをカスタムMVCフレームワークとORMをゼロから開発することに専念していました。これらの2つは、コア製品と直交しています。残念ながら、このフレームワーク主導のアプローチのサポートは上から来たものであり、収益を生み出すソフトウェアの配信を遅らせました。そして、生成されたフレームワークは、既製の代替品よりも著しく劣り、遅延をさらに悪化させました。会社はすぐに現金を使い果たし、最終的には全員が解雇された。

後の雇用主も同様のミスを犯しました-彼らは非常に技術的に熟練した開発者-完璧主義者を手に入れました。このソリューションは、他の顧客に合わせて拡張することができます。プロジェクトは大幅に実行されました。しかし、他の潜在的な顧客は少しもしません。金運の戦略的失敗、それは少額の財産です。

どちらの場合も、かなりの量のオーバーエンジニアリングがありました。どちらの場合も、会社とプロジェクト管理は、プログラミングのバックグラウンドではなく、ドメインまたは分析のバックグラウンドを持つ人々でした。どちらの場合も、ソフトウェアアーキテクトは過度に複雑なソリューションを構築して、かゆみを掻き消し、履歴書を強化しました。どちらの場合も、アーキテクトはコストを抑えることに利害関係がありませんでした(会社が倒産した場合に仕事を失うリスクは別として、それは彼らの高いエンプロイアビリティを考慮するとそれほどリスクはありませんでした)。

私の経験によれば、開発ショップが陥るのは珍しいことではありません。

正式な内部または外部の技術的な敵対的な役割-「量測量者」-建物のアナロジーを使用して、無駄なオーバーエンジニアリングを呼び出したり、防止したりするためのソフトウェアプロジェクトの場所はありますか?この役割を果たすのに最適なのは誰ですか?


3
「YAGNI」が印刷された紙で置き換えることができる人物の立場を正当化できるかどうかはわかりません。;)
vaughandroid 2013年

2
ドラフトでは、「YAGNIエンフォーサー」としての役割について説明しました。残念ながら、YAGNIの認識は、特に非アジャイル環境で観察されることを意味しません。
user104662 2013年

3
「完璧主義者、エンタープライズ設計パターンに強力な根拠を置いてエンジニアを大幅に
強化

1
おそらく脳細胞が少ない投資家や重要な株主がこれに適した候補になるでしょう。誰かがお金に焦点を当て、お金を使い、どれだけ早くお金を取り戻すか。投資家が賢くないというわけではありません。通常はお金ではないので、投資家も気にしないことがあります。
Andyz Smith 2013

2
プロジェクトを監督する最も上級の開発者(および、もしあればアーキテクト)が、この種のものを監視するまさにその者であるように思えます。また、どちらの場合も、開発者の意欲を駆り立てる(煩わしい)ための実際のプロジェクトマネージャーが不足しているようにも思えます。
Rig

回答:


6

「複雑さの制御」は次の仕事です。

  1. システムおよびエンタープライズアーキテクチャが現在のプロジェクト/製品に適していることを確認することを担当するアーキテクト。

  2. 正しいだけでなく保守も可能デザインとコードを作成し、他の開発者のコ​​ードをレビューして理解できるようにすることを担当する開発者。そして

  3. ビジネス/システムアナリストまたは製品の所有者。その仕事は、ビジネスが実際に現在必要としているもの、後で完了することができるもの、またはまったく実現できないものを解明することです。

「複雑さ」はとにかく抽象的な概念であり、「複雑さを減らすこと」がそもそもソフトウェアの目的であることは間違いないので、それに専念する役割を提案することは意味がありません-それが全体ですチームはすでにやっているはずです!

ROIとTCOをざっと見てみると、ソリューションが本当に真に過剰に設計されていることが示されているとすれば、それに取り組んでいるアーキテクトと開発者およびアナリストは単にそうではなかったと申し訳ありません。彼らの仕事はとても上手です。そして、その側面を担当するのは、彼らを雇ったマネージャーまたはエグゼクティブです。おそらく、彼らはオーバーエンジニアリングの文化を育ててきており、部分的に欠陥を抱えているか、実装チームから悪いアドバイスを受けているだけかもしれません。

私はおそらく(おそらく)あなたの会社で働いていなかったので、それを推測するつもりはありませんが、1人または1人と1対1の会話をするだけでかなり簡単に理解できると思います。上記のマネージャーのいくつか。


ちなみに、社内フレームワークの開発必ずしも悪いことではありません。これらのフレームワークは一般に、現在のプロセスの観察と改良に基づいている必要があるだけです。既存のコードをリファクタリングして作成されるフレームワークやライブラリは、長期間続く傾向があります。一方、人々が飛び込んで、まったくコンテキストのないフレームワークの開発を始めた場合、それは通常、すぐに責任となります。

人々は慣習の違いを認識できなければなりません(組織のほとんどのプロジェクトは、一定量の定型コードを使用して同じテクノロジースタックを使用しますが、それをすべて「フレームワーク」にまとめることは良いことではありませんアイデア)対複製(人々は文字どおり同じビジネスまたは技術的な問題を何度も繰り返し解決しており、その不一致は複雑な設計と深刻な欠陥につながります)。ソフトウェア企業は後者のシナリオを認識でき、またそうすべきであり、複雑さを軽減するために積極的に対策を講じます。フレームワーク内部プラットフォームの効果に負けない限り、複雑さを軽減します。


いい答えです。箇条書き4を追加したいと思います。他の役割(1〜3)が技術的負債を返済できるようにする管理が必要になります。これにより、現在のリリースでの開発がスピードアップします。これは、1〜3人が後で必要に応じてリファクタリングできることを知っているためです。管理者が常に新機能のために利用可能なすべてのリソースを使い果たしている場合、アーキテクトと開発者はすべての潜在的な将来の問題を解決しようとする柔軟なフレームワークの発明に向けられます。それはほとんど不可能であり、原作者が説明した問題を引き起こします。
Andreas Huppert 2013年

1
@AndreasHuppert:経営陣はリファクタリングの考え方を理解する必要があり、チームは新機能に100%の時間を費やすことはできないことに確かに同意します-十分に運営されているチームの場合、その数値は20%以下になるはずです。残りは、計画、テスト、コードレビュー、自動化、リファクタリング、デバッグなど、そしてもちろん通常のオーバーヘッドと中断によって占められています。しかし、時間の不足がこれらの恐ろしい内部プラットフォームにつながるのは、私が同意するかどうかわかりません。チームにリファクタリングの時間さえない場合、どこでそれらの時間を見つけることができるでしょうか?
アーロンノート2013年

1
それは、投資をプラットフォーム/フレームワークに販売して、投資収益率の高い投資として管理することが可能だからです。リファクタリングは魅力がはるかに少なく、販売が困難です。
Andreas Huppert

5

正式な内部または外部の技術的な敵対的な役割-「量測量者」-建物のアナロジーを使用して、無駄なオーバーエンジニアリングを呼び出したり、防止したりするためのソフトウェアプロジェクトの場所はありますか?この役割を果たすのに最適なのは誰ですか?

いいえ、通常、そのような立場はありません。

コツは、仕事に適した人を雇うことです。過剰設計するつもりがなく、必要なことだけを行う人々。

これは、アジャイルアプローチを使用して行うことができます(反復で要件を実装する、TDDまたはBDDを使用するなど)。しかし、繰り返しになりますが、アーキテクチャが過度に設計されている場合、それは役に立ちません。

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