Trifft doch alles irgendwie zu. Und ich unterstelle mal, dass wir alle schon ein paar
Spaghetti-Code Projekte geschrieben haben.
Das Ansatz - erst funktionell, dann gut - ist ein Kernprinzip beim Testdriven-Development.
Wer nicht testet, muss halt von vornherein so strukturiert und übersichtlich programmieren, dass er selbst jederzeit alles überblicken kann. Sonst besteht eben die Gefahr, dass man Schwachstellen ausliefert oder große Teile des Codes übersichtlicher neu schreiben muss.