Czy programiście potrzebne są studia?


Czy studia to marnowanie czasu? Programiśce studia nie są potrzebne? Sprawdźmy czy takie pytania i zarzuty to prawda w branży programistycznej.


W naszej branży panuje przeświadczenie, że studia nie są potrzebne do programowania. Są też tacy, co twierdzą, że jest to wręcz marnowanie czasu. Czy tak jest rzeczywiście? A jak sytuacja ma się z technikum informatycznym? Przekonajmy się.

Sam jestem po drugim stopniu studiów. Pomiędzy pierwszym a drugim stopniem tłumaczyłem sobie i wszystkim dookoła, że studia nie są mi do niczego potrzebne i nie ma sensu marnować czasu tylko po to, żeby otrzymać tytuł magistra. Trzymałem się tego stanowiska nawet po otrzymaniu dyplomu. Teraz minął ponad rok od ukończenia studiów i postanowiłem ponownie zweryfikować stwierdzenie czy studia są potrzebne programiście.

Opowiem swoje doświadczenia na podstawie technikum w Niećkowie oraz Politechniki Białostockiej .

Studia same z siebie nie nauczą nas programowania

Na początku powiedzmy sobie jasno - żadna szkoła, studia, książki czy kurs nie nauczy nas programować. Programowanie to umiejętność, której uczymy się sami a wszystko dookoła to tylko i aż pomoce. Dlatego stwierdzenie, że studia nie nauczą nas programowania jest jak najbardziej prawdziwe. Ale czy zatem prawdą jest, że programiście studia nie są potrzebne i jest to marnowanie czasu?

Na te pytanie już znacznie trudniej odpowiedzieć. Większość firm, które znam nie wymaga wykształcenia wyższego, tym bardziej informatycznego. Tytuł jednak, to nie wszystko. Jak wspomniałem wcześniej studia nie nauczą nas programowania same z siebie ale My możemy z nich wyciągnąć bardzo dużo. Wiedza przedstawiana na studiach jest uporządkowana i stosunkowo obszerna. Przekonajmy się jak to wygląda na podstawie szybkiego przeglądu studiów na Politechnice Białostockiej .

Podstawy Programowania

Pierwszym przedmiotem, który bezpośrednio kojarzy się z programowaniem są Podstawy Programowania. To właśnie na tym przedmiocie uczymy się podstaw, jak pętle, warunki proste typy i struktury danych, czy ostatecznie funkcje. Jeśli ktoś nie miał wcześniej styczności z programowaniem to tu będzie stawiał pierwsze kroki. Nie będzie to łatwe, ale mamy przedstawioną zarówno teorię i praktykę a to duże ułatwienie. Oczywiście ktoś może zarzucić, że najczęściej uczą archaicznych języków, których już teraz się nie używa. To prawda, ale nie jest to najważniejsze. Podstawy Programowania to przedmiot, który ma nas nauczyć rozumowania programistycznego a nie konkretnego języka. Zgadzam się, że dużo lepiej jest uczyć się na nowoczesnym języku jak na przykład nasz ulubiony Python ale rzadko się to zdarza i musimy uczyć się tego co nam prezentują. Zwłaszcza na początku.

Inne podstawy

Nie wiem jak na innych uczelniach, ale w naszej na pierwszym roku mieliśmy również inne przedmioty, które bardzo się przydawały zwłaszcza początkującemu programiście. Były to Wprowadzenie do Informatyki, na których uczyliśmy się ogólnie o informatyce, poznaliśmy systemy binarne i podstawy bramek logicznych. Była to również Technika Cyfrowa, która dalej ciągnęła ten temat oraz Podstawy Elektrotechniki, które nauczyły nas myśleć o kodzie na niższym poziomie. Poza tym mieliśmy również podstawy Analizy Danych i wiele innych, które omówimy dalej.

Programowanie Obiektowe

Rozmawiałem z wieloma osobami po różnych szkołach i to jest kolejny przedmiot, który przewija się wszędzie. Nie muszę chyba nikomu tłumaczyć jak ważne jest zrozumienie podejścia obiektowego w programowaniu. Nauka tego na uczelni ma tę zaletę, że w razie problemów ze zrozumieniem tematu zawsze możemy podpytać prowadzącego. Dla osób technicznych jest to stosunkowo proste ale na początku nauki pojęcia jak kompozycja, dziedziczenie, przeciążenie, klasa czy obiekt mogą być trudne do zapamiętania. Tu już wprowadzane są nowsze języki, najczęściej Java, C++ i C#. Warunkiem zaliczenia przedmiotu było napisanie programu w pełni zorientowanego obiektowo. Z perspektywy czasu wiem, że jakość naszego kodu była średnia ale radość jaka towarzyszyła mi przy stworzeniu pierwszej pełnej gry z interfejsem i ładną grafiką jest nie do opisania. Chyba już wtedy coś ciągnęło mnie do węży, bo był to Snake ;)

