@icantcode: Programowanie jest super. :) Najbardziej, jak już rozumiesz, jak to wszystko działa. Do tego długa droga – przynajmniej z mojej perspektywy.
Nie wiem, czy powinienem Ci coś radzić, bo ja cały czas mam w głowie, ile rzeczy jeszcze z programowania nie umiem, które powinienem umieć (co do których uważam, że powinienem).
A co robię na naszym portalu? Czytuję na mikroblogu wpisy o technologiach, których nazwy nie widziałem pewnie ani razu. W szczególności komentarze bywają pomocne, bo dają pewien kontekst – a kontekst znacznie pomaga w zrozumieniu. Czego żałuję, to tego, że u mnie "zrozumieć" to nie to samo, co "zapamiętać".
Nie robię tego "po coś", ale "ponieważ". Ponieważ dobrze jest wiedzieć, gdzie się jest. Jak powstał FORTRAN, czemu architektura x86 tak się nazywa, czy bajt to zawsze 8 bitów. Zagadnienia niepowiązane bezpośrednio, ale zaryzykuję, choć nie programuję w Pythonie: jestem pewien, że ten język silnie opiera się na doświadczeniach poprzednich języków oraz na przypadkach użycia programów w nich pisanych. Możesz też poczytać o Go (Golangu) – czemu w ogóle powstał. Moim zdaniem jego przypadek wyraźnie pokazuje pewien sposób myślenia w programowaniu.
Jeśli miałbym coś konkretnie radzić: jak już zrozumiesz, jak działa dany kod, staraj się po trochu zrozumieć tzw. "całość". Co się dzieje podczas preprocessingu, interpretacji, kompilacji, linkowania czy wykonywania (wybór tych kroków zależny od technologii). Czemu takie polecenie kompiluje, a nie inne. Skąd konsola wie, co zrobić, jak wpiszesz polecenie i naciśniesz ENTER?
I! Nie wszystko naraz.
wygooglowałem kod i sobie go zwizualizowałem
Co masz na myśli przez "zwizualizowanie" kodu?
UPDATE
Tak sobie myślę, że wyżej napisałem z perspektywy osoby, która chce umieć programować w danej technologii, a nie zagadnienia z danej domeny – czyli w zasadzie Twój przypadek (ważniejsza jest logika kodu niż język).
Mam nadzieję, że choć trochę te informacje okażą się pomocne. Myślę, że znajomość zagadnień okołoprogramistycznych, a także budowy języków programowania, pomoże trochę i w tworzeniu algorytmów.
Co może pomóc więcej? Być może rozmyślanie nad tym, jak coś działa. Dlaczego ten kod jest napisany tak, a nie inaczej. Dlaczego w ogóle ktoś go napisał? Co chce przez ten kod pokazać? Czy to kod napisany możliwie prosto, by było go łatwo zrozumieć początkującym? Czy może chciał powiedzieć, że tak się w ogóle da napisać (a nie w każdej technologii wszystko się da)? Czy może to chciał pokazać, jak elegancko można zaprojektować tzw. abstrakcje w programie – albo jeszcze coś innego mu przyświecało.
Możesz zobaczyć, co to jest domena (nie znalazłem strony na polskiej Wikipedii). To pojęcie w pewnym sensie konkretyzujące "sens" danego programu.
Jeśli coś niejasne, co napisałem, to nie wahaj się pytać – ja chętnie doprecyzuję. :)