Welche Funktionalität sollte immer ein Drittanbieter sein?

7

Was meine Frage nachfragt, ist dieser Beitrag von Jeff Atwood und dieser Post von Dare Obasanjo. Es scheint mir, dass es mindestens ein paar Bereiche gibt, in denen die Funktionalität von Drittanbietern eine bessere Idee ist als benutzerdefinierter Code.

Sollte zum Beispiel das Logging immer ein Drittanbieter sein? Wie wäre es mit Verschlüsselung? Oder suchen?

Ich freue mich auf das Feedback von allen.

Bearbeiten: Bei dieser Frage wird davon ausgegangen, dass die Protokollierung, Verschlüsselung und / oder Suche nicht Ihr Kerngeschäft ist.

    
Scott Lawrence 20.10.2008, 21:07
quelle

15 Antworten

3

Es kommt darauf an. Gibt es eine 3rd-Party-Bibliothek, die Ihren Anforderungen und vor allem der Sprache und / oder API entspricht, mit der Sie arbeiten? Dann mach es.

Wenn Sie Gründe haben, Ihre eigene Version zu erstellen, stellen Sie sicher, dass es nicht nur "nicht erfunden" ist. Wenn Sie sich die fünf führenden Produkte des Marktes noch nicht genau angesehen haben, haben Sie Ihre Arbeit nicht gründlich genug erledigt. Es gibt gute Chancen, dass Sie finden, was Sie suchen, und selbst wenn Sie es nicht verwenden können, lernen Sie noch etwas aus den Bibliotheksbeschreibungen. Sie erfahren mindestens, welche Funktionen Sie benötigen und welche nicht. Wenn Sie den Quellcode auch für eine der Bibliotheken erhalten, sollte dies Ihre bevorzugte Wahl gegenüber einer konkurrierenden Bibliothek ohne Quellcode sein, möglicherweise aber mit mehr Funktionen.

    
steffenj 20.10.2008, 21:14
quelle
15

Verschlüsselung sollte die meiste Zeit von Dritten sein, ... es sei denn, Sie verkaufen Verschlüsselungssysteme.

Was ziemlich Mr. Atwood ist, sein Punkt, wie ich es verstanden habe, sollten Ihre Kerngeschäfte nicht Dritte sein, also gibt es wahrscheinlich nichts, was immer Dritte sein sollte ...

>     
Pieter 20.10.2008 21:11
quelle
4

Meine Faustregel ist, Drittanbieter für alles zu verwenden (oder zumindest in Betracht zu ziehen), das außerhalb des Kerngeschäfts Ihres Unternehmens liegt.

Verschlüsselung war schon immer das prototypische Beispiel dafür. Aber es erstreckt sich auch auf andere Bereiche.

Das Schreiben von Protokollierungscode für die Fehlerbehebung während der Entwicklung unterscheidet sich grundlegend von dem Schreiben von Protokollierungscode, der für die Überwachung von Produktionssystemen verwendet wird.

Es geht darum, auszuwählen, welche Entwicklungsbereiche Ihr Projekt wirklich wertschätzen. Die Verwendung von Drittanbietermaterial beseitigt das Risiko, dass diese Komponente unvollständig / fehlerhaft / etc ist. aber es besteht das Risiko, dass es nicht so flexibel ist wie das, was Sie brauchen.

Ein anderes Beispiel wäre die Entwicklung eines kompletten Web-Forums für eine Website, wenn Sie eine Lösung für viel billiger kaufen können.

    
BQ. 20.10.2008 21:10
quelle
4

"Welche Funktionalität sollte immer ein Drittanbieter sein?"

Keine. es gibt immer eine Ausnahme oder einen Spezialfall, um die ungeheuerliche Verwendung von "immer" zu übergehen, wenn eine im Wesentlichen technische Entscheidung diskutiert wird.

Außerdem sollte die Entscheidung, sich an Dritte zu wenden, fast nie auf der Grundlage einer gegebenen "Funktionalität" getroffen werden. Es gibt keine so perfekte Bibliothek, die Sie nie irgendwo anders für diese Art von Funktionalität benötigen.

