Das geht wirklich jedem in dem Bereich so. Immer, wenn man denkt, dass man jetzt wirklich passabel programmieren kann, sieht man andere Codes und stellt fest, dass man immer noch nur an der Oberfläche kratzt.
Ich kenne auch das Problem, dass man gerne etwas Brauchbares programmieren will und denkt, man könne es nicht. Für die ersten Schritte ist es aus meiner Sicht nicht notwendig, dass eine Software brauchbar ist. Sie dient Übungszwecken und soll dir Freude bereiten.
Mein erstes brauchbares Programm war eine Nachbildung von "Master Mind". Das Spiel folgt ganz simplen Regeln und ich hatte es nach ein paar Monaten (!) fertig und war stolz wie Oskar. Ich spiele es nie, aber immerhin hätte es theoretisch funktioniert.
Momentan programmiere ich seit über einem Jahr an einem intelligenten Darts-Bot, der in seiner "Zielgenauigkeit" auf den Spielstand und die Dynamik des Matches reagiert. Diese Software nutze ich tatsächlich, um mich im Training zu verbessern.
Es geht einfach mit jedem Programm weiter nach vorne. Am Anfang dauert es noch lange, weil du umständlich programmierst. Je mehr Befehle du kennst, desto besser klappen die Abkürzungen!
Mit GUI würde ich erst arbeiten, wenn der Rest sitzt. GUIs bringen nämlich noch eine zusätzliche Komponente rein und können frustrieren, wenn es an den Basics noch scheitert. Spricht doch nichts gegen eine old-school API mit kommandobasierten Befehlen. Hat so ein bisschen Hacker-Charme.