Zunächst musst du dein Dilemma sowie das Drumherum verstehen. Gehen wir zunächst davon aus, dass du eine neue Anwendung entwickeln möchtest: Bei einem Spiel könnten da die Spielregeln dazugehören. Bei einer Businessanwendung für ein Unternehmen musst du vielleicht erst die üblichen firmeninternen Abläufe kennen.
Würdest du einen eigenen E-Mail-Client bauen wollen, müsstest du erst einmal klären, wie E-Mails überhaupt aufgebaut sind oder was es mit SMTP, POP3, u.ä. auf sich hat. Du kannst also klassische W-Fragen stellen oder dir eine Mindmap/Stichwortliste erstellen, die du nach und nach ergänzt.
Hierfür ist Recherchearbeit notwendig, wofür du verschiedene Quellen in Betracht ziehen kannst: Sei es eine Internetsuchmaschine, feste Literatur oder eine Kontaktperson, die sich im jeweiligen Metier auskennt.
Des Weiteren ist ein gestelltes Dilemma oft noch zu abstrakt bzw. komplex, als dass man es fassen und eine Lösung dazu implementieren könnte. Wenn ich bspw. sage, ich möchte ein E-Mail-Verwaltungsprogramm erstellen, ist damit noch lange nicht definiert, was da nun wirklich alles dazugehört. Deshalb solltest du schauen, ob bzw. wie du dein Zielvorhaben/Problem in einzelne Pakete zerlegen kannst, zu denen man schlussendlich auch Lösungswege finden kann. Für diesen Schritt kommen logisches Denken als auch Recherche in Betracht. Skizzen und UML-Diagramme sind ein gutes Hilfsmittel. Auch eine Prototypentwicklung halte ich nicht für abwegig, wenn man etwas Bestimmtes einmal kurz auszuprobieren möchte.
Während der Analyse könnten zudem noch versteckte Anforderungen sichtbar werden. Also etwas, was du zwar voraussetzt, aber noch nicht explizit festgehalten hast, obwohl es dafür ebenso einer Lösung bedarf.
Manche Ziele/Probleme können sich als so komplex erweisen, sodass eine Lösung mehrere Tage, Wochen, Monate oder sogar Jahre in Anspruch nehmen könnte. Die eigene Motivation spielt in der Angelegenheit also ebenso eine Rolle.
Was ebenso nicht außer Acht gelassen werden sollte, ist die Tatsache, dass es zu sehr vielen Problemen bereits vollständig implementierte Lösungen gibt. Wenn du also ein konkretes Aufgabenpaket gefunden hast, lohnt es sich, nach Programmbibliotheken zu suchen, die dir die Arbeit einer Implementation abnehmen. Nehmen wir dein Beispiel E-Mail-Versand: Via Recherche über eine Suchmaschine stößt man schnell auf Angus-Mail oder Simple Java Mail.
Und selbst wenn du da noch nicht fündig wirst, gibt es genügend Kanäle (Discord, gutefrage, StackOverflow, Quora, ...), über die du andere Entwickler fragen kannst. Umso besser du deine Frage stellst, umso besser kann dir geholfen werden. Seitens StackOverflow gibt es beispielsweise diesen Guide, der helfen sollte, gute Fragen zu formulieren.
Wenn du bereits in einem konkreten Problem steckst (sei es in der Analyse- oder Implementationsphase), würde ich dir raten, ein paar Schritte zurückzugehen. Es passiert schnell, dass man sich in etwas verkopft und es andere, einfachere Lösungswege gibt. Zumal ein Problem auch durch eine schlechte Planung / ein ungünstiges Konzept entstehen kann (Planung kommt immer vor Implementation).
- Lege eine Pause ein / widme dich einem anderen Problem.
- Falls deine bisheriger Ansatz aus Kraut und Rüben besteht: Schaffe Ordnung.
- Überdenke deinen Lösungsansatz.
- Suche nach Hilfe.
- Bei einigen spezifischen Problemfällen können Hilfstools (Profiler, Debugger) hilfreich sein.
- Wenn du Fehlermeldungen bekommst (oder Fehlerreports erzeugen kannst), befasse dich mit ihnen. Wenn sie unverständlich sind, hilft es oftmals, sie in eine Suchmaschine oder Anwendungen wie OpenAI/Claude/... zu werfen.
- Wenn du ein Problem mit einer Bibliothek, einem Sprachfeature, o.ä. hast, reicht es oft schon, in die dazugehörige Dokumentation zu schauen. Oft lassen sich nicht nur Beschreibungen, sondern ebenso Beispiele finden.
In der Programmierung gibt es mehrere Techniken, Verfahrensweisen, Prinzipien, ... (z.B. KISS, SoC, TDD, OOP-Entwurfsmuster, ...) die dir helfen sollen, gute Software aufzubauen. Wenn du mehr darüber wissen möchtest, habe ich in dieser Antwort schon einmal Literaturvorschläge aufgelistet.
Ich bin bei den Grundlagen (...)
Übe gezielt das Bauen von Algorithmen, falls du das noch nicht tust. In diesem Beitrag habe ich schon einmal einige Übungsaufgaben aufgelistet, die sich hierfür sehr gut eignen und zusätzliche Tipps für die Planungsphase gegeben.
Auf CodingBat, Edabit, Exercism oder w3resource kannst du noch weitere Übungsideen finden.