Für mich hilft es, ein größeres Stück Software in kleinere Teile zu zerlegen. Und dann brechen Sie diese Stücke in noch kleinere Teile und so weiter. Jedes Softwareprogramm ist eine Sammlung kleiner logischer Elemente.
Stellen Sie sich zum Beispiel einen Blog vor. Sie möchten in der Lage sein, Beiträge zu erstellen und zu bearbeiten, die andere lesen können. Sie können das Projekt sofort in Administrator- und öffentliche Bereiche aufteilen. Der Administrator benötigt mindestens Administratorbenutzer, eine Anmeldeseite und einen Abschnitt zum Verwalten des Blogs. Der Abschnitt zum Verwalten des Blogs kann in eine CRUD-Oberfläche (Erstellen, Lesen, Aktualisieren, Löschen) unterteilt werden. Das Erstellen eines neuen Blogposts erfordert eine Überprüfung, um sicherzustellen, dass der Administrator über die richtigen Berechtigungen, ein Formular, eine Formularüberprüfung und die Möglichkeit zum Speichern in der Datenbank verfügt. Und so weiter.
Je mehr Sie ein Problem oder eine Funktion auflösen, desto überschaubarer wird es. Es ist teilen und erobern. Sobald Sie in der Lage waren, Ihre Software so abzubilden, können Sie sich ansehen, wie verschiedene Teile davon miteinander interagieren. Wo könnten Sie Code wiederholen? Was kann abstrahiert werden? Dies sollte ein iterativer Prozess sein, sowohl beim Planen als auch beim Schreiben des Codes.
Ich würde empfehlen, herauszufinden, was Ihr Mindestfeaturesatz ist, und dies zu implementieren, bevor Sie andere Teile hinzufügen. Sie möchten defensiv codieren, damit zukünftige Änderungen nicht zu schwierig werden. Gleichzeitig möchten Sie jedoch keine halben Funktionen implementieren, die möglicherweise nie abgeschlossen werden. Es ist eine schwierige Grenze zwischen Flexibilität und der Bereitschaft, Ihre Lieblinge rücksichtslos zu töten und eine literarische Referenz auszuleihen. In diesem Balanceakt gut zu werden, kommt nur aus Erfahrung.
Und darauf kommt es an, wie die anderen Antworten bereits erwähnt haben: Erfahrung. Der einzige Weg, um es zu bekommen, ist einfach zu beginnen. Mach dir nicht so viele Sorgen, dass es von Anfang an perfekt wird. Lassen Sie den Code zuerst funktionieren, machen Sie ihn dann schön und dann schnell.
Im Gegensatz zu diesem Absatz sollten Sie die Sicherheit am Ende nicht nachträglich in Angriff nehmen. Sie sollten eine Vorstellung davon haben, wie Ihre Software kompromittiert werden könnte, aber zunächst einmal sollten Sie keiner Benutzereingabe vertrauen.