Schreiben oder nicht schreiben: Frameworks [geschlossen]

8

Heute haben einige Freunde und ich angefangen, über Frameworks zu diskutieren.

Einige von uns sind der festen Überzeugung, dass es in 99,9% der Fälle eine schlechte Idee ist, ein neues Framework zu schreiben. Wir glauben, dass wahrscheinlich einige der Millionen von Frameworks da draußen zu unserem Problem passen sollten, und wenn nicht, sollte ein Hack, eine API oder eine Konfiguration ausreichen. Wenn nicht, denken wir, dass es die beste Lösung sein sollte, zu einem Framework beizutragen, Funktionen vorzuschlagen oder ähnliches. Die 0,1% sind, wenn keines der Frameworks zu unserem Fall passt.

Einige von uns sagen jedoch, dass es besser ist, ein "internes Unternehmens-Framework" zu haben (zum Beispiel), da es schneller ist, Probleme zu beheben, und aufgrund des "Lern" -Faktors (wenn Sie sich verbessern) eine 100% ige Übereinstimmung mit der App schafft Ihre Fähigkeiten bilden einen Rahmen) usw.

Ich denke, dass es nicht der richtige Weg ist, Coding-Frameworks zu verlassen, als gäbe es kein Morgen. Ich habe viele kleine Teams gesehen, die ihr eigenes Framework aufgebaut haben, um das Wort zu verbreiten: "Wir haben unser eigenes Framework erstellt, wir regieren, Bruder". Im Allgemeinen ist das Framework Mist, ohne Dokumentation, und funktioniert nur für ihre eigenen Anwendungen.

Meinungen sind Meinungen, Entwickler sind Entwickler, ohne die Absicht, irgendeine Art von Flammenkrieg zu beginnen, frage ich:

Was denkst du darüber? Welche Parameter berücksichtigen Sie beim Erstellen eines Frameworks? Was denkst du über all das?

caarlos0
quelle
1
Kennen Sie den Aufwand, der zum Schreiben eines Frameworks erforderlich ist? Würde es in 2 Jahren funktionieren? Wie viele Personen werden für die Wartung verantwortlich sein? Wie wäre es mit dem Testen der Abwärtskompatibilität? Wirst du Zeit damit verbringen, es zu dokumentieren? Wirst du Schulungen dafür haben?
NoChance
@EmmadKareem: Was ist, wenn die Antwort ja ist ? Würde das bedeuten, dass sie es dann tun sollten?
Omega
1
@Omega, ich persönlich würde das niemals tun, wenn ich nicht die Fähigkeiten und Ressourcen sowie gute Gründe hätte, warum alles andere da draußen für mich nicht funktioniert. Das ist für mich mehr Forschung als Entwicklung. Ich bin mir auch nicht sicher, ob das Unternehmen noch Monate warten wird, bis dies abgeschlossen ist, bevor es seine Anwendungen erstellt.
NoChance

Antworten:

10

Ich bin auf der anderen Seite des Spektrums von GrandmasterB. Für mich ist dies eine Frage zwischen Kauf und Bau.

Aus meiner Sicht kann meine Zeit und Mühe durch Kosten dargestellt werden. Es stellt sich dann die Frage, wann es eine ausreichende Kapitalrendite gibt, um einen Rahmen zu schaffen. (Wenn ich für einen Kunden arbeite, denke ich über diese Fragen aus der Sicht des Kunden nach.)

Hier sind die Fragen, die ich mir stelle:

  • Existiert das Framework bereits?
  • Wenn ich dieses Framework erstelle, möchte ich dafür bekannt sein? Mit anderen Worten, ist dieser Rahmen ein Unterscheidungsmerkmal für mich?

Oft finde ich die Antwort auf die zweite Frage nein. Ich arbeite jetzt für ein Gesundheitsunternehmen. Sie haben nicht den Wunsch, als Entwickler einer Best-of-Breed-Scheduling-Engine bekannt zu sein. Ich sollte die Entwicklung und Wartung dieses Frameworks auslagern.

Wenn es sich jedoch um einen Preismotor handelt, ist dies das A und O des Unternehmens. Daher sollte ich meine Energie auf jeden Fall darauf konzentrieren, einen hervorragenden Motor herzustellen.

Neontapir
quelle
6

Meine allgemeine Regel lautet: Wenn es sich um ein Produkt oder einen wichtigen Teil des Produkts handelt, machen Sie es nach Möglichkeit selbst. Wenn es sich nicht um eine Kernfunktionalität handelt oder ein Unternehmen unterstützt (etwas, das nur intern verwendet wird), sollten Sie die Frameworks verrückt machen.

Viele meiner Anträge sind langfristige Investitionen - möglicherweise über 10 Jahre - und es handelt sich um Produkte, die an Kunden verkauft werden (daher meine Verantwortung). Die Möglichkeit, mit einem Framework von Drittanbietern „schnell“ loszulegen, ist für mich nicht so relevant wie für jemanden, der ein Dutzend Apps pro Jahr erstellt. Ich bin also im Allgemeinen nicht dagegen, in das Wesentliche einzutauchen und mein eigenes zu machen. Während der gesamten Lebensdauer des Produkts sind einige zusätzliche Wochen, in denen ein benutzerdefiniertes Framework / eine benutzerdefinierte Komponente in Betrieb genommen wird, nicht von Bedeutung. Aber es kann viel weniger Kopfschmerzen und weniger Backsteinmauern bedeuten, da es speziell für die Anwendung entwickelt wurde.

