Powoli zbliżają się matury. A co za tym idzie, jeśli noga się nie podwinie, raczej poważne życiowe decyzje - jakie studia, gdzie, w jakim trybie? Pomyślałem, że to dobry moment, by dodać do tego tematu swoje trzy grosze. Bezpośrednio zainspirowało mnie jedno z pytań zadanych na grupie Programowanie/Biznes It/Java/Php/.Net/C #/ Polska/Poland na Facebooku.
Od razu uprzedzę. Nie udzielam w tym wpisie odpowiedzi, która powinna być traktowana jako wyrocznia, bo też nie jestem żadną wyrocznią i nie jestem niczym uprawniony by się za taką uważać. Ale kierując się swoim doświadczeniem, wyrażam swoje zdanie, które być może będzie małą cegiełką w Waszej decyzji.
Nie chcę przynudzać, ale na początku trochę historycznego tła. Ja jestem już dość "stary", swoje studia skończyłem 10 lat temu. Mam wrażenie, że to były trochę inne czasy. Na studia dzienne szło się z definicji, na zaoczne - raczej tylko w razie faktycznej potrzeby, np. braku opcji by przez kilka lat nic nie zarabiać z powodu utrzymywania rodziny itp. Oczywiście zdarzali się osobnicy, którzy już chcieli zarabiać, bo tak, ale to były pojedyncze przypadki. Przynajmniej tak to wyglądało w moim otoczeniu.
Teraz jak widzę wybór nie jest już oczywisty i coraz więcej osób zastanawia się, czy "marnować" te 5-6 lat na studia dzienne, czy od razu nie pogodzić tego z pracą, zdobywając praktyczne doświadczenie. Klasyczny problem. W dyskusjach widzę obecnie dwie główne opinie:
- studia dzienne - idziesz, marnotrawisz mnóstwo czasu, balujesz i po 5 latach trafiasz na rynek całkiem zieloniutki
- studia zaoczne - idziesz, kasę oraz doświadczenie zdobywasz od samego początku
Gdybym się z tymi opiniami zgadzał, tego posta by nie było. Jednak nie mogę się z nimi zgodzić i oto dlaczego.
Po pierwsze, to czy zmarnotrawisz jakiś czas zależy tylko od Ciebie, nie od rodzaju studiów, które wybierzesz. Można "przebimbać" równie elgancko studia dzienne jak i zaoczne. Albo równie dobrze ten czas wykorzystać. Tak samo, nikt nie zmusi Cię do nauki. Prześlizgnąć się można zarówno studiując dziennie jak i zaocznie. Dlatego nie trafiają do mnie całkiem argumenty o "marnotrawieniu" czasu. Owszem, plan zajęć na studiach dziennych często jest pokręcony, z godzinnymi przerwami itd. Ale bez przesady, dla chcącego nic trudnego. Można ten czas wykorzystać lepiej niż chodząc na piwo.
Po drugie, największą zaletą studiów dziennych jest kompleksowa wiedza, którą mamy szansę zdobyć. Tak, wiem. Będą nas na początku uczyć o tranzystorach, algebrze liniowej, całkach nieliniowych, dziwacznych algorytmach i całej stercie rzeczy, która nigdy nam się nie przyda. Ale czy na pewno całkiem nie przyda? Istnieje coś takiego jak ogólnie pojęty rozwój, coś co nazywamy "wyższym wykształceniem". Coś co sprawi, że po dobrze odbytych studiach będziemy wiedzieć jak działa kompilator, a nie tylko do czego służy. Jak działa CPU, a nie tylko ile ma mieć GHz żeby się szybko kompilowało. Liznąć wiedzy, której sami nie będziemy zmotywowani zdobyć - choćby podstaw np. przetwarzania sygnałów, układów logicznych, teorii informatyki. Na bazie całego tego wora tematów znacznie szybciej w przyszłości zrozumiemy nowy język programowania, nową architekturę, nowe cokolwiek. Na studiach dziennych takiej ogólnej wiedzy zdobędziemy łatwiej więcej i głębiej, niż na zaocznych, gdzie siłą rzeczy jesteśmy ograniczeni czasem i własnymi siłami. Pouczcie się, pobróbujcie różnych technologii, zaimplementujcie na laboratoria, kląc pod nosem, TCP za pomocą UDP albo programując układ FPGA. Będzie to do Was wracać potem wielokrotnie i w różnych postaciach. Nie chcę tu deprecjonować merytorycznie studiów zaocznych. Jeśli zechcecie i starczy Wam sił, można z nich zapewne wynieść podobne treści. Ale bądźcie świadomi - będzie to wielokrotnie trudniejsze i wymagało ogromnego samozaparcia.
Odnośnie studiów w ogólności. Jak to trafnie zauważył kolega z pracy, uczelnie (zwłaszcza te najlepsze) nie produkują specjalistów od .NET, Javy czy Ruby. Ale to nie jest ich wada tylko zaleta. Takie uczelnie produkują inżynierów, z wszechstronnymi fundamentami, specjalistów w systemach informatycznych którzy potem mogą z wielką łatwością zostać specjalistami programowania w dowolnym języku/językach ale i architektami, analitykami IT, administratorami itd. Jest to szczególnie ważne w kontekście dynamiki IT, której nie sposób nie zauważyć. Zaczynając teraz studia nawet nie jesteśmy do końca w stanie przewidzieć, jakie zawody i specjalizacje będą potrzebne za te 5-10 lat. Nie narzekajmy więc, że uczelnia nie zrobi z nas eksperta .NET, bo uczelnia nauczy nas dobrze programowania obiektowego i C++. Potem nauczymy się C# za pomocą jednej książki. Nie narzekajmy, że na uczelni nie było F#, bo po przedmiocie z Lispa, Prologa albo Scali będzie to dla nas tylko jeszcze jeden dialekt programowania funkcyjnego.
Po trzecie, boisz się, że po studiach dziennych będziesz zielony? Nic zupełnie nie stoi na przeszkodzie, byś nie był. Studia to dobry czas, by zaangażować się np. w projekty open source. Jest tego tyle i tak ciekawego, że starczyłoby na pełny etat. Został otwarty kod prawie całego .NET. Mnóstwo frameworków, bibliotek, narzędzi. Jeśli szukając pracy pod koniec studiów pochwalisz się realnym i ciekawym udziałem w czymś takim, zaplusujesz. Nie zabrzmi fajnie: „trochę mojego kodu jest w CoreCLR, którego codziennie używacie���? Poza tym ostatnie dwa lata studiów są już zauważalnie luźniejsze i można zacząć rozglądać się choćby za częściowym etatem albo jakimiś zleceniami. W ostateczności, dopiero studia magisterskie możesz zrobić zaocznie. Tak czy inaczej - tylko od Ciebie zależy czy faktycznie będziesz całkiem zielony pod koniec studiów i czy możesz zaoferować coś, co w zauważalnym stopniu zrekompensuje brak etatu od kilku lat. Co więcej, na studiach dziennych to Ty decydujesz w jakim kierunku chcesz się rozwijać. Łapiąc się pracy w trakcie studiów zaocznych, to te projekty wyznaczą Twój kierunek rozwoju. Często dość przypadkowo (bo akurat Cię zatrudnili w Oraclu itd.). Często zaczniesz od jakiegoś help desku (tak, maturzysta nie jest dla firmy hiper-wypas-devem) i na kilka lat w nim pozostaniesz. To doświadczenie potem w CV znaczyć będzie prawdopodobnie naprawdę niewiele.
Poza tym, jest jeszcze jeden aspekt. Otóż osobiście uważam - nie dajmy się zwariować. Tak, zarabianie jest ważne, tak dobre wejście w rynek też jest ważne. Ale jeszcze zdążycie się naharować w fabryce. Studia to unikalny czas, jeśli tylko możecie, wykorzystajcie to. I nie chodzi mi o balowanie. Tyle jest organizacji studenckich, wolontariatów, można coś zrobić nie tylko dla siebie. Poznawać ludzi. To właśnie na studiach możesz poznać wielu „zawodowych” przyjaciół na całe życie. Możecie razem kręcić własne projekty. A w wyścigu szczurów i tak każdy wystartuje, więc po co się aż tak śpieszyć? Idąc tym tropem, właściwie już po podstawówce można rzucić edukację i zaczynać robotę. A potem będziecie żałować, że całe życie jedynie pracowaliście.
Co miało być powiedziane, powiedziałem. Rekrutować Was mogą takie dziadki jak ja, z takimi jak ja poglądami, więc ten głos może być dla Was ciekawy. Idąc na rozmowę rekrutacyjną, osoba po studiach dziennych ale z czymś ciekawym do pochwalenia się (wspomniany, konkretny open source, jakieś zlecenia) stoi według mnie na podobnym poziomie co osoba, która w tym czasie klepała kod w jakiejś wyzyskowni, studiując zaocznie. Ta druga pewnie na początek dostanie lepsze warunki, ale szybko się zrównają, a może nawet przegonią.
PS. Myślę, że z tonu tego wpisu domyślacie się jakie jest moje zdanie na temat trzeciej opcji - brak studiów w ogóle i od razu orka na cały etat. Ale dla pewności podkreślę - nie, nie uważam tego za dobrą opcję z powodów takich jak powyżej.