Marnowanie czasu – to jeden z głównych zarzutów stawianych studiom dziennym na kierunku informatycznym. “Traci” się czas na matematykę, algorytmy i, ogólnie, “zbędną teorię”. A liczy się przecież znajomość języków i frameworków! Czy aby na pewno…?
Po co są te studia?
Studiowanie informatyki polega na tym, że zdobywa się wiedzę na temat przetwarzania informacji w sposób zautomatyzowany. Jest to dziedzina nauki silnie związana z matematyką (stąd ok. połowa moich zajęć to przedmioty matematyczne), informatyka jest wręcz jej dużo młodszą siostrą, która już żyje swoim życiem (miałem przedmioty matematyczne, o których koledzy i koleżanki z instytutu matematycznego się, prawdopodobnie, nigdy nie dowiedzą, jeśli sami nie zechcą). Nauka ta polega na tworzeniu coraz bardziej zaawansowanych technologicznych rozwiązań, programowych i sprzętowych, które pozwalają rozwiązać coraz bardziej skomplikowane problemy.
Tutaj zaczynają się schody i problemy – studenci przeważnie są odporni na wiedzę, która pozwala na efektywne rozwiązywanie problemów. Wiem to po sobie. Wynika to stąd, że ta wiedza często jest przekazywana w sposób nieadekwatny dla przyszłego programisty. Programistę niezbyt pasjonują matematyczne mechanizmy i prawidła, stojące za praktycznymi i efektywnymi rozwiązaniami. My nie chcemy rozwiązywać po 50 całek dziennie czy dowodzić właściwości danych obiektów matematycznych – to nie jest naszym celem, nie jesteśmy studentami matematyki. Chcemy rozwiązywać stojące przed nami problemy – pisać programy, które ułatwią nam życie. Niemniej by korzystać z najlepszych rozwiązań, często potrzebna jest choćby pobieżna wiedza i zręczność w Królowie Nauk, tak by móc adaptować w sposób przemyślany podane nam wcześniej narzędzia, w postaci algorytmów. Chcąc korzystać w sposób zaawansowany z sortowania, musimy wiedzieć czym to sortowanie jest i co się za nim kryje.
Ale po co się tego uczyć? Takie rzeczy są już zrobione, po co masz odkrywać koło na nowo? Przecież są frameworki i biblioteki, które takie rzeczy już robią! Owszem, są. Ktoś je musi jednak napisać. Ktoś musi napisać kompilator, bibliotekę, .NET, Javę i inne cuda. Tu potrzebna jest wiedza na temat tworzenia NOWYCH rozwiązań, a nie używania już istniejących – często, pracując w takich projektach, programista przed zaklepaniem choćby jednej linijki kodu siedzi tydzień nad pomysłem “jak to zrobić dobrze?”, ponieważ nikt wcześniej nad tym nie myślał – i tutaj przyda się ta wiedza nt. tworzenia i weryfikowania własnych pomysłów.
Zręczne używanie frameworków to nie żadne “tworzenie technologii” – taki programista jest jedynie bardzo zaawansowanym użytkownikiem danego języka/frameworka, niczym więcej. I fakt – do tego studia są nie potrzebne – wystarczy wyrobić sobie zręczność w posługiwaniu się tymi narzędziami. Przed podjęciem decyzji czy pójść na/rzucić studia musisz sobie odpowiedzieć na pytanie – czy mnie to interesuję na serio, czy chcę to zgłębiać, czy raczej interesuje mnie trzepanie dobrego hajsu bez zbytniego wysiłku. Pisanie kolejnego portalu społecznościowego czy gierki na ajfona, to rzeczy, które może robić rozgarnięty licealista, nie trzeba do tego wielkiej naukowej wiedzy.
Jeżeli twoim celem jest to drugie, studia są ci zbędne całkowicie. Jeśli jednak chcesz zgłębiać naukę informatyki, to musisz wybrać odpowiednią uczelnię, która pomoże ci zdobyć specjalizację w tej dziedzinie.
Wiedza specjalistyczna
Tutaj często dla uczelni alternatywy nie ma – sporej ilości rzeczy na Google nie znajdziesz, a jak znajdziesz, to nie zrozumiesz bez wytłumaczenia kogoś bardziej doświadczonego. Taka wiedza właśnie nadaje ci, drogi czytelniku, wartość rynkową. Jeżeli znasz się tylko na 1000 frameworków, to jesteś w pełni zastępowalny – zwolnienie ciebie nie będzie problemem, jeżeli na rynku są setki tysięcy “frameworkówców”, to znalezienie kolejnego, tańszego, lepszego od ciebie nie będzie trudne. Natomiast jeśli znasz się na grafice 3D, kryptografii czy algorytmach rozpoznawania obrazu albo tekstowych, to stanowisz większą wartość rynkową, więcej zarabiasz i trudniej cię zwolnić, ponieważ trudniej cię znaleźć. Jesteś o “Google search” i wiedzę jak zastosować dane rozwiązanie, od frameworkowego praktyka szybszy.
Ale Bill Gates rzucił…
Tak – ponieważ jakimś cudem posiadał całą potrzebną wiedzę bez uczelni. A na studia później i tak wrócił. Nie pozwalaj sobie wmówić, że rzucenie studiów da ci jakiegokolwiek kopa w twojej karierze – często może to tak pomóc, jak rzucenie narzeczonej pomaga w założeniu rodziny. Decyzja o podjęciu/rzuceniu studiów powinna być twoją decyzją, bazującą na tym jak widzisz swoją przyszłość. Chcesz mieć studio webdeveloperskie? Prawdopodobnie uczelnią rzeczywiście zmarnujesz czas. Chcesz zajmować się problemami algorytmicznymi? Idź na dobre studia.
Nie każdy programista rzeczywiście chce tak spędzić swoje życie zawodowe – jeżeli zamierza być rekinem e-biznesu raczej powinien skupić się na sprawach biznesowych, a programowanie potraktować jako środek przebicia się w tym biznesie.
Nie ma tu jednej drogi dobrej dla wszystkich, więc zachęcam do nie wciskania swoich poglądów kolegom po fachu – nigdy nie wiecie, jakie na prawdę mają życiowe cele.
PS. Wesołych Świąt i Błogosławieństwa na Nowy Rok 2015!