GroßmeisterB
quelle
1
Aber Sie erstellen ein Framework für eine neue App, bevor Sie mit dem Erstellen der App beginnen? Kurz gesagt: Bauen Sie Foundation oder Harvested Frameworks?
Caarlos0
1
Im Allgemeinen entwickelt sich das Framework beim Erstellen der Anwendung mit.
Großmeister
4

Es scheint mir, dass ein Framework eine Sammlung von Bibliotheken ist. Sobald Sie eine Reihe von APIs haben und sicherstellen, dass sie konsistente APIs haben und gut zusammenspielen, bündeln Sie sie und nennen sie ein Framework. Sie sollten jedoch sicherstellen, dass alle Bibliotheken Ihres Unternehmens ohnehin über konsistente APIs verfügen, unabhängig davon, ob Sie das F-Wort verwenden oder nicht.

Frameworks werden in der Regel "versehentlich" geschrieben, wenn jemand alles betrachtet, was er hat, und sagt: "Hmmm, diese Dinge können für andere nützlich sein." Es sei denn, Sie sind ein Unternehmen, das die Quelle versendet, oder Sie wurden ausdrücklich aufgefordert, ein Framework zu schreiben. Sachen zu machen, um Sachen zu machen, ist beim Programmieren immer eine schlechte Idee.

Was auch immer Sie tun, stellen Sie sicher, dass Sie das Rad nicht neu erfinden, insbesondere nicht als Quadrat.

MrFox
quelle
2

Wenn Sie wie ich sind, besteht Ihre Aufgabe darin, den Geschäftswert so effizient wie möglich bereitzustellen und keine Haustierprojekte zu debuggen und zu optimieren. Wenn es ein weit verbreitetes Framework gibt, das genau das tut, was Sie brauchen, verschwenden Sie keine Zeit damit, das Rad neu zu erfinden, da das weit verbreitete Framework es wahrscheinlich besser macht als Sie. Sie hatten mehr Zeit, Erfahrung und Ressourcen, um es zu entwickeln.

In den letzten 6 Monaten hat meine Firma mich kürzlich zwei verschiedene Anwendungen schreiben lassen, die viele ähnliche Dinge tun. Kürzlich wurde ich gebeten, eine dritte ähnliche Anwendung zu schreiben, und es gibt viel Platz für ähnliche Anwendungen in der Zukunft. Da niemand ein Framework für die proprietäre Technologie entwickelt hat, mit der ich arbeite, sah ich keine andere Möglichkeit , als mein eigenes Framework zu entwickeln. Wenn ich kein eigenes Framework entwickle, werde ich viel Zeit damit verbringen, mich zu wiederholen, und das ist eine Verschwendung von Zeit und Geld.

Ich denke, dies ist der Schlüssel, ob es sich lohnt, eigene zu bauen oder die eines anderen zu verwenden. Wenn Sie in den nächsten Jahren eine Menge Geld verschwenden oder ein Framework erstellen müssen, erstellen Sie das Framework.

Es ist sehr schwierig, genau vorherzusagen, wie ein ideales Framework aussehen würde, ohne zuvor etwas erstellt zu haben. Geerntete Lösungen sind im Allgemeinen besser als Foundation- Lösungen (danke für die Links caarlos0 ), da Ihr Code nicht auf Vermutungen über die Wünsche des Client-Programmierers basiert , sondern auf tatsächlichen Erfahrungen. Lesen Sie: Emergent Design .

Trotzdem gibt es für mich nur einen Grund, ein eigenes Framework zu erstellen: Wenn Sie dieselbe Arbeit zweimal ausgeführt haben und sie wahrscheinlich noch mehrmals ausführen werden und niemand die Arbeit für Sie erledigt hat.

Phil
quelle
2

Ich versuche, bei jedem neuen Projekt die größtmöglichen Meilen aus den verfügbaren Frameworks und Tools herauszuholen. Nachdem sich das Projekt weiterentwickelt hat, vielleicht ein oder zwei Jahre lang eingebrannt, ist es eine vernünftige Wahl, die Teile des Frameworks zu ersetzen, die die meisten Schmerzen verursachen. Wenn sich Ihr Geschäftsplan nicht darauf konzentriert, ein neues Framework zu erstellen, würde ich nicht vorhaben, Ihr eigenes zu schreiben.

Wenn eine Technologie wirklich ausfällt, führe ich eine Liste spezifischer Beschwerden und Ideen, wie sie neu gestaltet werden sollte, um besser zu funktionieren. Kurzfristig gibt mir dieses "Manifest" einen Ausgang für meine Frustrationen, während ich weiterhin das bestehende Framework verwende . Mittelfristig hilft es mir, die schlimmsten Schmerzpunkte zu identifizieren, damit ich keine Energie verschwende, um kleinere Probleme zu beheben. Langfristig kann das Manifest ein Entwurf für einen teilweisen oder vollständigen Ersatz oder eine Funktionsliste für die Auswahl eines neuen Frameworks werden.

GlenPeterson
quelle