Więcej wiedzy o programowaniu

Nie sposób opisać wszystkich przedmiotów, bo wtedy wpis byłby zdecydowanie za długi. Dodam tylko, że poza wspomnianymi wcześniej mieliśmy bardzo dużo innych przedmiotów, które uczyły nas różnych aspektów programowania. Pamiętam jak męczyłem się z aplikacjami mobilnymi, wielowątkowością, aplikacjami w C# mimo, że nie jestem wielkim zwolennikiem tego języka czy ostatecznie niezliczonymi przedmiotami głównie pod Javę. Oczywiście nie była to wiedza, która robiła z nas web deweloperów, ale pozwalała spojrzeć na programowanie z innej perspektywy. Dodatkowo byliśmy zmuszeni przynajmniej orientować się w różnych standardach i językach, a taka wiedza w przyszłości owocuje, bo na tym etapie najczęściej nie wiemy w którym kierunku pójdzie nasza kariera.

Wiedza ogólna

Jak wspomniałem, nie da się opisać w krótkim wpisie całego toku studiów. Warto jednak zaznaczyć, że na studiach zdobywa się też wiedzę niekoniecznie programistyczną ale taką, która programiście może się przydać. Tak było w naszym przypadku z bazami danych, gdzie zrozumieliśmy bliżej jak to dokładnie działa i poznaliśmy nierelacyjne bazy. Awarie i praca uczą obsługi baz znacznie szybciej, ale jest to wiedza czysto praktyczna. Na studiach dowiedzieliśmy się nieco więcej teorii, która tutaj pomogła zrozumieć wszystkie mechanizmy a nie tylko je zapamiętać. Można było również zapisać się na obsługę Linuxów, a to jedna z najczęściej wybieranej grupy systemów operacyjnych do pracy w tworzeniu stron. Grafika komputerowa, przetwarzanie sygnałów i wiele innych przedmiotów mogą przydać się niespodziewanie w przyszłości. Sam wykorzystuję je do dziś mimo, że bezpośrednio nie dotyczą tworzenia stron.

Praca w grupie i system kontroli wersji

Ten punkt będzie chyba najbardziej kontrowersyjny. Czy studia nauczyły mnie pracy w grupie albo korzystania z systemu kontroli wersji jak GIT? Nie. A czy mieliśmy przedmioty wymuszające pracę w grupie i korzystanie z GIT? Tak. No to w czym problem? Otóż było to trochę za późno. Kontrolę wersji na studiach miałem dopiero po roku pracy, czyli jakoś pod koniec drugiego roku, a więc znałem ją już na tyle, że bez problemu poradziłem sobie bez tego przedmiotu. Do tego całość była potraktowana bardzo pobieżne. Prawdopodobnie dlatego, że prowadzący doskonale zdawał sobie sprawę, że już to umiemy. Podobnie temat miał się z pracą w grupie. To również było za późno. Ale Ja mówię to przez pryzmat osoby, która już wtedy pracowała. Gdybym nie pracował na studiach to te przedmioty były by bardzo przydatne, bo co jak co ale GIT jest nardzędziem, które ułatwia pracę każdemu programiście.

Przedmioty matematyczne

Kolejny raz trochę kontrowersji. Pracując jako programista webowy prawdopodobnie nie będziesz potrzebować zaawansowanej matematyki. Obsługa macierzy i całek to zadania, które przydadzą się bardziej w tworzeniu gier, a zwłaszcza grafice 3D. Jednak do przedmiotów matematycznych zaliczają się również na przykład logika, która przydaje się już częściej, a udowodniłem to w jednym z poprzednich wpisów . Będąc w technikum napisałem bardzo prostą grę, która była protoplastą do wydanego później przez nas jumpera . Pamiętam, że miałem wtedy duży problem z obsługą skoku i cienia, żeby było to bardziej realistyczne. Pierwsza wersja programu miała przynajmniej 40 warunków, które określały wielkość cienia w zależności od wysokości na jakiej znajduje się postać. Po lekcjach matematyki dyskretnej z rewelacyjnym prowadzcym podszedłem do problemu inaczej i wielkość cienia obsługiwałem wypracowanym, bardzo prostym wzorem. Z matematyką jest dokładnie tak samo jak ze studiami. Najczęściej nie są potrzebne programiście w codziennej pracy ale są przypadki, w których okazuje się bardzo pomocna.

