Cześć,
Jest to mój pierwszy post na tym forum, ale przyznaję się, że dość często tu zaglądałem w poszukiwaniu odpowiedzi. Także chciałem Was wszystkich bardzo serdecznie powitać, mam nadzieję, że moje posty i wpisy będą merytorycznie wzmacniać ten portal :)
Przechodząc do problemu:
Chciałbym się Was poradzić co zrobić, bo się mocno zagubiłem w aktualnej mojej ścieżce kariery. Z perspektywy wydaje mi się, że miałem o wiele więcej szczęścia niż rozumu w tym wszystkim i teraz dotarłem do klifu, a za sobą czuję ścianę zbliżającą się do mnie i jak nie wybuduję mostu, albo nie znajdę spadochronu to spadnę.
Od początku:
Studia:
- Inżynier Inżynieria biomedyczna spec. Informatyka medyczna - dużo rzeczy z informatyki, ale mniejszy nacisk na teorię programowania - tutaj nauczyłem się programować
- Magisterka: Informatyka - tutaj już w sumie mało było z teorii samego programowania, więcej algorytmiki, trochę ML i innych
Praca:
- ASP.NET 5 MVC - zespół tworzący rozwiązania na potrzeby firmy, nikt się nam nie patrzył na ręce, mogliśmy robić co chcieliśmy. Problem był taki, że zespół był "młody i dynamiczny", każdy praktycznie po studiach i nie mieliśmy technicznego lead-a - 3 lata
- .NET Framework - do teraz prawie 5 lat. Praca niby lajtowa, mieliśmy produkt, który był sprzedawany do klientów, a nasz zespół robił dedykowane customizacje. Niestety sama aplikacja nie była pisana w zgodzie z jakimikolwiek zasadami dobrego programowania. Zasady SOLID? Brak. Praktycznie brak użycia interfejsów, klas abstrakcyjnych... No bida. Ale człowiek się tym nie przejmował. Pracowało się fajnie, problemy bardziej z poziomu algorytmiki i samej logiki bez zaawansowanych problemów projektowych. Wszystkie rozwiązania były dostosowywane do pierwotnego produktu, więc ciężko było zrobić cokolwiek więcej. Nawet testów jednostkowych brak. Aktualnie niestety projekt przeszedł w stan utrzymania i programuję tylko co kot napłakał. Czasami zmienię jedną linijkę, gdzieś poprawie jakiś wyświetlany tekst, albo piszę testy automatyczne w AutoIT.
I teraz mam wielki problem. Z programowania jestem głównie samoukiem, na studiach było bardzo mało teorii. Programowałem sam, więc fachowe nazewnictwo gdzieś uciekało (a na kawie raczej nie rozmawia się o boxingu i unboxingu).
Aktualnie próbuję zmienić pracę, jednak się za każdym razem odbijam na rozmowie. Za każdym razem jestem dopytywany o jakieś szczegóły z technologii, typu co to właśnie ten boxing i unboxing, czym jest stos i sterta, jakie mamy problemy, ryzyka przy pracy na wątkach, czy klucz w słowniku może być typem referencyjnym czy może być tylko prostym, jeśli może być typem prostym do w jaki sposób na nich pracować, jakie znam mechanizmy i biblioteki do testów, jakie znam rodzaje testów, czym testuję UI itd. Ostatnio często i gęsto pytają o technologie dodatkowe typu JavaScript, TypeScript i Angular (z którymi nie miałem do czynienia i nie ukrywam tego na żadnym etapie rekrutacji)
Po każdej rozmowie staram się zapamiętać jak najwięcej pytań, by potem je zweryfikować i zapamiętać. Tylko nie ważne ile tych pytań przerobię to na rekrutacjach pojawiają się może trzy takie same (i to zazwyczaj SOLID, Interfejs vs klasa abstrakcyjna). Przyznam się Wam, że czuję się psychicznie okropnie. Już nie wiem jak podchodzić do tej nauki i poszukiwania pracy.
Próbowałem inaczej i kandydowałem do pracy z zadaniami do zrobienia. Np. WebApi w .NET 5. Zrobiłem, ale nie wykorzystałem najnowszych zdobyczy .NETu i kiszka.
Na żadnym etapie nie ukrywałem, że nie jestem omnibusem z tego tematu. Siedzę, programuję i robię co do mnie należy, ale widzę, że to za mało. Powinienem chyba być jakimś gościem, który sam postawi system u klienta w miesiąc :(
Pożaliłem się i teraz pytanie:
Koledzy, co radzicie, w jaki sposób uzupełnić swoją wiedzę teoretyczną, by przejść przez te nieszczęsne "egzaminy". Czy zrobić kurs i uzyskać certyfikat MS z zakresu programowania? Co mogę zrobić, by mieć szansę zmienić pracę. Bo czuję, że jeszcze rok, najdalej dwa i zapomnę jak się programuje.