Eine dritte Partei ist eine Entscheidung, die basierend auf

getroffen werden sollte
  • Kosten für die Teilnahme an einem Drittanbieter vs Kosten für die Durchführung im eigenen Haus
  • Benötigte Entwicklungszeit im Vergleich zu Deadlines (dh, es könnte intern günstiger sein, aber Ihre Entwicklungszeitplanung lässt dies möglicherweise nicht zu)
  • Einfache Integration, Fehlerbeseitigung, Wartung, Upgrade-Pfade - es kann sein, dass Sie etwas entwickeln können, das "die Arbeit erledigt, aber kaum" im Haus vs. nicht viel mehr Geld für etwas, das sich auf Jahre hinaus um Sie kümmern wird
  • Leichtigkeit / Kosten für Tests und Tests - Sicherheitspakete sind bekanntermaßen schwer zu testen gut

Jedoch. Es gibt Dinge, bei denen es wirklich schwer ist zu glauben, dass es besser ist, ins Haus zu gehen. Zum Beispiel können Sie einen Wettbewerber in OpenGL und DirectX schreiben, und in bestimmten Anwendungen (wissenschaftliches Rechnen usw.) gibt es gute Gründe, einen solchen Pfad in Betracht zu ziehen. Aber im Allgemeinen würden Sie nicht davon träumen. Obwohl es "frei" ist, ist es immer noch eine Abhängigkeit von Drittanbietern, und Sie könnten wegen eines Fehlers, der sich nur auf die Verwendung dieser Grafiksprachen auswirkt, auf den Skids landen.

Mit anderen Worten existieren einige unglaublich komplexe oder schwer zu beweisende / getestete Dinge, die fast immer an Dritte gehen sollten. Sicherheit ist eine andere. Schreiben Sie nicht Ihren eigenen Hashalgorithmus, es sei denn, Sie sind 1) nachweislich verrückt und 2) haben mindestens 3 ausgezeichnete geschäftliche Gründe, dies zu tun.

Aber "Welche Funktionalität sollte immer ein Drittanbieter sein?" Keiner. Es gibt immer eine Ausnahme.

-Adam

    
Adam Davis 20.10.2008 21:26
quelle
3

Ich stimme voll und ganz zu, dass die Verschlüsselung möglichst nur von Experten durchgeführt werden sollte. Es sollte auch Open Source sein und viel Peer Review durchlaufen haben.

    
mmacaulay 20.10.2008 21:09
quelle
2

Der Bereich, in dem ich regelmäßig Kontrollen von Drittanbietern verwendet habe, war Charting. Es ist ein ziemlich häufiges Problem, einige Chargen von Daten zu chartern und die Kontrollen von Dritten sind ausgereift und vertrauenswürdig.

    
epotter 20.10.2008 21:10
quelle
2

Ich denke, die Antwort hängt von der Verwendung ab. Wenn Sie sich auf Profitbasis entwickeln, würden Sie wahrscheinlich Komponenten kaufen, wenn die Kosten für die Verwendung der Komponente im Vergleich zu den Kosten für die Entwicklung mehr Gewinn bringen. Dies ist insbesondere bei großen Komponenten der Fall, wenn Sie nicht über das Know-how verfügen, um diese Komponenten zu produzieren.

Ein paar gute Beispiele, die ich verwendet habe, sind die Infragistics-Controls und Dundas-Charts. Obwohl wir diese intern hätten erstellen können, wären die Kosten in Bezug auf Zeit und verlorene Chancen im Vergleich zum Kauf einiger Lizenzen sehr hoch.

Natürlich machen wir manchmal so etwas, ohne es als Kauf einer Komponente zu betrachten. Wenn Sie die Vorstellungskraft etwas erweitern, können Sie das .NET-Framework, den SQL-Server, die Windows-API usw. verwenden.

    
BlackWasp 20.10.2008 21:12
quelle
2

