Co powinienem umieć, aby zostać juniorem programistą?

Cześć. Wczoraj miałem ciekawą sytuację, która natchnęła mnie do napisania tego wpisu. Nie chcę się jednak rozwodzić na temat owej sytuacji, jednak chcę skupić się na tym, co zrobić i jak zostać programistą. Jeśli jesteś ciekawy/ciekawa mojego zdania na ten temat, to zachęcam do czytania.

Jak zostać programistą?

Pytanie może wydawać się banalne.

Pierwsza opcja to skończyć odpowiednią wyższą szkołę i znaleźć pracę. Otóż w praktyce to nie takie prostę, bo praktyka pokazuje, że absolwenci wielu uczelni nie mają pojęcia o tworzeniu prawdziwych projektów, które przyjdzie im zajmować się w pracy. Często ta wiedza ogranicza się do podstaw danego języka programowania i mniej lub bardziej zaawansowanych algorytmów. Być może nawet podstaw jakichś wzorców projektowych. Problemem jednak jest to, że program studiów nie jest zbyt często aktualizowany a to prowadzi do nauki staroci. Co więcej jest to dość długa ścieżka, a bardzo dużo zależy od samego studenta, zresztą, jak zawsze.

Inną drogą jest wybór szkoły programowania. Tutaj trzeba mocno zainwestować, bo nie jest to tani interes. Kurs taki jest intensywny i trzeba włożyć w to dużo pracy, aby nadążyć i wszystko zrozumieć. Wiele szkół gwarantuje po skończeniu kursu pierwszą pracę. Dużym plusem jest to, że nauczycielami nie są teoretycy, a w dużej mierze zawodowi programiści. W programie kursu jest najczęściej tworzenie konkretnego projektu, dzięki czemu, mamy tak naprawdę co włożyć w to swoje portfolio. Szkoła programowania jednak ma nauczyć niezbędnych podstaw. Dlatego też udział w szkoleniu nie zwalnia nas z samokształcenia i poznawania tego świata bardziej dogłębnie.

Ostania opcja to zostać samoukiem. Wymaga wytrwałości, umiejętności szukania rozwiązań, znowu wytrwałości i bardzo dużo chęci. Sam przeszedłem w 80% tę drogę (pozostałe 20% to technikum, z którego za wiele nie wyniosłem, jeśli chodzi o ten temat). Ucząc się samodzielnie mamy o tyle problem, że bardzo łatwo nabawić się złych nawyków. Nauka jest też trudniejsza, szczególnie dla osób, które potrzebują bata nad głową. Tutaj też nie mamy konkretnego programu nauczania, sami decydujemy czego się uczyć, w jakiej kolejności i w jakim tempie. Jednak współczesny dostęp do wiedzy w Internecie jest na tyle duży, że nie powinno to stanowić problemu. Pytań pod tytułem jak zostać programistą w Internetach jest ogrom.

Webdeveloper, programista PHP

Jako, że moją specjalizacją jest PHP i programowanie pod web, napiszę czego potrzeba, aby móc ubiegać się śmiało o stanowisko juniora.

Należy pamiętać, że junior jest po to, aby pytał, dlatego nikt nie będzie wymagał wiedzy niewiadomo jakiej. Co nie znaczy, że można kompletnie nic nie umieć.

Podstawową umiejętnością jest oczywiście znajomość języka PHP, co więcej, obiektowego. Nie ukrywajmy, ale pisanie strukturalnie jest niemodne, niepraktyczne i wprowadza chaos w kodzie. Dlatego znajomość OOP jest tutaj niezbędne. Ponadto warto znać ogólne zasady co do programowania obiektowego, a to jest praktycznie takie samo w większości języków. Dlatego też powinny być ci znajome takie pojęcia jak enkapsulacja, dziedziczenie, interfejs, klasa, obiekt, polimorfizm. Co do samego języka, warto stosować już składnie php 7.1 gdzie wprowadzono type hinting dla typów skalarnych. Warto też korzystać ze strict_types, aby to na sobie wymusić. Prócz PHP warto zaznajomić się z MySQL.

Kolejną sprawą jest znajomość composera. Pisałem o nim w tym poście, przedstawiając jego podstawy. Jest to tak powszechnie używane narzędzie, że ciężko na poważnie pracować bez jego znajomości. Poza tym na początek wystarczy raptem 3-4 komendy i ogólna wiedza o co chodzi.

Inną rzeczą jest git. Moim zdaniem jest to must have i niesposób go pominąć w swojej nauce. System kontroli wersji nie raz może uratować ci życie, ale nawet nie o to chodzi. Git to podstawa pracy zespołowej, a przecież programowanie to właśnie praca w zespole!

Następnie warto przyjrzeć się PSR, czyli PHP Standards Recomendation. Znajomość tych zasad pomoże pisać czysty i jasny kod, ustandaryzowany i spójny. Taki sam dla każdego. O PSR można poczytać tutaj.

A na koniec…

No i na koniec jakichś framework, głównie po to, aby poznać MVC. Wybór mamy przeogromny jeśli chodzi o PHP, ale niewarto się nad tym zastanawiać bardzo długo, bo wstrzymujemy sobie rozwój – wszystko jedno co wybierzesz. Może to być Symfony, Laravel, Zend, CodeIgniter itp. Ten ostatni będzie pewnie najłatwiejszy na początek. Symfony jest dużym (obecnie już nie), dość skomplikowanym frameworkiem oferującym mnóstwo rozwiązań i jak dla mnie jest genialnym projektem. No i to mój framework. Osobiście nie lubię Laravela. Pracowałem w nim, po prostu to nie to. Ale wielu osobom się podoba.

Moim zdaniem jest to wiedza powiedzmy niezbędna na stanowisko juniora. Rzecz jasna wiedza to nie wszystko – warto ją udokumentować paroma projektami aplikacji – dla przykładu może to być prosty CMS, CRM czy jakaś inna aplikacja. To też pokaże nam ile sami potrafimy i wymusi szukania rozwiązań, bo na problemy na pewno natrafimy.

Czy to koniec?

Myślę, że aby skutecznie dostać się na staż na wymarzone stanowisko jest to wystarczająco. Jednak to nie koniec nauki. Przed tobą takie pojecia jak SOLID, KISS, wzorce projektowe i wiele, wiele innych. Wspaniała przygoda, którą polecam każdemu. Jednak okupiona ciężką pracą. Ale jaka satysfakcja, gdy dostajesz pierwszą pracę!

Dołożysz coś do listy? Podziel się opinią w komentarzu!