Czy warto uczyć się PHP?

Zainspirowany jednym z komentarzy do mojego poprzedniego wpisu:

Jeżeli ktoś w 2016 roku chce się rozwijać, to nie będzie szedł do pracy do firmy która oferuje pracę w PHP i MySql. Serio…

postanowiłem pochylić się nad bardzo ciekawym zagadnieniem jakim jest nauka programowania w PHP: czy warto w ogóle się za to zabierać w 2016…? Oczywiście cały post mógłbym zakończyć już teraz krótkim i zdecydowanym „TAK”, ale bez odpowiednich argumentów niewiele by to znaczyło. Z drugiej strony jeśli jesteś osobą kompletnie spoza IT, możesz sobie pomyśleć: po co w ogóle zawracać sobie tym głowę? Odpowiedź jest prosta: PHP jest praktycznie wszędzie – czy Ci się to podoba czy nie. Pisząc artykuł na bloga, przeglądając Facebooka i inne portale informacyjne czy też społecznościowe, tam gdzieś pod spodem najprawdopodobniej jest PHP (jest wykorzystywany przez prawie 80% wszystkich stron w internecie!). Ok, ale co z tego? Prędzej czy później możesz dotrzeć do momentu, gdy dodając kolejny artykuł na swoim np: WordPressowym blogu będziesz chciał coś dodać, zmienić czy też usunąć, a interfejs WordPressa na to nie pozwoli. Oczywiście nie musisz tego wszystkiego wiedzieć – zawsze możesz skorzystać z pomocy dobrego (czyt. zaufanego) programisty o których jest niestety coraz trudniej. A to co przede wszystkim wyróżnia PHP i sprawia, że jest tak popularny to prostota jaką oferuje sam język nawet dla osób nietechnicznych – zachęcam to poznania chociażby podstaw.

 

PHP tu i teraz

Na początek zachęcam do posłuchania podcastu i przeczytania dwóch bardzo ciekawych artykułów na temat kondycji PHP – podcast jest z 2017, a artykuły mimo, że są dość stare to stanowią doskonałe wprowadzenie do tematu mojego artykułu (obowiązkowo z komentarzami):

Już wtedy świat PHP wyglądał naprawdę dobrze, a od tego czasu wiele się zmieniło:

  • Composer stał się standardem w zarządzaniu zależnościami w PHP – jedno z najbardziej kluczowych narzędzi dla PHP ostatnich lat;
  • PHP Standars Recommendations (PSR) – zbiór standardów dla języka PHP (stale rozszerzany);
  • nowe wersje dobrze znanych i lubianych frameworków: Symfony3, Zend3, Laravel 4 i 5;
  • w międzyczasie rozwinięte zostały narzędzie do testowania PHPUnit6, Behat3, PHPSpec2;
  • światło dziennie ujrzał Drupal 8 i Magento2;
  • wreszcie premiera długo oczekiwanego PHP 7;

PHP stał się językiem naprawdę dojrzałym, a jego pozycja jest bardziej stabilna niż kiedykolwiek.
Czasy gdy projekt PHP zaczynaliśmy od przygotowania pliku index.php i „zaincludowania” odpowiednich bibliotek już dawno minęły. Teraz wystarczy skorzystać z przygotowanych instalatorów jak np: w Symfony / Laravel bądź też po prostu zainstalować odpowiedni pakiet za pomocą Composera:

i szkielet projektu mamy gotowy. Dodatkowo możemy tworzyć własne, odpowiednio pre-konfigurowane pakiety gotowe do instalacji w kontekście kolejnych projektów.

PHP jako język

Być może jest to kwestia przyzwyczajenia ale w samym PHP pisze mi się bardzo szybko i wygodnie. Chodzi mi tutaj zarówno o wydajność tworzenia kodu, implementacji nowych funkcjonalności czy też testowania aplikacji (tutaj przede wszystkim PHPUnit i Behat, trochę mnie PhpSpeca). Nie od wczoraj wiadomo, że język ma tak samo dużo grono zwolenników jak i przeciwników, bardzo często jest wyśmiewany i „hejtowany” przez programistów tych bardziej dojrzałych języków programowania. W dużej mierze jest to spowodowane tak zwanymi „błędami młodości”, kiedy PHP był przede wszystkim wykorzystywany do budowania prostych, dynamicznych stron internetowych, księgi gości czy bloga. Język ewoluuje, a jego rozwój zmierza w bardzo dobrym kierunku, czego znakomitym przykładem jest PHP w wersji 7.