Algorytmy i Struktury Danych

Dla nas, studentów to był chyba najgorszy przedmiot z możliwych. Co tydzień musieliśmy oddawać różne zadania, które często wydawały się bez sensu. Doceniłem to dopiero po czasie jak musiałem zoptymalizować wyszukiwanie obiektów i przypomniałem sobie o wyszukiwaniu binarnym. To właśnie na tym przedmiocie poznaliśmy bardzo dużo sztuczek optymalizacyjnych i dowiedzieliśmy się jak szacować złożoności obliczeniowe programu. Jest jeszcze jedna, duża zaleta tego przedmiotu. Większość prostych zadań rekrutacyjnych mieliśmy rozpracowane, bo podobne musieliśmy oddawać na zajęciach. Takie tematy jak drzewa AST, wspomniane wcześniej wyszukiwanie binarne, różne algorytmy sortowania, problem plecakowy czy obsługa grafów to umiejętności, które były obowiązkowe do zaliczenia przedmiotu. Polecam zapoznać się z takimi zadaniami każdemu programiście niezależnie od tego czy studia będą częścią jego kariery.

Praktyki

Na naszej uczelni, żeby ukończyć studia trzeba było podjąć praktyki studenckie. To jest idealna okazja do podjęcia pierwszych kroków w branży. Znacznie łatwiej jest dostać się do firmy przez praktyki niż normalnymi kanałami rekrutacyjnymi. Warto to wykorzystać i praktyki potraktować jako wstęp do pierwszej pracy. Doświadczonemu programiście nie jest to potrzebne ale każdy musi od czegoś zaczynać ;).

Koła zainteresowań i wydarzenia

Na każdej uczelni jest wiele kół zainteresowań i organizacji do których warto dołączyć. Najczęściej są bardziej konkretne niż przedmioty a z faktu, że nie są obowiązkowe to uczęszczają na nie osoby, którym faktycznie zależy na zdobywaniu konkretnej wiedzy. Istotny jest również fakt, że można wdrożyć się w procesy realizacji i prowadzenia tych kół czy wydarzeń. A to daje doświadczenie, którego nie można zdobyć inaczej oraz masę znajomości. Te z kolei mogą się przydać w przyszłości. Nawet jeśli nie są to umiejętności techniczne oraz te związane z programowaniem to w przyszłości mogą przydać się programiście.

Przyjaźnie i znajomości

Wspomniałem o znajomościach, bo to bardzo ważny punkt. Studia pozwalają spotkać się osobom o podobnych zainteresowaniach. Mogą z tego zrodzić się wspaniałe przyjaźnie. Ja poznałem i trzymałem się z wieloma osobami, ale tylko z kilkoma z nich jesteśmy dobrymi przyjaciółmi. Wspieramy się wzajemnie i pomagamy sobie nie tylko w kwestiach programistycznych. Z jednym z nich nawet aktualnie pracuję i chyba mogę powiedzieć, że stanowimy świetny duet ;)

Niepotrzebne przedmioty

Oczywiście studia to nie jest tylko uczenie się samego programowania. Mieliśmy również przedmioty, których zaliczenie w naszym mniemaniu polegało na rzucie monety. Mieliśmy zadania, które nie rozwijały nas w żadnym możliwym aspekcie. I przyznam, to było marnowanie czasu. Ale nie mniejsze niż picia piwa zamiast uczęszczania na wykłady. Nie mogę jednak o tym nie wspomnieć, bo to największa wada studiów, która może odstraszać potencjalnych studentów.

Przestarzała technologia

