Cześć,
Odniosę się do tylko od ułamka tego co napisałeś, ale może uznasz to za warte przemyślenia :)
Zacznę od użyteczności tworzonych projektów. Odniosłem wrażenie (popraw mnie, jeśli nie mam racji), że jesteś zdania, iż każdy stworzony projekt powinien być skończony i użyteczny dla innych, a jeśli takowy nie jest, to nie ma sensu go tworzyć.
Osobiście jestem zdania, że to nie jest prawidłowe podejście.
Podam Ci taką zabawną statystykę z mojego dysku twardego: każdy projekt (niezależnie od jego wielkości) ma u mnie na dysku swój katalog; z ostatnich ~14 lat (z wcześniejszych mam w innych miejscach; również nie liczę tutoriali/etc które publikowałem) mam delikatnie ponad 1500 takich podkatalogów. Jeśli byśmy przejrzeli je pod kątem "skończonych projektów" (tj. takich, które uznałem, że warto opublikować / podzielić się nimi), to znajdziemy może z 50-75. Jeśli chodzi o "użyteczne", to połowa odpadnie.
Z jednej strony można by powiedzieć, że niepotrzebnie straciłem czas na ~1400 projektów. Ale to by nie było prawdą. Prawda jest taka, że nawet najmniej użyteczny, rzucony w kąt po godzinie, projekt daje Ci pewne doświadczenie (zupełnie jak w grach RPG). Każda godzina przesiedziana nad myśleniem, implementowaniem, debugowaniem, poprawianiem, testowaniem, optymalizowaniem czy szlifowaniem kodu to kolejne punkty doświadczenia, kolejne automatyzmy które w sobie wyrabiasz, kolejne błędy które popełniasz (i z których wyciągasz wnioski; żartobliwie czasem się twierdzi, że ekspert to osoba która w swojej działce popełniła wszystkie możliwe błędy) i problemy które rozwiązujesz, a także kolejne koncepty które zaczynasz rozumieć.
Pozwól więc sobie na projekty, które będą nieużyteczne, które rzucisz w kąt po godzinie, dniu lub tygodniu. Jeśli jakiś projekt znudzi Ci się w połowie, nie przejmuj się tym i po prostu weź się za kolejny. I kolejny. I kolejny. Doświadczenie zbierasz przez cały czas, ale żeby dojść do dobrego poziomu potrzeba zebrać go dość sporo (często mówi się o 10000 godzin, ale to zależy od działki/człowieka/konkretnej sytuacji/etc; natomiast ta wartość obrazuje rząd wielkości), więc musisz ten czas jednak "poświęcić" (celowo wziąłem to słowo w cudzysłów; ludzie są różni, dla niektórych programowanie/etc to prawdziwe hobby, więc "poświęcić" jest po prostu nieprawidłowym słowem w takim kontekście).
Druga sprawa, która mi się rzuciła w oczy, a o której raczej wiesz bazując na tym co napisałeś, to Twoje przywiązanie do kursów.
Ktoś mądry (bodajże Aleks Barczewski; bardzo przepraszam, jeśli źle pamiętam) zasugerował kiedyś, ze przy nauce powinno się stosować zasadę typu 70% 20% 10% (dokładne procenty są nieistotne, raczej chodzi o kolejność / zobrazowanie proporcji), tj. 70% praktyki, 20% podglądania mistrzów, oraz 10% teorii (w tym kursów, tutoriali, etc).
Oczywiście to może być 60/30/10, albo 70/10/20 (w zależności od osoby i działki), ale istotne jest to, że praktyka (tj. tworzenie) jest pierwsze i przede wszystkim na tym powinno się skupić (i tak, to jest ta najtrudniejsza część - stąd jest jej najwięcej). Zarówno podglądanie mistrzów (w przypadku programowania to np. przeglądanie kodu istniejących projektów opensrc lub oglądanie livestreamów profesjonalnych programistów, podczas których tworzą prawdziwe projekty) jak i teoria/podstawy są istotne, i nie należy ich zaniedbywać; ale jednak praktyka powinna iść pierwsza.
Taką analogią, która mi się narzuca, jest nauka języków obcych - jeśli skupisz się na czytaniu i rozumieniu, a także słownictwie, to mimo, że nie będziesz miał problemów z oglądaniem filmów / czytaniem książek, to z napisaniem nawet najprostszego zdania będziesz mieć problem (bo to jest jednak trochę inna umiejętność).
Podobnie w programowaniu - jeśli nie będziesz pisać programów, nie będziesz umieć pisać programów :)
No i ostatnia rzecz, dość oczywista, brzmi: czy programowaniem jest na pewno tym co chcesz robić? Odpowiadając sobie na to pytanie wyobraź sobie te wspomniane przeze mnie 10 tys. godzin - czy myśląc o nich masz uczucie ekscytacji? Czy może stwierdzasz, że brzmi to nużąco i raczej Cię nie bawi? Co by tu nie mówić, ale żeby przy czymś przysiedzieć 10 tys. godzin trzeba mieć albo dobry nacisk z zew., albo to po prostu lubić :) A na świecie jest masa bardzo ciekawych i fascynujących działek - jest w czym przebierać :)
W każdym razie trzymam kciuki i życzę powodzenia, niezależnie od tego w którą stronę postanowisz iść :)
P.S. Ad "znikające pomysły" - norma.
Sztuczka której używam (no, nie tylko ja, to nie jest zbyt oryginalny pomysł): miej zawsze pod ręką zeszyt i je OD RAZU (nie za minutę, od razu) zapisuj. Jak będzie krucho z pomysłami, to po prostu otwórz owy zeszyt.
Sztuczka numer dwa (trochę bardziej specyficzna; dla mnie działa ale YMMV): jak nie masz pomysłu, otwórz losową książkę o programowaniu/IT którą masz na półce, na losowej stronie, i zacznij czytać / skakać po niej - ja zazwyczaj po kilku minutach mam jakiś pomysł ;)