P-Programowanie

Studia nie uczą programowania

28 września 2017, kategoria: Studia i praca

Istnieje wiele sposobów na osiągnięcie sukcesu w IT. Jednym z najpopularniejszych sposób wejścia do branży jest ukończenie studiów informatycznych. Jest to bardzo dobry start na rynku, jednak wielkie zastrzeżenia można mieć do samej metodyki. Czego można spodziewać się po ukończeniu studiów? W artykule skupię się przede wszystkim na nauce programowania.

Studia nie nauczą Cię programowania

Programowanie, tak jak cała branża IT, rozwija się tak szybko, że nikt nie jest w stanie umieć wszystkiego. Co kilka miesięcy lub lat powstają nowe wersje języków programowania oraz nowe platformy. Niektóre są podobne do poprzednich, inne całkowicie przebudowane. Zmienia się także sposób podejścia do planowania poszczególnych rozwiązań i architektur systemów informatycznych.

Aby nie trzymać Cię w niepewności, napiszę na samym początku: studia informatyczne nijak nie nauczą Cię programować. Piszę to z pełną świadomością jako zawodowy programista i absolwent studiów informatycznych. Nie ważne jak renomowaną uczelnię wybierzesz, czy będzie to uczelnia publiczna czy prywatna, czy studia dzienne czy zaoczne. Jakie są tego przyczyny?

Hermetyczne środowisko profesorów

Problem z uczelniami wyższymi leży w hermetycznym środowisku akademickim. Wykładowcy akademiccy nie zdobywają doświadczenia zawodowego przy komercyjnych projektach, nie spędzają nad programowaniem 8h dziennie. Oprócz tego ogranicza ich rama programowa i struktura narzucona przez ministerstwo edukacji. Wszelkie technologie nauczane na studiach są totalnie przeterminowane i bezużyteczne.

Dosłownie nikomu nie doradziłbym w dzisiejszych czasach zaczęcia nauki programowania od języka C++. O ile był on dawniej sławny, o tyle teraz jest bezużyteczny. Ciągle chętnie używają go programiści niskopoziomowi, embedded i elektronicy. Nie naddaje się on natomiast do nauki i projektów komercyjnych. Istnieje wiele nowszych języków wysokiego poziomu, które pozwolą nauczyć się programować szybciej i efektywniej.

C++ jest natomiast stałym bywalcem każdej uczelni wyższej. Czarna konsola napawa niechęcią, wielu mechanizmów w C++ brakuje a z kolei z wielu się już nie korzysta (bo są lepsze rozwiązania).

Brak możliwości zatrudniania programistów

Przez deficyt na rynku pracy programistów ciągle brakuje. Stąd biorą się dzisiaj ich wysokie zarobki. Żadna uczelnia wyższa nie jest w stanie zatrudnić doświadczonego programisty do prowadzenia wykładów lub ćwiczeń. Co ciekawe jest to spowodowane względami finansowymi, ale także jak wspomniałem wcześniej hermetycznym środowiskiem akademickim. Każdy dba o swoją posadę i nikomu nie byłoby na rękę, gdyby jeden z przedmiotów wziął ktoś „z poza” uczelni.

Jaki jest tego efekt? Na wykładach z C++ wykładowca nie umie wytłumaczyć do czego służą wskaźniki. Nie umie znaleźć sytuacji praktycznej, w jakiej dałoby się je wykorzystać. Później nie dość, że studenci uczą się archaicznego języka, to słuchając o wskaźnikach czują się jak w kosmosie. Oczywiście, podkreślam, nie chodzi o nieumiejętność wytłumaczenia wskaźników. Wykładowcy akademiccy przeważnie bardzo dobrze umieją teorię, ale w przekazywaniu wiedzy liczy się też otoczka.

Bardzo sucha teoria

Na studiach poznaje się bardzo wiele teoretycznej wiedzy, bez jakichkolwiek przykładów jej wykorzystania. Nauka wzorców projektowych, algorytmów, metodyk wytwarzania programowania przebiega płynnie ale student nawet nie wie, po co się tego uczy. Oczywiście ta wiedza kiedyś się przyda, jednak w momencie studiowania jest jej za dużo i jest zbyt niepoukładana.