Są pewnie uczelnie w których uczą technologii, które zostały wyparte naście lat temu. Spotkałem się ostatnio z komentarzem, że ktoś ma prowadzącego, twierdzącego, że jQuery to pieśń przyszłości. Z drugiej strony są też osoby, które mają zajęcia z osobami aktywnymi zawodowo i często dla nich studenci są wręcz dinozaurami, jeśli chodzi o technologie. Nie ma żadnego standardu i musimy się liczyć, że możemy spotkać różne starocia. Na ich podstawie możemy uczyć się mechanizmów a nie języka. A jeśli to faktycznie jakieś bezużyteczne informacje to możemy to pominąć i skupić się na innych przedmiotach. Oczywiście czasem są to aż takie starocie, że dobry archeolog miałby zajęcie ale popatrzcie na to z innej perspektywy. Jeśli technologia to tylko narzędzie i nie potraficie napisać dobrego projektu w starej technologii, to jak to świadczy o Was jako o deweloperach? Nie zrozumcie mnie źle. Wiem, że nowsze wersje oprogramowania są po to, żeby poprawić jakość naszego kodu ale w tamtych czasach programiści potrafili tworzyć w miarę bezpieczne oprogramowanie. Co zatem powstrzymuje nas?

A jak do tego ma się technikum?

No właśnie tu sytuacja wygląda nieco inaczej. Otóż o ile na temat słuszności studiów część osób się ze mną zgadza o tyle z kwestią technikum czy liceum profilowanego już jest gorzej. Ja osobiście jestem bardzo zadowolony ze swojego technikum. Wiedza zdobyta w szkole średniej wystarczyła mi praktycznie na trzy pierwsze semestry. A nawet na późniejszych przydawały mi się notatki, które znalazłem gdzieś zakurzone w szafkach. Zaczynałem od Pascla, a uwierzcie, że to dopiero staroć. Większość z Was zapewne tego nie kojarzy i nic dziwnego, bo nie wiem czy jest ktoś, kto pisze w tym zawodowo. Ale jak wspomniałem wcześniej to było do nauki programowania a nie języka. Właśnie w wakacje pomiędzy pierwszą a drugą klasą zakochałem się w programowaniu i tworzyłem proste gry bez opamiętania. To wtedy zrodziła się moja pasja, którą teraz szczęśliwie rozwijam. Nie wiedziałem wtedy o systemie kontroli wersji i niestety większość z nich przepadła. Tak czy inaczej uważam, że cztery lata spędzone w technikum to był najlepszy czas jeśli chodzi o rozpoczęcie nauki programowania.

Czy zatem studia są potrzebne programiście?

Z przedstawionych przeze mnie argumentów może wynikać, że studia są koniecznie. Nie jest to do końca prawda. Jeśli ktoś nie może sobie pozwolić tak długi czas bez pracy, bo na przykład chce się przebranżowić i potrzebuje stałego dochodu, to może uczyć się z innych źródeł. Ogólnie studia dają bardzo dużo podstaw, które są potrzebne programiście ale same w sobie już tak potrzebne nie są. Można uczyć się z różnych źródel ale uważam, że studia to bardzo ciekawy okres w życiu dlatego polecam go każdemu niezależnie od tego w jakim stopniu z nich skorzystamy. Oczywiście im więcej z nich wyciągniemy tym lepiej ale pamiętajmy, że nie jesteśmy maszynami.

Podsumowanie

Musimy jasno przyznać, że studia nie są programiście niezbędne ale dają zupełnie inne perspektywy. Można być wybitnym deweloperem bez studiów. Można też zmarnować studia i stracić czas nie pracując nawet w zawodzie. Prawdopdobnie znacie kogoś, kto zmarnował studia a mimo to jest chyba najbardziej rozpoznawanym programistą na polskim YT. Wszystko zależy od nas. Widzę jednak, że kursy programowania cieszą się dużą popularnością, a często nie są tanie. Oczywiście dobrze przygotowany kurs pozwoli nam nauczyć się znacznie więcej i szybciej niż studia, ale jeśli mamy możliwość zdobyć solidne podstawy wiedzy na studiach czy w szkole średniej to czemu z tego nie korzystać? Pamiętajmy o tym, że to tylko nasz wysiłek i ciężka praca zrobią z nas dobrych programistów. Nie oszukujmy się, będąc jeszcze uczniem mamy przed sobą bardzo dużo czasu żeby rozpocząć karierę.

Ja przyznaję się do błędu, bo długo twierdziłem, że studia nie są potrzebne programiście. Po czasie wiem jednak, że gdybym miał wybierać ponownie to poszedł bym dokładnie tą samą ścieżką.

A Wy skończyliście studia? Może jesteście po humanistycznym kierunku? Jakie jest Wasze zdanie na temat studiów i programowania? Napiszcie prosze swoje opinie w komentarzu, bo jestem tego bardzo ciekaw i może z tego wyniknąć interesująca dyskusja.

Sep 05, 2019

Najnowsze wpisy

Zobacz wszystkie