Nie dam profesjonalnego poradnika, ale coś co mi na szybko przychodzi do głowy z własnego doświadczenia.
czy to rozwiązywanie różnych zadań z c++ ( trochę jak z uczeniem się matematyki - trzeba klepać i jeszcze raz klepać zadania, żeby wyrobić w sobie metody rozwiązywania problemów) , czy też >skupić sie na bibliotece STL (w kursie omawiane są tylko vektory),
Te oba, z naciskiem na to drugie. Z bazami danych statystycznie nie ma się styczności jako programista c++. Ja robilem tak na starcie, ze jak rozwiazywalem sobie zadanka to staralem sie rozwiazywac to za pomoca STL-a, zeby sie nauczyc. Na początku musisz liznąć klasycznego c++(nie jakoś sporo, ale trochę zadanek z rób), typu raw pointery, raw array, co to jest referencja i to wszystko co jest dziwne i nie wiadomo po co to. Jakbyś nie miał pomysłu to na studiach robi się tak, że pisze się np własną liste i programuje operacje, typu dodanie do listy, ściągnięcie, posortowanie itd. Po to w zasadzie, żeby poćwiczyć te wskaźniki. Jest to potrzebne, ponieważ możesz dzięki temu zrozumieć koncepcje i nie rzadko będziesz korzystał z biblioteki, która ma C-style API, np OpenCV. Warto być przygotowanym. Natomiast poza tym treningiem używaj vectorów, listy, mapy, auto, lambd i smart pointery wszędzie gdzie będziesz potrzebował. Każdą funkcję rób najpierw jako const i przesyłaj przez argument jako const&. Jak się nie da to odcinasz tego czego nie możesz.
Jak już ogarniesz to programowanie proceduralne to ucz sie obiektowosci(polimorfizm itp), bo to jest baaardzo wazne. Następnie poczytaj o RAII, composition over inheritance (to w c++ jest najważniejsze, bo często jest praktykowany antywzorzec robienia głębokich hierarchii klas z wielodziedziczeniem, to zła praktyka a będziesz się z tym spotykał niestety w starych projektach, wiedz, że to złe), SOLID-zie, rule 0/3/5 i jakichś podstawowych wzorcach projektowych(strategie też ogarnij, przydatna, bo w c++ często pisze się algorytmy), to na start będzie wporządku. Dobra znajomość tego to podstawa a w c++ obiektówka jest pokręcona i ma niestety mnóstwo smaczków, które trzeba znać. Szczególnie przy przeładowaniu operatorów i mnóstwie przeróżnych rodzajów inicjalizacji (wszędzie korzystaj defaultowo z inicjalizacji "{}" i nie rób niepotrzebnych konstruktorów).
Potem liźnij wielowątkowości, dosłownie podstawowe koncepcje Ci wystarczą, jakie problemy się spotyka, napisz parę programów, spróbuj sobie zrównoleglać pętle. Porób benchmarki itd.
Jak będziesz umiał wykorzystywać wiele rzeczy w praktyce to już jest fajna podstawa. (jak coś ominąłem to inni użytkownicy mnie poprawią)
No i do tego momentu jeszcze masz możliwość zmiany języka :D . Jeżeli uznasz nadal, że chcesz zostać w c++ to zabierz się za szablony, etapy kompilacji itd, metaprogramowania nie tykaj, bo szkoda czasu na to, ale jakieś podstawowe koncepcje, tak żebyś mniej więcej umiał np napisać własny std::unique_ptr std::vector itd.
Do tego wiedza okolo informatyczna, typu co to procesor, jak działa, wątki, procesy, cache, podstawy systemów operacyjnych, sieci itd.
Z czego się uczyć?
Na pewno nie z tych kursów internetowych, bo większość to dziadostwo od hindusów, albo nie powiem kogo pokazujących złe praktyki. Na pewno nie bierz symfonii w dłoń.Znaleźć dobre źródła do nauki c++ w 2022 to wbrew pozorom dość trudna kwestia. Jeśli chodzi o książki to ja używałem Stroustrup Kompedium WIedzy 4 edycja. Jest calkiem niezla polska wersja (łatwiej dostepna btw). Podoba mi się w nim to, że ma ładnie poukładane etapy nauki. Możesz isć po kolei i jesteś wprowadzany stopniowo w ten język. Jakbyś się zabrał i robił po kolei to polecam skipnać rozdziały 24-28, bo to dla koneserów. Na pewno szkoda czasu dla juniora. Minusem jest styl pisania, bo jest to prawie jak encyklopedia, w takim stylu została też pisana. Natomiast tam jest max c++11 co jest za mało niestety. 14 to rozwinięcie 11, więc przy okazji się nauczysz, ale 17 jest już ważna. Ja się tak uczyłem, że oglądałem cppcony i próbowałem to aplikować do projektów. Pierwsze lepsze z głowy to: variant, visit, optional, filesystem, auto w różnych nowych miejscach - to się często używa.
c++20/23 możesz liznąć tylko po to, żeby się pochwalić na rekrutacji, bo i tak prawdopodobnie nie będziesz tego używał w pierwszej pracy. Jak będziesz miał możliwość to korzystaj. Oglądaj cppcony i często czytaj o dobrych praktykach, jest taka strona jak https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines gdzie są opisane dobre praktyki. Ja na starcie robiłem ten błąd, że mało z tego korzystałem z czego potem żałowałem, bo trzeba było zmieniać przyzwyczajenia.
Została najtrudniejsza część, czyli własne projekty.
To jest najcięższe w c++ bo w sumie nie wiadomo co zrobić, żeby pasowało do tego języka w momencie kiedy się uczysz i tak na prawdę nie wiesz w jaką specjalizację chcesz iść, bo szuka się stażu gdziekolwiek. W webówce jest to łatwiej znaleźć, ale tutaj nie robisz projektów, które możesz zrobić Javą, C# albo webowymi językami. Mi pomogły tutaj studia i dedykowane problemy, które rozwiązywaliśmy. Często jakieś algorytmiczne, np MES, albo automaty komórkowe. Robiło się na uczelni, dopieszczało w domu i fajne projekty wychodziły na githuba. Musi być obowiązkowo obiektowy z wielowątkowością. Najlepiej związany z czymś czym się interesujesz.
Przyszłościowo co do rekrutacji to jest jedna uwaga. Niektórzy programiści c++ lubią na rekrutacji wypytywać o różne smaczki, bardzo rzadkie przypadki jakichś funkcjonalności itd. Nie da się wszystkiego wiedzieć, bo nie ma programisty na świecie, który by znał ten język. Nawet sam twórca ocenia swoje umiejętności jako "dobry". Tak więc nie przejmuj się jakby Cię przez to przekreślili. Najważniejsza jest umiejętność programowania obiektowego, dobre praktyki i wykorzystanie wzorców projektowych. Jak to umiesz to nadajesz się na staż imo. Pamiętaj, że nie musisz być nie wiadomo kim.
Rozpisałem się, ale dziś mam czas na to xd. Mam nadzieję, że Ci to pomoże.