Dobry student, po dobrej uczelni, wkraczając na rynek pracy programistów jest początkowo bezużyteczny. Potrzebuje dużo czasu i opieki doświadczonego programisty, aby móc coś sensownego tworzyć.

Praktyka? Projekty na studiach

Jeżeli zastanawiasz się, dlaczego na studiach informatycznych nie ma więcej praktyki od razu odpowiem – jest. Istnieją duże przedmioty nazywane „projektami semestralnymi”, które pochłaniają w syllabusach ogromne ilości godzin i są poświęcone właśnie praktycznemu wykonywaniu jakiś programów.

Problem z projektami jest natomiast taki jak w pierwszych akapitach tego artykułu:

  • prowadzą je wykładowcy z wiedzą z przed 5-10lat
  • prowadzą je wykładowcy bez doświadczenia zawodowego
  • studenci nie mogą z nikim kompetentnym skonsultować architektury i fundamentów projektu
  • prowadzący je wykładowca kompletnie nie ma czasu dla studentów, grupy są za duże a czasu za mało

Efektem tych zajęć są totalnie „słabo wykonane systemy”. Bez żadnych wzorców projektowych, mechanizmów, rozwiązań architektonicznych. Pełne instrukcji warunkowych, które są później bohaterami zabawnych memów w branży IT. Wszystkie projekty są pisane w PHP. Oczywiście bez żadnej dodatkowej platformy, bez wspomnienia o wzorcu MVC. Po prostu zwykłe instrukcje PHP powplatane w kod HTML, często przechowujący informacje w plikach tekstowych.

Przykład z moich studiów, którego doświadczyłem. Profesor od programowania polecił napisać w C++ grę w kółko krzyżyk. Był to projekt semestralny, od prowadzącego nie dostaliśmy żadnej instrukcji ani nakierowania. Efekt? Nikt nie zastosował algorytmu minimax, każdy oddał projekt z 400-stroma instrukcjami warunkowymi obsługującymi każdą możliwą kombinację kółka i krzyżyka na planszy.

Takie projekty nie dość, że nic nie dają, to utrwalają bardzo złe nawyki.

Niechlubna para C++ i PHP

Para języków C++ i PHP to ta podstawowa, poznawana na studiach informatycznych. Jeżeli przeglądnąć fora internetowe to właśnie w tych językach jest powrzucanych setki „programów studenckich” będących plątaniną instrukcji warunkowych. Autorzy postów przeważnie proszą o dopisanie czegoś, bo brakuje do zaliczenia. W innym wypadku pytają czemu program nie działa, w kodzie brakuje wcięć, czasem średników czasem jakieś klamerki.

Wielu studentów kończąc uczelnie wyższą wie że:

  • programy dekstopowe to te pisane w C++
  • strony internetowe to te pisane w PHP i HTML

Na tym wiedza się kończy. Na studiach nikt nie porusza nic innego. O JavaScriptcie panuje przekonanie takie jak w książkach z 2003 roku, czyli nie powinno się tego używać. Strona z JavaScriptem to nie jest prawdziwa strona. JavaScript służy tylko do tworzenia kalendarzy i zegarków.

Tymczasem mało kto wie, że obecnie JavaScript jest najczęściej używanym językiem na świecie, i od 2008 roku przeżywa bardzo silny rozwój. Mało kto wie, że stronę można zrobić w czymś innym niż PHP, że aplikacji internetowych nie robi się już w modelu request-response tylko na reużywalnych asynchronicznych komponentach. Mało kto wie, że w wielu dziedzinach odchodzi się od aplikacji desktopowych i wprowadza się aplikacje internetowe i chmury.

Dlaczego o tym piszę w dość agresywnym tonie? Po prostu, ludzie kończąc studia nagle dowiadują się, że istnieje 20 języków programowania, a do każdego około 5-20 platform programistycznych. Z czego na studiach poznali te, które nie są już używane.

Czy warto studiować?

Artykuł niesie proste przesłanie: studia jeszcze z nikogo nie zrobiły programisty. Jeżeli chcesz być programistą warto skończyć studia informatyczne, ale pamiętaj, dzięki nim nie staniesz się programistą. Być może ukierunkujesz się na wiele aspektów, o których nie miałeś pojęcia. Ale nic poza tym.