Nie mogę napisać, że PHP7 jest super wydajny i nadaje się znakomicie do wszystkiego, ale jest dużo bardziej wydajny od poprzednich wersji i ma znacznie więcej do zaoferowania developerom. Aby nie rozpisywać się tutaj nad nowościami najnowszej wersji PHP, zainteresowanych odsyłam do ciekawego artykułów:

Praca i rozwój

Prawda jest taka, że praca dla programistów PHP była, jest i wszystko wskazuje na to, że jeszcze przez długi czas będzie. Wynagrodzenie nie jest jeszcze takie jak np: w Javie i być może nigdy nie będzie ale jest na bardzo przyzwoitym poziomie. Tutaj zaryzykuje stwierdzenie, że niektóre firmy w Lublinie dla swoich Senior Developerów oferują stawki bardzo zbliżone do tych ze stolicy.

Jeśli szukasz pracy jako programista PHP albo zastanawiasz się nad nauką tego języka w kontekście pracy i rozwoju to jest to bardzo dobry moment. W ofertach można niemal przebierać, a oferowane wynagrodzenie jest na przyzwoitym poziomie.

Jako, że na co dzień mieszkam w Lublinie i mniej więcej w lubelskim stawkach dla programistów PHP jestem dość dobrze zorientowany to mogę napisać, że w ostatnich latach poziom wynagrodzeń zmienia się dynamicznie. I tak:

  • junior Developer może liczyć na starcie na wynagrodzenie na poziomie: 2000 – 4000 zł. Tak wiem, że są też w Lublinie firmy, które oferują tego typu wynagrodzenie Regular developerom;
  • programiści z doświadczeniem 2-4 letnim mogą liczyć na wynagrodzenie na poziomie od 3000 do 6000 zł netto;
  • dla senior developerów stawki zaczynają się od 4000 zł do 8000-11000 zł – górna granica jest bardzo mocno uzależniona od wielkości i profilu firmy.

Niestety nie mam najlepszych doświadczeń jeśli chodzi o rekrutację programistów PHP w Lublinie i trudno jest mi zdiagnozować przyczynę takiego stanu. Pisałem o ten temat jakiś czas temu. Ostatnio zastanawiałem się nawet nad możliwością zorganizowania szkolenia / szkoleń z PHP / Symfony2 w Lublinie.

Jak zacząć się uczyć PHP?

Na początek odsyłam to specjalnie przygotowanego repozytorium: http://pl.phptherightway.com/ – znajdziecie tam wszystko czego potrzebuje początkujący developer.

PHP: The Right Way jest przystępnym zbiorem najlepszych praktyk i standardów kodowania, a także linków do sprawdzonych i solidnych tutoriali pałętających się w czeluściach Internetu.

W następnej kolejności mogę polecić takie pozycje jak (osobiście preferuję wydania angielskojęzyczne ale poniżej zamieszczam Polskie tłumaczenia):

Jako uzupełnienie polecam video tutoriale w języku angielskim na Knp University (odpłatne) – są bardzo dobrze przygotowane, a dodatkowo zawierają ćwiczenia utrwalające przerabiany materiał.

Na dobry start powinno w zupełności wystarczyć. To na co powinniście na początku szczególnie zwrócić uwagę to:

  • dobre standardy / praktyki programowania (PSRy);
  • zrozumieć programowanie obiektowe, mieć świadomość po co tworzymy klasy i jak realizować interakcje pomiędzy obiektami;
  • czytać ze zrozumieniem komunikaty błędów – niby oczywiste, a to jeden z największych problemów początkujących programistów;
  • znać narzędzie ułatwiające prace;

Co istotne naukę PHP polecam rozpocząć od wersji 5.6 (wcześniejsze wersję nie są już oficjalnie wspierane) bo większość firm w tym momencie mimo wszystko swoje projekt opiera jeszcze na „piątce”. Oczywiście należy znać zasadnicze różnie pomiędzy 5, a 7 wersją (często tego typu pytanie pojawia się podczas rekrutacji) ale migracja do PHP7 to plan na najbliższy rok albo dwa.

