Irgendwann ist ein Programm in der Entwicklung. Features werden ständig hinzugefügt, entfernt oder geändert. Jede Version ist nichts anderes als ein Prototyp. Daher verschwende ich zu diesem Zeitpunkt nicht viel Zeit damit, super sauberen Code zu schreiben, da ich nie weiß, wie lange etwas dauert. Natürlich versuche ich, die Codequalität auf einem bestimmten Standard zu halten, aber Zeit ist immer ein Problem.
Dann kommt der Punkt, an dem das Programm beendet ist und die Entscheidungsträger sagen "das war's". Momentan habe ich einen funktionierenden Prototyp, aber der Code im Inneren ist während der Entwicklungsphase ein bisschen chaotisch. Es wird erwartet, dass ich mit dem Testen / endgültigen Debuggen beginne, aber mein Bauch sagt, ich sollte jetzt irgendwie aufräumen und / oder Dinge neu schreiben, um eine korrekte Architektur zu erhalten, die die Wartung usw. erleichtert.
Sobald das Zeug getestet und genehmigt wurde, macht es keinen Sinn, es dann umzuschreiben. Ich stehe regelmäßig mit einem funktionierenden 'fertigen' Prototyp da und bekomme während des Testens einen Fehler und ich sehe, dass es ein Ergebnis von nicht intelligenter Codierung ist, das das Ergebnis des gesamten Entwicklungsprozesses ist. Ich bin mitten im Testen und der Bugfix wäre ein Umschreiben ... es ist ein Chaos!
Es gibt bessere / lehrbuchartige Wege, da bin ich mir sicher. Aber ich muss in einer realen Arbeitsumgebung arbeiten, in der nicht alles Lehrbuch ist.
Wie kann ich meinen funktionierenden Prototyp auf eine Release-Version mit einer stabilen Codebasis umstellen? Vielleicht sollte ich die Entwicklung nicht als abgeschlossen betrachten und sie tatsächlich als Aufräumphase betrachten ... Ich weiß nicht, ich brauche hier Hilfe.
BEARBEITEN
Ich möchte ein paar Dinge klarstellen.
Ich bin zu 100% auf der Seite, es direkt davor und nicht danach zu tun, Code sauber und lesbar. Aber ich muss auch Dinge erledigen und kann nicht von der Schönheit des Codes träumen, der alle sauber und glänzend ist. Ich muss einen Kompromiss finden.
Oft ist eine neue Funktion nur etwas, das wir ausprobieren möchten, um herauszufinden, ob es sinnvoll ist, so etwas zu implementieren. (va in mobilen Apps, um ein echtes Look-and-Feel auf einem tatsächlichen Gerät zu erhalten) Es ist also etwas Kleines, das (imho) nicht zu viel Arbeit in einer ersten Iteration "mal sehen" rechtfertigt. Manchmal stellt sich jedoch die Frage, WANN ich diese Technologie zahle. Darum geht es in dieser Frage.
Wenn ich weiß, dass die Hälfte der Features einen Tag später gelöscht wird (inzwischen genug Erfahrung in unserem Unternehmen), fällt es mir wirklich schwer zu glauben, dass der beste Weg, mein Problem anzugehen, darin besteht, zusätzliche Zeit zu investieren, um alles sauber zu schreiben, auch wenn Das meiste davon wird kurz danach fallen gelassen. Ich habe das Gefühl, dass ich Zeit sparen werde, wenn ich eine große Bereinigung vornehme, sobald die Sache solide ist, daher meine Frage.