常にサードパーティ製である必要がある機能は何ですか?

StackOverflow https://stackoverflow.com/questions/219915

  •  03-07-2019
  •  | 
  •  

質問

私の質問のきっかけは、 ジェフ・アトウッドからのこの投稿, 、 そして この郵便受け ダレ・オバサンジョより。少なくともいくつかの領域では、カスタム コードよりもサードパーティの機能の方が優れたアイデアであるように思えます。

たとえば、ログ記録は常にサードパーティのものであるべきでしょうか?暗号化はどうですか?それとも検索しますか?

これについての皆さんのフィードバックを楽しみにしています。

編集:この質問は、ログ記録、暗号化、検索が中核的なビジネスではないことを前提としています。

役に立ちましたか?

解決

状況によります。あなたのニーズ、そして最も重要なことには、使用する言語やAPIに合ったサードパーティのライブラリはありますか?それから行ってください。

独自のバージョンを作成する理由がある場合は、「ここで発明されていない」だけではないことを確認してください。また、必要なものについて市場のトップ5の主要製品を詳しく見ていない場合は、十分な仕事をしていないことになります。探しているものが見つかる可能性は十分にあり、使用できなくても、ライブラリの説明からも何かを学ぶことができます。最低限、必要な機能と不要な機能を学習します。ライブラリの1つにソースコードも取得する場合、これは、ソースコードはないがより多くの機能を備えた競合ライブラリよりも優先される選択肢です。

他のヒント

暗号化システムを販売するビジネスをしている場合を除き、暗号化はほとんどの場合サードパーティである必要があります。

私が理解したとおり、アトウッド氏のポイントはほとんどです。あなたのコアビジネスはサードパーティであってはなりません。 >

私の経験則では、あなたのビジネスの中心的な目的の範囲外にあるものにはサードパーティを使用します(または少なくとも検討します)。

暗号化は常にこの典型的な例です。しかし、それは他の分野にも広がっています。

開発中のトラブルシューティングのためのログコードの記述は、運用システムの監視に使用されるログコードの記述とはまったく異なります。

それは、開発のどの領域が実際にプロジェクトに価値を追加するかを選択することです。サードパーティのものを使用すると、そのコンポーネントが不完全/バグがあるなどのリスクがなくなります。ただし、必要な柔軟性ほど柔軟ではない可能性があります。

別の例は、はるかに安価にソリューションを購入できる場合に、WebサイトのWebフォーラム全体を開発することです。

"常にサードパーティにすべき機能は?"

なし。 「常に」の悪質な使用を無効にする例外または特別なケースが常にあります。本質的に工学的な決定を議論するとき。

さらに、第三者に行くという決定は、与えられた「機能」に基づいて行われることはほとんどありません。そのタイプの機能のために他に行く必要のない完璧なライブラリのようなものはありません。

サードパーティに行くことは、以下に基づいて行われるべき決定です

  • サードパーティに行くコストと社内で行うコスト
  • 期限に間に合わせるために必要な開発時間(つまり、社内では割安になる場合がありますが、開発タイムラインではそれを許可しない場合があります)
  • 統合、デバッグ、メンテナンス、アップグレードパスの容易さ-「仕事はするが、ほとんど」とは言えない何かを開発できるかもしれません。社内対今後何年もあなたの世話をするもののためのあまり多くのお金ではありません
  • テストと証明の容易さ/コスト-セキュリティパッケージをテストするのは非常に難しいことで有名ですよく

ただし。家に行くのが良いと信じるのが本当に難しいものがいくつかあります。たとえば、OpenGLとDirectXの競合他社を 作成できます。特定のアプリケーション(科学計算など)では、そのようなパスを検討する十分な理由があります。しかし、一般的にあなたはそれを夢見ません。 「無料」にもかかわらず、依然としてサードパーティの依存関係であり、これらのグラフィック言語の使用方法にのみ影響するバグのため、スキッドに陥ることがあります。

言い換えれば、信じられないほど複雑な、または証明/テストが難しいものがいくつかあり、それらはほとんど常にサードパーティに送られるべきです。セキュリティももう1つです。 1)信頼できるほどクレイジーであり、2)少なくとも3つの優れたビジネス上の理由がある場合を除き、独自のハッシュアルゴリズムを記述しないでください。

しかし"常にサードパーティにすべき機能は?"無し。常に例外があります。

-アダム

暗号化は可能な限り専門家のみが行うべきであることに完全に同意します。また、オープンソースであり、多くのピアレビューを受けている必要があります。

サードパーティのコントロールを一貫して使用している領域は、チャート化でした。データのバッチをグラフ化する必要があるのはかなり一般的な問題であり、サードパーティのコントロールは成熟しており、信頼できます。

答えは使用法に依存すると思います。利益のために開発している場合、コンポーネントを使用するコストとコンポーネントを開発するコストの結果、より多くの利益が得られる場合、コンポーネントを購入する可能性が高くなります。これは、大規模なコンポーネントを製造するための社内の専門知識がない場合に特に当てはまります。

私が使用したいくつかの良い例は、InfragisticsコントロールとDundasチャートです。これらを社内で作成することもできましたが、数個のライセンスを購入する場合に比べて、時間と機会の損失という点で莫大な費用がかかります。

もちろん、この種のことをコンポーネントの購入とは見なさずに行うこともあります。想像力を少し伸ばして、.NETフレームワーク、SQL Server、Windows APIなどを含めることができます。

