自社製品の開発をアウトソーシングよりも社内で採用する理由は何ですか。数個しか考えられませんが、十分な理由があるかどうかは完全にはわかりません。
これは、実際に私がクラスで行うことになる討論のためのものです。私はアウトソーシングの部分にもっと傾倒していますが、残念ながら、私はディベートの社内側に切り替えるように求められました。
何か案は?
(反論については Joel's take on it を参照してください。)
ソフトウェアが戦術的または戦略的に使用される場合、またはビジネスの中心となる場合、ビジネスを理解するプログラマーがいることが鍵となります。また、サポートとライフサイクル、およびリリース後にシステムをサポートするために会社にかかる費用についても理解する必要があります。
コストは一般的に本当の要因ではないと思います。誰かがそれを主張している場合、彼らは無知または嘘をついています。あなたがアウトソーシングする場合、あなたは彼らの費用に加えて他の誰かの利益率を支払っています。地理的な労働市場の違いによる節約は、通常、コミュニケーションと教育のコストの増加ですぐに埋め合わせられます。また、発展途上国が理由でそのように呼ばれているため、速度の違いは以前ほど大きくありません。
世の中にはたくさんの種類のソフトウェアがあります。多くの場合、あなたは何かを外部委託して大丈夫です。問題は、その決定はケースごとに行われる必要があり、1つのサイズですべての状況に当てはめることはできないということです。
意思決定の過程で探すべきことはたくさんあると思います。
特定のコアソフトウェアの開発を、その種の作業に特化した会社に簡単にアウトソーシングできる場合があります。たとえば、デバイスドライバーやWebサーバーなどのシステムレベルのものは、アプライアンスを作り、ビルディングブロックよりもユーザーエクスペリエンスに特化したいと考えていた会社。
一方、そのWebサーバーを特別な方法で駆動し、それが十分に指定されている場合でも、このコンポーネントを主要なマルチフェーズ開発イニシアチブに密接に結び付けることになります。それをアウトソーシングしたいと思います。
これは遅い回答ですが、より一般的なのは、「なぜ企業Xは外部委託するのではなく、自社で採用するのか」です。 -つまり、すべてを外部委託する単一のCEOではなく、なぜ企業が存在するのでしょうか。 -「会社の理論」と呼ばれている
http://en.wikipedia.org/wiki/Theory_of_the_firm
さまざまな理由でかなりの証拠と研究があり、さまざまな労働力と資本をアウトソーシングするか、「インソース」するかについて、多くの知識が必要です。
社内で行う理由の1つは、特定の国にエクスポートできないデータ暗号化技術を使用しているためです。
反復モデルを使用して対面でコミュニケーションできる小さなローカルの開発者チームを使用すると、ソフトウェアを間違いなくより速く、より高品質で実行し、顧客の期待に応えることができます。
反復モデルは、おそらくアウトソーシングでは効果が低くなります。アウトソーシングには、BDUF(大きな設計の事前)を使用して、より多くの作業開発要件が必要です。
アプリケーションが大きく、ありふれたものの一部を小さく、明確に定義されたライブラリに分割できる場合、それらの作品を作成するためにアウトソーシングが貴重になる可能性があります。
会社が開発を行うためのリソースや、開始するためのノウハウさえなければ、アウトソーシング(ローカル)は理にかなっています。たとえば、Androidアプリを作成したいと考えている靴会社です。社内でそれを行うことにはあまり意味がありません。ソフトウェア会社の場合、プロジェクトのアウトソーシングはあまり意味がありません。ただし、一部のギャップは外部の請負業者で埋められる場合があります。
アウトソーシングには別の形式があります。企業を買収して製品を入手し、ブランドを変更します。つまり、大企業は既存の製品を探して購入し、自社製品としてブランド変更します。その正味の効果は、基本的にアウトソーシングと同じです。
オフショアリングについては、それは必ずしもマネージャーがあなたに考えてもらいたい良い財務上の決定とは限りません。ほとんどの開発に必要なドメイン知識(業界知識)が多すぎて、単純にそのように「購入」することができず、リモートチームがそれをガイドするための仕様のみで複製することは非常に困難です。
おそらくあなたは知らないので正確に何を構築する必要があるか。
私たちは小さな内部チームしかなく、小さな外部チームしか使用していませんが、内部で作成されたソフトウェアは常に外部で作成されたソフトウェアよりもはるかに優れています。
内部的には、文書化されたパターン、適切なビジネスレイヤーロジック(実際のロジックがどこにもないDataTableを返すデータレイヤーの他のメソッドを呼び出すクラスだけでなく)を使用しており、他のアプリケーションから再利用できるコードのライブラリがあります。私たちのドメイン。
さまざまな要因によって異なります。
ソフトウェア製品を開発している場合;明らかに、それに関連するいくつかの秘密の計画、機密性、新しいアイデアなどを持っている必要があります。これにより、ソフトウェア開発要件をアウトソーシングするよりも社内で行うほうが好まれます。
一方、予算が限られている場合や、筋金入りの開発ではなく、営業活動やマーケティング活動に集中したい場合、または現在のチームが処理できるよりも多くのワークフローがある場合。ソフトウェア開発のアウトソーシングで行くことができます。
したがって、それはすべてあなたの好みに依存します。どちらのオプションにも独自の長所と短所があります。簡単なウェブサイトを開発する必要がある場合は、ウェブサイト開発会社にそれをアウトソーシングするよう依頼し、ソフトウェア製品にCRMまたはERPと表示させる必要がある場合は、社内で行うことを好みます。