Pytanie czy iść na studia jest i czy je kończyć jest chyba jednym z najbardziej popularnych pytań ostatnim laty. I nie, nie zamierzam się nad nim tutaj rozwodzić. Każda strona pokaże kontr przykłady jak i przykłady potwierdzające ich podejście/zdanie. To tak jak z tym glutenem czy jajkami.  Choć nie, z glutenem to nie bo autor nawet przeprosił za głupoty który wypisał. Nie ważne. Jest jedna rzecz, którą studia dają i która może się wydawać kompletnie zbędną i dużo osób będzie stało po stronie tego, że to jest zbędne. Ale nie jest.  Nie jest w kontekście naszej pracy programistycznej przy założeniu, że chcemy się rozwijać i osiągać coraz to nowe poziomy. I to zabrzmi jakbym był jakimiś starym zgredem, ale tą rzeczą jest: TEORIA.

Osoby, które są samoukami, albo przechodzące przez kursy programowania muszą bardzo często tą teorię sami zdobywać i opanowywać. Przy kursach jest to zrozumiałe – coś za coś. Przy osobach samoukach tym bardziej. Zaś studentowi ta wiedza będzie wciskana na wiele sposobów i za każdym razem pewnie od razu wyjdzie ona drugim uchem.

Na pierwszy rzut oka rzeczywiście teoria jest zbędna. Po co komu wiedzieć co to jest model OSI, na jakiej zasadzie działa komunikacja sieciowa, jak obliczać złożoność algorytmiczną kodu, co to jest wątek a co to jest proces, czym różnią się rodzaje języków programowania. Jak działa SQL, co to jest pattern matching, o to jest obiekt, na czym polega tautologia zdania itp. Albo nawet jak działa procesor czy też pamięć RAM oraz do czego służą bramki logiczne.

Wydaje się to kompletnie zbędną wiedzą, do niczego nie potrzebną, bo w końcu będziemy pisać aplikacje biznesowe! To po co tam bramki logiczne, budowa procesora czy w ogóle złożoność algorytmiczna. Takie rzeczy to tylko w startupach i na filmach.

A właśnie, że nie. Weźmy złożoność algorytmiczną, co nam daje wiedza o niej? To czy napisaliśmy kod wydajnie. Wiedząc na czym ona poległa i jak ją liczymy będziemy wstanie dość szybko zobaczyć, że mamy problem w kodzie. A jeżeli musimy w aplikacji wykorzystać WCF to ile czasu nam zajmie czytanie i zrozumienie tego czym jest WCF? Potem pewnie jeszcze będzie co to jest REST i czym się on różni on WCF. Tutaj wiedza na temat tego jak działa sieć, jak wygląda model OSI pozwoli nam dyzo szybciej zrozumieć o co chodzi w WCF i REST. To samo się tyczy takich rzeczy jak wzorce – skoro wiemy i rozumiemy na czym polega dany wzorzec, będzie nam łatwiej znaleźć odpowiednie rozwiązanie naszego problemu, gdyż wykonamy jedynie pattern matching i w razie co wybierzemy odpowiednie rozwiązanie albo stworzymy nowe/z miksujemy istniejące. Nie wspominając, że mając wiedzę teoretyczną, nie ważne czy wykorzystamy Nancy czy ASP.NET MVC czy też Java Spring. Będziemy wiedzieć na czym to polega i jaki problem biblioteka rozwiązuje.

Zamiast uczyć się 100 nowych bibliotek lepiej jest nauczyć się dwóch, trzech konceptów programowania. Niezależnie co będziemy w życiu w programowaniu robić, teoria daje nam silne podstawy do tego by potem budować nasze rozległe doświadczenie. Jeżeli nie teraz to potem będziemy nadrabiać zaległości, ale to już będzie pod presją czasu, i nie koniecznie w momencie życia w którym nasz stan umysłu pozwala na chłonięcie nowej wiedzy.

Więc jak jesteś na studiach, skoncentruj się by wyciągnąć jak najwięcej informacji. Teorii. Podstaw. Bez dobrych podstaw, bez solidnych fundamentów, im wyżej zachodzimy tym łatwiej nam będzie spaść. A tego nikomu nie życzę. Całej tej wiedzy, teorii, dużo nie jest. Zresztą im więcej będziemy czytać tym częściej zorientujemy się, że wszystko rozbija się prawie o te same podstawy i zasady działania. Nagle wiedza o tym jak działa prosta bramka logiczna umożliwia nam zrozumienie jak działa procesor, jak działa płyta główna, jak działa IoT który właśnie chcemy oprogramować by wysyłał on sms’a naszemu szefowi, że kawa jest gotowa po tym jak odpyta on RESETem za pomocą przycisku SPRAWDŹ na stronie HTML którą uzyskał dzięki metodzie GET otwierając ją na telefonie komórkowym…

7 KOMENTARZE

  1. “Każda strona pokarze kontr przykłady” – powinno być “pokaże kontrprzykłady”, “teoria jest zbędą” – co? No i nagminny brak przecinków.
    Umyślnie napisałeś to tak niechlujnie? Wpis wartościowy, ale to nie zwalnia Cię z poprawnej pisowni :|
    Ale co tam, pewnie jestem hejterem…

    • mhh o 10:58 wciaz miales literowke? dziwne :( bo zostala poprawiona okolo 9:40.

      nie, nie jesteś hejterem. I podejście ze każdy negatywny komentarz to HEJT jest złe i się z nim nie godzę. Ale ja jestem dyslektykiem i tak jak pamietam, ze poprawialem “pokarze” tak jak widać musiałem to zrobić gdzie indziej. zas zbędą – to typowy przykład dysleksji. do tego słowo istnieje, wiec aurocorrect nie pomoże: http://sjp.pl/zb%C4%99d%C4%85 – więc takich rzeczy wykryć jest mi bardzo ciężko – czytaj nie wykryje za nic.

  2. Z bardzo podobnych pobudek przebrnąłem przez Systemy operacyjne Tanenbauma. W swoim artykule (http://bit.ly/2qvAiXe) napisałem co mnie inspiruje do rozszerzania swojej wiedzy – Ty piszesz o łapaniu solidnych podstaw by na nich budować struktury swojej dalszej, szerszej wiedzy, a mnie interesuje to z czystej ciekawości – oba podejścia prowadzą do tego samego, a jednak różnią się znacznie. Wydaje mi się, że bez tej własnie ciekawości ogólnie trudniej sobie poradzić w naszym zawodzie.

  3. Masz rację, jestem samoukiem i na szczęście część rzeczy wyczuwam lub staram się dociec ale braki w teori widać. A może jakiś post z tipami/książkami?

Comments are closed.