Wie ist das eigentlich, wenn ihr ein Projekt angeht: Plant ihr vorher so genau, dass ihr hinterher quasi nur noch den richtigen Code eintippen müsst, oder verändert ihr euer Konzept während des Programmierens weiter, je nachdem, welche neuen Ideen und Probleme auftauchen?
Ich versuche, das grobe Konzept im Voraus zu planen. Also etwa, welche wichtigen Klassen vorkommen, wie diese in Beziehung zueinander stehen und wer für welche Aufgabenbereiche verantwortlich ist. Auf diese Weise hat man beim Programmieren auch etwas, an dem man sich orientieren kann, und codet nicht einfach wild drauf los.
Klar kann man nicht alles vorher planen - oft kommen nämlich auch Hindernisse und neue Herausforderungen dazu, die man anfänglich nicht bedacht hat. Auch kleine Hilfsklassen, die keinen wahnsinnigen Einfluss auf das grundlegende Design haben, kann man ruhig erst während des Programmierens entwickeln. Aber so eine Grundstruktur sollte man sich vorstellen können, am besten auch auf eine mögliche Erweiterung ausgelegt.
Bei einem Projekt habe ich zwar im Voraus geplant, doch nach einiger Zeit merkte ich, dass der Code eine grosse Änderung benötigt, um weiteres Entwickeln sinnvoll zu ermöglichen. In solchen Situationen ist es wichtig, kurzfristig viel Zeit in ordentliches Design zu investieren, denn sobald die Basis schlecht durchdacht ist, muss auch darauf aufbauender Code angepasst werden, und das schlechte Design zieht sich durch das ganze Projekt. Langfristig bringt eine Anpassung jedoch mehr und kann unter Umständen viel Motivation und Nerven (Debugging, Wartung) erhalten.
Hier habe ich auch mal einen Beitrag diesbezüglich geschrieben.