To moze opowiem jak ja to robiłem:
Zacząłem w totalnym, januszsofcie, ale plusem było to, że jako juniora wpychano mnie w absolutnie wszystkie możliwe zadania. Porządnie udało mi się opanować SQL
Przeskoczyłem do firmy, która robiła jakieś tam systemy bankowe (bo znałem SQL) i zacząłem pchać się w programowanie - Java, Delphi, PHP, jak pojawiało się coś nowego, to skakałem jak osioł ze Shreka "weź mnie"
Trafiłem jako ~DBA/system administrator do jednego telekomu, ale też zdołałem zrobić parę zadań związanych z programowaniem, wszedłem mocniej w Androida (prywatnie). Napisałem samodzielnie przyzwoitą aplikację, parę gierek (Unity)
Poszedłem na jakieś targi pracy, pokazałem co mam zrobione, gość na stoisku rzucił się do moich stóp, dostałem pracę.
Znowu parę technologii pogłębionych, ale w sumie nic nowego, przez przypadek trafiłem do firmy, która potrzebowała "kogoś od baz danych", ale tak naprawdę potrzebowała programisty iOS (to mobilne, tamto mobilne, nie ma znaczenia). Trochę doświadczenia w Objective C, C++ doszło. Gdzieś tam jeszcze w tym czasie zrobiłem trochę kursów z ML
Zaproponowano mi pracę w pewnym startupie, gdzie znowu, ludzi mało, zadań dużo. Totalny miks pracy z aplikacji mobilnymi, ML, ale okazało się, że trzeba zrobić do nich backend (co, ja nie zrobię?). Wyszedł pewnie koszmarek, ale znowu do listy doszło parę rzeczy, praktyczne doświadczenie z ML, GCP, Springbootem. Podobno mieli problem ze znalezieniem na moje miejsce kogoś, kto zna Kotlina, bo zrobiłem w nim backend, zanim to zaczęło być modne :D. Do tego trochę roboty typu "devops".
No i trafiłem do projektu powiedzmy z C++, Java JEE (trochę doświadczenia miałem), Springbootem i architektem, którego kazano to przepisać na mikroserwisy, ale nie wyjaśniono czym mikroserwis jest... spore pole do zdobywania doświadczeń i uczenia się na własnych błędach za kasę korpo.
W popularnych obszarach software development brakuje mi jedynie jakiegoś doświadczenia z frontendem.
A piszę o tych swoich manewrach, bo często czytam tutaj z jednej strony posty taki jak tytułowy, z drugiej strony oburzenie, że ktoś śmiał programiście Spring (cóż za wąska specjalizacja), popatrzeć na coś w aplikacji na Androida, albo nie daj boże odpalić kontener dockera, czy innego minicube. Nie jest prawdą, że bardzo wąska specjalizacja się opłaca na dłuższą metę. Jest to wygodne, ale na dłuższą metę zamyka nas w jakiejś konkretnej specjalizacji, powstaje pułapka kasy, bo zająłbym się czymś innym, ale zapłacą mi mniej, pojawia się rodzina i nie ma czasu na własne projekty. Ale bycie wszechstronnym programistą daje więcej radości (trudniej o wypalenie), stabilność (bo szanse, że nie znajdę roboty w żadnej z rzeczy które robiłem są znikome) i otwiera ścieżkę kariery (aktualnie "architektuję", bo mam właśnie szerokie doświadczenie).