Ucz się dalej C++'a, ale już nowoczesnych standardów. Stosuj bibliotekę dostarczaną wraz z językiem. Szczególnie interesujące powinny być <algoritm>, <type_traits> (tu uwaga bo po lekturze tutoriali to nie jest banalne), <memory>, <thread> (znów to co dla <type_traits>), <string>, <vector>, <map>, <set>, wersje unordered, <random>, <functional>, składnia lambdy....
Dodatkowo opanuj język który pozwoli Ci szybko implementować algorytmy. Osobiście polecam Python'a. Tu także po zapoznaniu się ze składnią, zerknij do biblioteki standardowej. Szczególnie interesujące powinny być pakiety collections, itertools, sys, os...
W międzyczasie, implementacje w jednym lub 2 językach zadań ze spoj.com (z naciskiem na wersję angielską witryny a nie polską). Tu jak zaliczysz zadanie, wracaj w miarę możliwości do poprawienia kodu tak aby był bardziej czytelny i posiadał "elegancję". Pamiętaj że SPOJ nie nauczy cię architektury aplikacji...
Tego nauczy Cię własny projekt np. prostej gry. Tu fajne są gry planszowe. Gomoku, zwykłe kółko i krzyżyk, szachy (w zakresie wyłącznie poruszania się bierkami bo silnika na tym etapie nie pisz). Gry wystaw np. na github'ie i proś o recenzję kodu. Pamiętaj jednak że uwagi przyjmujesz "na klatę" i nie mają one Ciebie dotykać a pozwalać podnosić kompetencje :-)
Co do stażu... Wbrew pozorom jeśli chcesz, to znajdziesz staż :-) Wystarczy się nie zrażać i brnąć do przodu. Pytać. pukać, prezentować ... O ile będziesz miał w młodym wieku dorobek na SPOJ'u, kilka projektów na github'ie... Przyszły "stażo-dawca" chętnie będzie z Tobą rozmawiał.