Wenn Sie es billiger kaufen können, als Sie es bauen können, und die gekaufte Funktionalität Ihren Geschäftsanforderungen entspricht, dann kaufen Sie es.

    
Grant Wagner 20.10.2008 21:41
quelle
1

Es gibt keine definitive Antwort auf diese Frage, denn genau wie alles andere in der Softwareentwicklung hängt es von der Situation ab. Ich würde sagen, wenn die folgenden 3 Punkte wahr sind, sollten Sie nicht darüber nachdenken, es selbst zu tun ...

  1. Wenn es nicht der Kern Ihres Unternehmens oder Ihrer Fachkenntnisse ist.
  2. Wenn jemand anders es für Sie geschrieben hat und es in weit verbreiteten Gemeinden verwendet wird.
  3. Wenn es Ihren Bedürfnissen und Anforderungen entspricht oder es einfach erweitert werden kann, um Ihre Anforderungen zu erfüllen.
SaaS Developer 20.10.2008 21:18
quelle
1

Diese Frage ist die Umkehrung der Frage: Welche Software sollten Sie erstellen?

Was offensichtlich dumm ist.

Für beide gibt es keine Antwort, das hängt von den Bedürfnissen Ihres Unternehmens ab. Müssen Sie eine bessere Suchmaschine für das gesamte Internet erstellen? Fast sicher nicht. Aber wenn Sie in den späten 90ern Google sind, tun Sie das. 3. vs. 1. Partei ist nur eine Frage, in welchem ​​Büro du arbeitest, jede 3. Partei ist eine 1. Partei für sich.

  • Wenn alles, was Sie brauchen, gut genug ist: Verwenden Sie etwas aus dem Regal.

Entweder kreierst du etwas minderwertige Qualität oder du verschwendest Geld und Mühe für etwas, das nicht so wichtig ist, oder beides.

  • Wenn es die Grundlage Ihres Unternehmens ist: Bauen Sie es selbst auf.

Wenn Sie etwas Besseres bauen können und aus dieser besseren Sache ein Geschäft aufbauen können, dann tun Sie das!

    
Wedge 21.10.2008 01:31
quelle
0

Vergessen Sie nicht, dass die Zeit ein großes Problem ist, wenn Sie alle Dinge von Hand schreiben. Es ist nicht so, dass Sie das nicht tun, aber das Problem kommt von Ihren Kunden oder Unternehmen, die immer den schnellsten Weg finden wollen System. Aber wenn Sie ein gemeinnütziges Projekt haben, können Sie versuchen, Dinge selbst zu bauen. Beispielsweise können Sie JQuery oder Dojo als Ihr Ajax-Toolkit verwenden, wenn Sie Webanwendungen schreiben und einige Ajax-Funktionen festlegen möchten. Es wird Zeit brauchen, diese Dinge von Hand zu erstellen:)

Aber Sie müssen auch vorsichtig sein, wenn Sie Bibliotheken von Drittanbietern verwenden, Sie müssen ihnen vertrauen, weil sie bösartigen Code enthalten können, oder sie sind sehr schlecht geschrieben und können Ihnen Kopfschmerzen bereiten.

    
milot 20.10.2008 21:15
quelle
0

Ihre eigene Verschlüsselungsfunktion? Denken Sie nicht einmal darüber nach, aber ich denke, Sie haben wahrscheinlich eine Art Wrapper für bestehende Funktionen gemeint.

Vorteile für Drittanbieterkomponenten: Viel Funktionalität Vollständig getestet (hoffentlich!)
Nimmt sich Zeit um sich zu entwickeln, kann also billiger sein (aber ..)

Nachteile
Ist es wirklich flexibel genug für die nächste akward Kundenanforderung? Verteilung kann teuer sein Verbindet Sie mit einer Drittfirma, was ein Problem sein kann, wenn sie eine neue Version erstellen, um Fehler zu beheben Du lernst nicht, die Aufgabe selbst zu erledigen

Ob Sie eine Drittanbieterkomponente verwenden, hängt von Ihrer Anwendung und den Anforderungen ab. Etwas wie das Zeichnen von Graphiken wird ewig dauern, um richtig zu sein, also wäre es eine gute Komponente von Drittanbietern, die man verwenden könnte.

    
alexmac 20.10.2008 21:17
quelle
0