Studia warto skończyć. Jak wspomniałem wcześniej, wiedza teoretyczna ze studiów przyda się w dalszej ścieżce zawodowej. Więcej na ten temat opisałem w artykule dlaczego warto studiować informatykę? Jeżeli masz możliwości (przede wszystkim te finansowe) bez wątpienia skończ studia. Jeżeli chcesz nauczyć się programować przeczytaj następny akapit.

Jak nauczyć się programowania

Do nauki programowania potrzeba tylko jednego: chęci i wielu godzin ćwiczeń. Doskonałymi źródłami wiedzy są książki oraz kursy internetowe. Wybierz jakiś język, który jest aktualnie na topie i po prostu zacznij. Rankingi języków (czyli popularność i opłacalność) na stan dzisiejszy dostępne są w internecie.

Mylisz się jeżeli sądzisz, że to co napisałem, to lanie wody albo pusty akapit. Programowanie zmienia się tak szybko, że jeżeli nie umiesz uczyć się sam, to nie jest to zawód dla Ciebie. W programowaniu nie ma przerwy, nie ma najmądrzejszych. Trzeba ciągle poszerzać swoją wiedzę i być na bieżąco. Jeżeli spoczniesz na laurach i złapiesz się jednej technologii na 2 lata, to będziesz do tył względem rynku.

Jestem też sceptyczny jeżeli chodzi o „szkoły programowania”. Mimo, że być może dają efekty, to jest to strata kasy. Wydasz dużo kasy, nauczysz się technologii X, a za jakiś czas i tak będziesz musiał sam nauczyć się nowej technologii Y. Do tego trybu ciągłego poszerzania wiedzy trzeba się przyzwyczaić – inne dziedziny nauki nie są tak dynamiczne.

Uwaga! Wybierając kurs, wybierz ten najnowszy! Tak jak studia, tak jak całe programowanie, tak samo kursy i książki szybko się dezaktualizują. Przykładowo: ucząc się JavaScriptowej platformy Angular na dzień dzisiejszy musisz znaleźć kurs Angular2. Kursy Angular1 z przed 2 lat są już totalnie zdezaktualizowane a technologia jest martwa. Jeżeli wydasz pieniądze na książkę Angular1 (inna nazwa AngularJS) wydasz pieniądze w błoto. Co śmieszne, Angular1 i Angular2 nie są do siebie ani troszeczkę podobne, wiedzy z jednego nie da się wykorzystać w drugim (za pół roku pojawia się natomiast Angular5 :)) Potwierdza to konieczność ciągłego procesu nauki od którego nie ma ucieczki.

Możesz raz nauczyć się fizyki lub matematyki, następnie uczyć tego przedmiotu w szkole średniej i sobie żyć. Nie da się natomiast raz nauczyć programowania i zasiąść w strefie komfortu.

Wnioski

Wniosków po tym artykule może być wiele. Nie chcę abyś pomyślał, że nie warto studiować! Chcę abyś wiedział, że studia nie nauczą Cię programowania. Jeżeli chcesz programować zacznij sam, już teraz. Naucz się uczyć się samemu. Zainwestuj w dowolne, aktualne źródło wiedzy i ćwicz.

Studia nie są niezbędne do nauczenia się programowania. Deficyt na rynku jest tak duży, że programistami zostaje coraz więcej osób, które ze studiami informatycznymi nie mają kompletnie nic wspólnego.

Użytkownik Adrian napisał:

29 września 2017


Ogólnie to się zgadzam, a że mam jeszcze doświadczenie jako asystent to coś dopiszę.
Jednym z większych minusów na studiach są przedmioty nie związane z kierunkiem, jest ich całkiem dużo, gdyż część jest wydziałowych a część narzucona z ogólnej puli: np wf albo przedmioty humanistyczne.
Na studiach inżynierskich to jeszcze jakoś wygląda, natomiast na magisterskich to się studiuje nie wiadomo co z małą domieszką informatyki.