Czy warto iść na studia?

Tutaj spotkacie się z bardzo różnymi opiniami. Z jednej strony jako bardzo dobry przykład mogę przedstawić dwa poniższe artykuły:

których przekaz jest dość prosty: „Nie idź na studia.” (zachęcam również do zapoznania się z komentarzami). Z mojej perspektywy sytuacja wygląda zupełnie inaczej. Zachęcam i namawiam do studiowania / nauki na wyższej uczelni – o ile to tylko możliwe w „trybie” dziennym. Mi osobiście studia otworzyły oczy na wiele różnych tematów i utwierdziły w przekonaniu, że programowanie to jest to co chciałbym robić przez najbliższe kilka lat (albo i dłużej). Uważam, że bardzo dobrze wprowadzają w poszczególne zagadnienia IT, mimo niektórych kompletnie zbędnych zajęć – z perspektywy obecnie wykonywanej pracy. Oczywiście inną sprawą jest poziom nauczania – wiele zależy tutaj od szczęścia – ale jeśli chodzi o uczelnie w Lublinie to te spokojnym sumieniem mogę polecić Informatykę na Politechnice Lubelskiej. Nie chciałbym odradzać wyboru tej czy innej uczelni ale jeśli miałbym ponownie rozpocząć Informatykę w Lublinie to pod uwagę wchodziłyby tylko dwie uczelnie: Politechnia Lubelska i UMCS.

Czy muszę znać frameworki i dlaczego Symfony?

Znajomość FW to obecnie jedno z bardziej podstawowych wymagań jeśli chodzi o oferty pracy w Polsce i za granicą. Oczywiście nie musi być to znajomość Symfony, bo na rynku mamy jeszcze np Laravela, Zend Framework 3, Phalcon i kilka innych ale ofert pracy w przypadku tych frameworków jest zdecydowanie mniej – przynajmniej jeśli chodzi o rynek pracy w Polsce. Dobrze jest znać co najmniej jeden nowy FW i jego filozofie / koncepcje działania. Chodzi o wiedzę na temat DI, ORM (Active Record / Data Mapper), usług, adnotacji, composera czy też obiektowego podejście do budowania formularzy czy zapytań do bazy danych – o popularnych (sprawdzonych i przetestowanych) bibliotekach / „bundlach” nie wspominając. Moim osobistym faworytem jest framework Symfony, w mniejszym stopniu ze względu na liczne antywzorce polecałbym Laravel, z Zend Framework od dłuższego czasu nie miałem okazji pracować i nie wiem tak naprawdę co i w jakim stopniu zmieniło się w tym FW w ostatnich miesiącach / latach. Symfony doceniam przede wszystkim za dojrzały, stale rozwijany kod, stabilność i śwetną społeczność. Cieszą liczne bundle, które pozwalają budować nowe projekty naprawdę szybko.

Przyszłość PHP

Tutaj też wszystko wskazuje, że może być tylko lepiej. Oczywiście nic za darmo bo próg wejścia w język PHP z każdą kolejną wersją jest coraz wyższy ale w dalszym ciągu jest on jednym z prostszych języków programowania dostępnym na rynku. Gdyby tego było mało, coraz częściej spotykam się ze stwierdzeniem, że język PHP, społeczność i wszystko inne co jest z nim związane, swoją dojrzałością przewyższa (przereklamowane?) Ruby on Rails i język Ruby. Zachęcam do przeczytania artykułu:

wraz z komentarzami. Mnie osobiście framework Ruby on Rails jakoś nigdy nie urzekł.

Kilka dobrych lat temu rewolucją w świecie PHP było wypuszczenie wersji PHP 5.0 i wprowadzenie obiektowego modelu programowania do PHP. Obecnie takim punktem zwrotnym jest PHP w wersji 7, która oprócz tego że znacząco przyspiesza samo PHP, to do tego porządkuje Core PHP, wprowadza nowe operatory i typy skalarne. Zachęcam do zapoznania sie z dokumentacją najnowszych wersji PHP.

Zobacz również: Od czego zacząć naukę PHP?