admin 0Comment

Minęło sporo czasu od ostatniego wpisu na blogu. Nieprzypadkowo, ponieważ przez ostatnie dziesięć tygodni skupiałem się na mojej nowej pracy jako web developer i świadomie postanowiłem odczekać trochę zanim zacznę ponownie publikować. Chciałem by kolejne teksty powstawały z perspektywy kogoś, kto w praktyce zrewidował swoje założenia na temat tego, jak przygotowywał się do zostania programistą a także – by te pierwsze miesiące zostały zrewidowane ze strony firmy, z którą współpracuję.

W tym momencie mogę już napisać, że zadowolenie z naszej współpracy jest widoczne po obu stronach a decyzja o przebranżowieniu się, mimo, że początki wcale nie były łatwe, była jedną z moich najlepszych decyzji w ogóle :).

Wracam więc do pisania, ponieważ sądzę, że teraz tym bardziej mogę pomóc osobom zainteresowanym wejściem na programistyczną ścieżkę rozwoju, ale nieposiadającym wykształcenia formalnego w tym kierunku. Najpierw chcę podzielić się z Wami moimi wnioskami po roku samodzielnej nauki programowania  – częściowo możecie już o tym przeczytać na moim blogu, jako, że dzieliłem się wrażeniami na bieżąco, jednak teraz moja wiedza została skonfrontowana z pierwszymi miesiącami pracy jako Python Web Developer.

W moim tekście Od zera do web developera? Możliwe! napisałem kilka zdań na temat wstępnych wniosków, jakie przyszły mi na myśl odnośnie samodzielnej nauki programowania. Ten temat jednak wymaga zdecydowanie więcej uwagi.

Początkowo planowałem przedstawić te wnioski w jednym wpisie, który jednak rósł i rósł, zdecydowałem ostatecznie, że podzielę je na kilka mniejszych, łatwiej strawnych tekstów. Dzisiaj więc zaczynam od początków – czyli tego, jak wybrać swoją ścieżkę nauki, a być może w przyszłości też zawodu.

 

Samo pojęcie „nauka programowania” jest z byt ogólne.

Zagadnienie to po części pokrywa się też z kolejnym, czyli wyborem języka programowania, którego będziesz się uczyć. W mediach i nie tylko, temat programistów (poruszany najczęściej w połączeniu z tematem ich zarobków) poruszany jest całościowo – ba, nawet szerzej, bo często odnosi się do informatyków (a przecież te pojęcia nie są równoznaczne!). Osoba z zewnątrz może tutaj odnieść błędne wrażenie, że jest to dość monolityczna zawodowo grupa osób. Nic bardziej błędnego – pojęcie „programista” w zasadzie mówi nam tylko tyle, że ktoś coś „programuje” – w domyśle, pisze kod. Ale czy w tych działaniach chodzi o pisanie kodu per se? Oczywiście, że nie, jest to tylko narzędzie, droga do jakiegoś celu. Nie programuje się dla samego programowania, programuje się bo np. tworzy się gry czy aplikacje webowe lub też „zwykłe” strony www, jest się pracownikiem naukowym i programuje się w kontekście własnych badań, etc. etc. Każde z tych zagadnień możemy uściślać dalej – tworząc „aplikację webową” możemy tworzyć (lub utrzymywać) długowiecznego molocha (a dokładniej – drobną jego część) obsługującego na przykład duży bank, napisanego z wykorzystaniem przestarzałych wersji danego języka programowania, a możemy też pisać małą aplikację dla niewielkiego przedsiębiorstwa, używając kompletnie innych narzędzi i języków, dostosowanych do tego co chcemy dostarczyć.