Jeśli chodzi o zaplecze – nie ma się co oszukiwać, bo godzina zajęć to 35zl brutto i w tym jest też przygotowanie zajęć. Nikt z prowadzących nie będzie robił Code Review projektów, tym bardziej że teraz grupa projektowa nie liczy 15 a 30 studentów…

Laboratoria 15 albo 30h – dużo się nie zrobi, tym bardziej jak zajęcia trwają 2h, co i negocjacji jakby był blok 5-8h, ale to nie w Polsce.

Niemniej jednak na studiach można się dużo nauczyć poza studiami – samokształcenie + praktyka

Komentarz został wyróżniony

Użytkownik Adam napisał:

01 października 2017


Ja uważam, że studia informatyczne niosą ze sobą dużą wartość. Nie chodzi tu o wiedzę jaką z nich wyciągniesz, ale o inne umiejętności. Przede wszystkim na studiach uczysz się pracować w zespole i uczysz się studiować, a nie tylko przyswajać wiedzę. Studia poniekąd zmuszają do tego, żeby samemu poszukiwać własnej drogi. Ja np. dopiero poznając inne języki programowania, niż Java, w której programuję, zrozumiałem, że to jest to co chcę robić. Ale wiedza na temat innych języków przydaje mi się w pracy. W naszym teamie w Codete jesteśmy dzięki temu w stanie porozmawiać ze wszystkimi, a nawet pomóc ;)

Użytkownik Paulina napisał:

13 października 2017


Pracuję już od kilku lat w IT i widzę, że wielu specjalistów IT jednak posiada studia, chociaż znam też takich programistów, którzy studia zaczęli, ale już ich nie skończyli. Jeśli chcemy sobie odpowiedzieć na pytanie, czy studia są wymagane – to patrząc na ogłoszenie dla programistów, nie ma takich wymogów, ważne jest przede wszystkim doświadczenie i kompetencje. Podczas rekrutacja zawsze są testy, które sprawdzają poziom wiedzy programisty. Samo studiowanie to ciekawy rozdział w życiu, ale jeśli jesteśmy w stanie sami zmobilizować się do nauki, informatyka jest naszą pracą, to myślę, że warto uczyć się samemu + szukać fajnych staży dla początkujących programistów.

Użytkownik Wojciech Wróbel napisał:

18 października 2017


Stek bzdur :)
Prywatna uczelnia – Wyższa Szkołą Biznesu w Dąbrowie Górniczej zatrudnia w głównej mierze praktyków – osoby, które albo piastują wysokie stanowiska w firmach zw. z branżą informatyczną albo sami je prowadzą.

Poza tym… jestem początkującym i raczkującym programistą, ale C++ jak najbardziej się nadaje do rozpoczęcia przygody. Jest mocno wyeksploatowany, co za tym idzie jest sporo roznego rodzaju proadnikow itd. Jeżeli ogarniesz C++ możesz się pobawić elektroniką co zawsze zadowala oko, a jak przebijesz się już przez ten siermierżny bądź co bądź język, masz solidne podstawy. Ja z C++ przerzucam się na Jave i rozumiem cholernie dużo rzeczy.

Fakt faktem, studia nie naucza programowania, ale studia nie nauczą niczego, jeżeli nie poświęcisz trochę czasu gałęzi, która Cie interesuje.
Moja uczelnia przynajmniej pokazała mi frameworki i co w ogóle da się stworzyć. Jestem tylko na studiach zaocznych ale po 2 miesiącach studiow, w ktorych zjazdy mam co 2 tygodnie, umiałem więcej rzeczy, niż po 1,5 roku studiów na Politechnice śląskiej.

Użytkownik Karol napisał:

18 października 2017


@Wojciech
To co napisałeś o C++ to totalne bzdury, jednak oczywiście, wolno Ci mieć taką opinię. Idąc Twoim tokiem rozumowania polecam Ci także Assemblera, kupisz ATmege88, kabelki, rezystor, głośniczek i będziesz mógł nimi mrygać i piszczeć (również cieszy oko). Próba porównania „studiów” zaocznych na prywatnej uczelni do studiów dziennych na uczelni publicznej to chyba prowokacja – wolę tego nie komentować.

Zachęcam Cię do zostawienia komentarza!

Ilość znaków: 0