1. Planung:
    Erstmal auf Papier schreiben was die Lösung alles können muss. Einfache Projekt ein Stichworten, komplexere Dinge in ganzen Sätzen ausformulieren. (Pflichtenheft)
    Dann Aufschreiben welche Dialoge ich für die Lösung benötige. (Dialog-Entwürfe)
    Dann überlege ich mir die eventuell benötigten Datenbankstrukturen und schreibe auf Papier die Tabellen und ihre Spalten und Datentypen nieder. (datentechnische Anforderungs-Analyse oder einfacher nur benötigte Tabellenstrukturen niederschreiben)
  2. Umsetzung:
    Wenn ich die Planung fertig habe, dann habe ich mir meist schon genug Gedanken gemacht damit die Umsetzung nur noch Schreibarbeit und etwas Technologie-Recherche (z.B. Befehle in Handbüchern) ist ohne dass ich viel nachdenken muss.
  3. Testen:
    Während der Umsetzung wird zwar auch ständig getestet, aber ein Test am Schluss (am nächsten Tag sieht man manchmal mehr) oder durch eine andere Person ist schon sinnvoll. Für Tests kann man sich einfach das Pflichtenheft schnappen und dort die einzelnen Punkte durchgehen und testen.

Bei Bedarf am Schluss noch Dokumentationen wie Handbuch oder Installationsanleitung schreiben.

Das ganze richtet sich natürlich auch nach Umfang der angestrebten Lösung.

Wenn ich z.B. in mein VMS nur irgendwelche Daten aus der Datenbank auf einem Dialog oder Menü oder so anzeigen will, dann programmiere ich meist einfach drauf los. Dann fallen mir oft Dinge ein die ich auch noch grad machen könnte und ärgere mich dann, dass ich keine oder zu wenig Planung betrieben habe.

Bei komplexen Projekten sollte man genauere Planung betreiben, desto weniger Probleme gibt es bei der Umsetzung.

Programmieren an sich ist halt nur ein Teil bei der Entwicklung.
Die Herausforderung sehe ich mehr in einer guten Planung und entsprechenden Umsetzung.