構築よりも安く購入でき、購入した機能がビジネス要件を満たしている場合は、購入します。

この質問に対する決定的な答えはありません。ソフトウェア開発における他の何かと同様に、状況に依存するからです。次の3つの項目が当てはまる場合、自分でそれを行うことを考えてはいけないということです。

  1. ビジネスや専門知識の中核でない場合。
  2. 他の誰かがあなたのためにそれを書いており、それが広範囲のコミュニティで使用されている場合。
  3. ニーズと要件を満たす場合、または要件を満たすためにかなり簡単に拡張できる場合。

この質問は、どのソフトウェアを作成する必要があるかという質問の逆です。

明らかに愚かです。

どちらにも答えはありません。ビジネスのニーズに依存します。インターネット全体により良い検索エンジンを構築する必要がありますか?ほぼ間違いない。しかし、90年代後半にGoogleである場合はそうします。サードパーティとファーストパーティは、あなたがどのオフィスで働いているかという問題であり、すべてのサードパーティは自分自身のファーストパーティです。

  • 必要なものがすべて揃っている場合:既製のものを使用します。

低品質のものを作成するか、それほど重要でないもの、またはその両方にお金と労力を浪費します。

  • それがビジネスの基盤である場合:自分で構築する。

より良いものを構築でき、その優れたものからビジネスを構築できる場合は、実行してください!

時間はすべてのものを手で書くための大きな問題であることを忘れないでください、それはあなたがそれをすることができないということではありませんが、問題は彼らが常に彼らの最も速い方法を見つけたいと思っているあなたの顧客または会社から来ますシステム。しかし、非営利プロジェクトがある場合は、自分で物事を構築してみてください。たとえば、Webアプリケーションを作成していて、Ajax機能を設定したい場合、JQueryまたはDojoをAjaxツールキットとして使用できます。それらを手動で構築するには時間がかかります:)

ただし、サードパーティのライブラリを使用する場合も注意する必要があります。これらのライブラリには悪意のあるコードが含まれている可能性があるため、信頼できない場合があります。

独自の暗号化機能?考えてはいけませんが、おそらく既存の関数のラッパーのようなものを意味していると思います。

サードパーティコンポーネントの利点: 多くの機能
完全にテスト済み(うまくいけば!)
開発に時間がかからないため、安くなります(しかし..)

欠点
その次の厄介な顧客の要件に十分に柔軟に対応できますか? 配布は高価になる可能性があります
サードパーティの会社にあなたを結び付けます。彼らはバグを修正するための新しいリリースを作成するときに苦痛を感じることがあります
自分でタスクを実行することを学んではいけません

サードパーティのコンポーネントを使用するかどうかは、アプリケーションと要件に依存します。グラフ化のようなものは正しく機能するのに時間がかかるので、使用するのに適したサードパーティのコンポーネントになります。

コアビジネスの範囲外にあるものは、サードパーティソリューションの有力な候補です。あなたは開発に時間を費やして、ユニークであり、購入できず、費用対効果の高い方法で使用できないコア機能を作成します。

たとえば、web gridviewコントロールを見てみましょう。グリッドビューを自分で開発して拡張できますか?確かにできますが、グリッドビューを開発、コーディング、テストするには、Xの時間とリソースが必要であり、これをドルに換算できます。これで、サポート、メンテナンス、およびバグ修正のコストが繰り返し発生する要因があります。

今、私は、平均的な米国の開発者がその利点を含めて1時間あたり40ドルを稼いでいるということを覚えています。開発者ライセンスごとに約800ドルで利用できるWebコントロールスイート全体があります。開発者がこの1つのコントロールに合計25時間以上を費やしている場合、スイート全体を購入し、統合とテストに5時間を費やすこともできます。

今、私はあまり混乱しないことを願っていますが、一般的な要点は、あなたが自分でそれを買うことができれば、おそらく時間とお金を節約し、代わりにあなたが自分から降りることができないものに集中することです通常、あなたのお金のメーカー。

定型コードを書く場合や、ほぼ毎回コピーアンドペーストするような冗長なコードはライブラリを介して行うべきだと思います。私の場合、検証コードは退屈なため、ほとんどの場合愚かな間違いを犯します。Spring.NET はこの点で素晴​​らしいです。上司が私に試してみるよう勧めてくれたのでとてもうれしく思います。

必要な答えはすべて揃っているようですが、他の人たちと一緒にここに私の意見を述べたいと思います。クライアントはあなたのために特別に動作するアプリケーションを作るためにあなたに支払います、そしてそれは通常彼らがあなたに行く理由です。彼らが必要とするものは、市場の他の製品には見当たりません。したがって、必要な特定の部分の開発に重点を置く必要があります。

間違いなく、アプリケーションは他のことも行う必要があります。データベースに接続するか、特定の行を暗号化する必要があるかもしれません。これが、サードパーティのライブラリが登場する場所です。データベース用の新しいドライバーや、テストする時間がないホールがあるかもしれない新しい暗号化スキームを書くのに時間を無駄にしたくありません。既に存在し、広範囲にテストおよび最適化されたものを使用する必要があります。

覚えておいてください、あなたが早く終わるほど、彼らは支払う必要が少なくなります。これは彼らを幸せにし、あなたに戻ってきたいです。これはまた、彼らがより安く支払うにもかかわらず、より多くのプロジェクトに取り組むことができ、より多くのお金を意味するため、あなたがより多くを作ることを意味します。

結論として、その他のモジュールのサードパーティのライブラリに依存する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top