Samo określenie „chcę programować” jest więc  kompletnie niewystarczające jeśli chodzi o stworzenie nawet podwalin pod twój plan działania. Konkretniej – co chciałbyś robić, co cię kręci? Zawsze interesowałeś się grami i zastanawiałeś się jak wygląda proces ich tworzenia? A może interesują cię aplikacje mobilne, na androida lub iOS? Albo programowanie potrzebne ci jest w kontekście twojej pracy naukowej lub zaliczeniowej, chcesz stworzyć jakąś aplikację webową, która pomoże w prowadzeniu twojego biznesu – możliwości jest od groma i to ta decyzja (a nie łatwość nauki czy sytuacja na rynku pracy) powinna pośrednio wskazywać na języki, za które powinieneś się zabrać.

 

Nie zastanawiaj się w nieskończoność, jaki wybrać język programowania.

Pytanie, które zalewa wręcz wszelkie miejsca w sieci związane z programowaniem to „Jakiego języka programowania uczyć się na początek?”.  Co ciekawe, równie często pod danym pytaniem pojawiają się przydługie tyrady dotyczące tego, dlaczego ten czy tamten język będzie jedyną właściwą odpowiedzią.  Nie sądzę żeby miało to większy sens z co najmniej kilku powodów.

Po pierwsze – spójrz jeszcze raz na poprzednią część tego wpisu. To jest właśnie pierwsze pytanie, które powinieneś sobie zadać. Odpowiedź na nie już w dużej części nakieruje cię na to, za jaki język powinieneś się zabrać na początku.  W czym innym będziesz pisał gry (jeszcze w czym innym te mobilne), a inne narzędzia będziesz wykorzystywał tworząc aplikacje webowe – co więcej, zależnie od tego, czy bardziej interesuje cię front-end czy back-end, też będzie to wpływało na wykorzystywane języki programowania.

Po drugie – pamiętaj, że o ile języki potrafią różnić się od siebie dość mocno, ty tak naprawdę uczysz się PROGRAMOWANIA – czyli sposobu porozumiewania się z komputerem, a ten jest niezależny od zastosowanego języka. Nieprzypadkowo absolutne podstawy wiedzy programistycznej wyglądają bardzo podobnie, niezależnie od wykorzystywanego języka – nauka typów danych, pętli, warunków, zmiennych czy funkcji. Zasada jest zawsze taka sama – identyfikujesz problem, znajdujesz rozwiązanie i przekładasz je na język logiki i programowania jako takiego, a dopiero na końcu implementujesz je w postaci kodu wykorzystując konkretny język (lub języki) programowania.

Po trzecie w końcu – i tak jeden język to za mało, i tak pewnie kiedyś będziesz musiał go zmienić. Oczywiście, szczególnie na początku, jeden język będzie tym głównym, jednak praktycznie od razu, chcąc tworzyć cały produkt (obojętnie czy będzie to aplikacja, strona czy gra) musisz wykorzystywać też inne narzędzia. W swojej pracy praktycznie od początku, mimo stanowiska Junior Python Developera, miałem też styczność z HTMLem, CSSem, JSem, że nie wspomnę o dodatkowych narzędziach, takich jak frameworki czy biblioteki. Takie rzucenie na głęboką wodę z jednej strony potrafi być stresujące, z drugiej jednak daje olbrzymiego kopa jeśli chodzi o wspomaganie rozwoju i poszerzanie swojej wiedzy. Dodatkowo, uważam, że jest też najlepszym sposobem nauki – poprzez praktyczną pracę nad realnymi zadaniami. Nie mówię, że swoją wiedzę o wszystkich językach, czy szerzej, narzędziach masz rozwijać równolegle na tym samym poziomie (dla przykładu, po niecałych trzech miesiącach moja wiedza odnośnie JS/JSX jest nadal stosunkowo niewielka) jednak nie powinieneś obawiać się wkraczania na nowe terytorium i chociaż pobieżnego zapoznania się z możliwościami, jakie inne narzędzia, wykorzystywane w danym projekcie, prezentują. Ciężko też bez tego dostrzec cały szerszy obrazek problemu, nad którym aktualnie pracujesz.

Dodaj komentarz