Alles, was außerhalb Ihres Kerngeschäfts liegt, ist ein guter Kandidat für Lösungen von Drittanbietern. Sie möchten Ihre Entwicklungszeit damit verbringen, diese Kernfunktionalität zu entwickeln, die einzigartig (ish) ist und nicht in einem kosteneffektiven Gut erworben und verwendet werden kann.

Betrachten wir zum Beispiel die Web-Gridview-Kontrolle. Können Sie selbst eine Gridview entwickeln und erweitern? Sicher, Sie können, aber zu entwickeln, zu kodieren und testen Sie Grid-Ansicht wird X Menge an Zeit und Ressourcen zu nehmen, die Sie in Dollar übersetzen können. Jetzt haben Sie immer wiederkehrende Kosten für Support, Wartung und Fehlerbehebungen.

Jetzt können wir den willkürlichen Betrag verwenden, an den ich mich erinnere, als ich in einem Magazin über den durchschnittlichen US-Entwickler gelesen habe, der $ 40 pro Stunde einschließlich seiner Vorteile gemacht hat. Es gibt ganze Web-Control-Suites für ungefähr weitere 800 $ pro Entwicklerlizenz. Wenn Ihr Entwickler mehr als 25 Stunden für dieses eine Steuerelement ausgibt, könnten Sie eine ganze Suite gekauft und 5 Stunden integriert und getestet haben.

Nun, hoffentlich bin ich dort nicht zu verwirrend geworden, aber der allgemeine Kern ist, dass wenn du es dir selbst kaufen kannst, es wahrscheinlich Zeit und Geld sparen wird, und dich stattdessen auf Dinge konzentrierst, die du nicht selbst loswerden kannst normalerweise deine Geldmacher.

    
Loscas 20.10.2008 21:28
quelle
0

Ich würde sagen für das Schreiben von Kesselplattencode oder redundantem Code, der fast jedes Mal kopiert und eingefügt wird, sollte durch eine Bibliothek erfolgen. Validierungscode lässt mich fast immer dumme Fehler machen, weil es langweilig ist. Spring.NET ist dafür erstaunlich. Ich bin so froh, dass mein Chef mich ermutigt hat, es zu versuchen.

    
Chris 20.10.2008 21:44
quelle
0

scheint, dass Sie alle Antworten haben, die Sie brauchen, aber ich möchte nur meine Meinung hier mit allen anderen hineinwerfen. Kunden bezahlen Sie, um Anwendungen zu erstellen, die speziell für sie arbeiten, und das ist normalerweise der Grund, warum sie zu Ihnen gehen; etwas, das sie brauchen, ist in keinem anderen Produkt auf dem Markt gefunden. Daher sollte Ihr Fokus auf der Entwicklung des spezifischen Teils liegen, den sie benötigen.

zweifellos muss Ihre Anwendung auch andere Dinge tun. Vielleicht muss es sich mit einer Datenbank verbinden oder bestimmte Zeilen verschlüsseln. Hier kommen Bibliotheken von Drittanbietern ins Spiel. Sie möchten keine Zeit verschwenden, um einen neuen Treiber für eine Datenbank zu schreiben, oder ein neues Verschlüsselungsschema, das möglicherweise Lücken aufweist, für die Sie keine Zeit zum Testen haben. Sie möchten diejenigen verwenden, die bereits existieren und umfassend getestet und optimiert wurden.

Denken Sie daran, je schneller Sie fertig sind, desto weniger müssen sie bezahlen. Das macht sie glücklich und möchte zu dir zurückkommen. Das bedeutet auch, dass Sie mehr verdienen, denn obwohl sie weniger zahlen, können Sie an mehr Projekten arbeiten, was mehr Geld bedeutet.

Abschließend sollten Sie sich auf Bibliotheken von Drittanbietern in verschiedenen Modulen verlassen.

    
cesar 03.09.2009 03:14
quelle

Tags und Links