Zählen die folgenden Szenarien in Ihrem Buch als "das Rad neu erfinden"?
Es gibt eine Lösung, jedoch nicht in der Sprache, die Sie verwenden möchten, und vorhandene Lösungen können nicht auf saubere, idiomatische Weise mit der Sprache verbunden werden, die Sie verwenden möchten.
Im Prinzip könnten Sie eine vorhandene Bibliothek dazu bringen, mit umfangreichen Änderungen das zu tun, was Sie wollten, aber Sie denken, es wäre wahrscheinlich einfacher, einfach von vorne zu beginnen.
Was Sie schreiben, hat dieselbe einzeilige Beschreibung wie bereits erledigtes Material, aber Sie zielen auf eine andere Nische ab. Zum Beispiel wurde Ihr Problem vielleicht schon zig Mal gelöst, aber auf eine Weise, die für große Datenmengen ineffizient ist und Ihr Code für große Datenmengen gut funktioniert.
Antworten:
Wenn es eine Lösung gibt, die in Ihren Augen eine praktische Lösung wäre, dann würde es das Rad neu erfinden, wenn Sie diese nicht verwenden, sondern Ihre eigene Lösung erstellen. Davon abgesehen ist es sehr subjektiv.
Über Ihre spezifischen Szenarien:
quelle
Das Rad neu zu erfinden, ist das, was andere Ihnen vorwerfen, wenn Ihre Analyse zeigt, dass Sie selbst etwas schreiben sollten und das ihre nicht.
quelle
Ich denke, die Neuerfindung des Rades kann ganz einfach definiert werden: Wenn Sie auf lange Sicht mehr selbst schreiben, als die Bibliothek zu nutzen. Beachten Sie, dass nicht immer klar ist, wie viel Arbeit etwas auf lange Sicht bedeuten kann . Möglicherweise können Sie einen Prototyp selbst schneller hacken, als Sie Ihren vorhandenen Code so umgestalten können, dass er die Bibliothek enthält. Auf lange Sicht funktioniert die Bibliothek jedoch besser, wenn Sie mehr Funktionen hinzufügen oder den Code unterstützen müssen.
Unter dem Strich müssen Sie sorgfältig über Ihre Situation nachdenken, wenn Sie entscheiden, ob Sie eine Bibliothek verwenden möchten oder nicht. Sie müssen entscheiden, ob die Bibliothek für das, was Sie jetzt tun möchten, und für das, was Sie in Zukunft tun werden, einfacher ist . Zu wissen, was Sie in Zukunft tun werden, ist nicht immer einfach, aber wenn Sie einen guten Plan haben, sollten Sie eine grobe Idee haben. Trotzdem sind Prognosen manchmal ungenau - Sie merken im Allgemeinen erst, dass Sie das Rad neu erfunden haben, nachdem Sie es getan haben.
quelle
Es ist zu weit gefasst und subjektiv, um mit irgendeiner Genauigkeit antworten zu können, einfach weil jeder Fall anders ist.
Es ist durchaus akzeptabel, das Rad bei Bedarf neu zu erfinden. Der Schlüssel liegt in Ihrem Urteilsvermögen, zu entscheiden, wann das vorherige Rad eine akzeptable Lösung ist und wann es nicht rund genug ist, um eine reibungslose Fahrt zu gewährleisten.
Diese Frage muss manchmal fast rhetorisch gestellt werden, um sicherzustellen, dass der beste Ansatz verwendet wird. In einem Buch finden Sie oft einen besseren Algorithmus, als die meisten Programmierer in der Zeit schreiben können, die erforderlich ist, um ihn zu finden.
quelle
Je größer und komplexer das Problem ist, desto weniger wahrscheinlich ist ein Rad, das genau Ihren Anforderungen entspricht, und desto legitimer ist es, es wieder aufzubauen.
Ich denke, wir sollten "das Rad nicht neu erfinden" nur auf grundlegende Elemente anwenden (Funktionen, die bereits in der Plattform integriert sind, bekannte Entwurfsmuster ...) oder wenn die genaue Lösung für Ihr Problem verfügbar ist - aber das ist selten der Fall.
Ihre 3 Punkte zählen für mich nicht als Neuerfindung des Rades.
quelle
Es kommt darauf an ...
Für die ersten beiden:
In beiden Fällen ist es sinnvoll, eigenen Code zu schreiben. Beachten Sie jedoch Folgendes: Enthält die vorhandene Lösung Techniken, Algorithmen oder Routinen, aus denen Sie lernen können? Das Ignorieren würde das Rad neu erfinden.
Drei Fragen:
Wenn die Antwort auf eine dieser Fragen "Nein" lautet, erfinden Sie das Rad neu.
Trotzdem bin ich nicht davon überzeugt, dass es immer schlecht ist , das Rad neu zu erfinden :
quelle
Ihr erstes Szenario gilt für die Neuerfindung des Rades, das sich selbst erklärt.
Das zweite Szenario gilt NICHT, wenn der vorhandene Code nur geringfügig geändert werden muss. Wenn dies jedoch der Fall ist, sollten Sie versuchen, ähnliche Eigenschaften, Methoden und Verwendungszwecke wie bei einem vorhandenen Code zu verwenden, damit andere Entwickler keine Probleme mit der Verwendung Ihres Codes haben "Rad".
Seien Sie vorsichtig mit dem Ansatz "Es ist immer besser, von vorne zu beginnen". Es kann länger dauern, als Sie erwarten.
Das dritte Szenario, das Sie erwähnen, ist der "praktische" Ansatz. Das "gegebene Rad" kann die Arbeit erledigen, verbraucht aber in Wirklichkeit zu viel Ressourcen, Speicher, Geschwindigkeit usw.
Ich habe einmal in einer Anwendung gearbeitet, in der hierarchische Daten in einem Treeview-Steuerelement aus einer einzelnen Tabelle angezeigt werden müssen. Wir haben bereits ein Steuerelement, das dies tun könnte, aber mehrere Tabellen pro Element unterstützt.
Um es zu benutzen, musste ich zu viele Dinge lernen, zu viele Eigenschaften zuweisen, zu viele Methoden ausführen und es war langsam. Ein Mitarbeiter bestand darauf, es zu benutzen, um "das Rad nicht neu zu erfinden".
Ich habe ein neues Steuerelement von Grund auf neu erstellt, eine einzelne Tabelle gelesen und nur einige leicht zu erlernende Eigenschaften programmiert. Und bevor ich es wusste, gab es einen anderen Mitarbeiter, der es aus dem gemeinsam genutzten Code-Repository nahm und das vorherige Steuerelement ersetzte.
Bonus:
Wenn das Rad, das Sie bereits haben, "quadratisch" ist. Mit "quadratisch" meine ich, dass es an der Oberfläche so aussieht, als ob es eine Lösung für Ihr Problem darstellt, aber nach einem guten Blick kommen Sie zu dem Schluss, dass dies nicht der Fall ist.
Es hängt davon ab, ob Sie über die Fähigkeiten und die Zeit (und Ihre Unternehmensberechtigung) verfügen, um das Rad neu zu erfinden.
quelle
Lesen Sie zuerst diesen ausgezeichneten Artikel von Joel Spolsky: Zur Verteidigung des Not-Invented-Here-Syndroms
Dann werden alle technischen Gründe zu wirklich kleinen Nuancen. Wenn Sie der Meinung sind, dass diese Software für Ihren Job von entscheidender Bedeutung ist, schreiben Sie sie neu. Ja, es ist "das Rad neu erfinden", aber es lohnt sich wahrscheinlich, Zeit mit Schreiben und Wartung zu verbringen. Wenn es nicht kritisch ist, verwenden Sie einfach das, was verfügbar ist.
quelle