W dzisiejszym cyfrowym świecie, gdzie strony internetowe i aplikacje internetowe odgrywają kluczową rolę, język PHP jest jednym z najbardziej rozpoznawalnych narzędzi dla programistów. W rozmowie z Jakubem Pokornym PHP Developerem w Massive Pixel Creation zapytaliśmy o początki kariery w PHP, wyzwania wiążące się z programowaniem w tym języku oraz indywidualnym podejściu do codziennych obowiązków.
Jak zainteresowałeś się programowaniem w PHP? Co zmotywowało cię do rozpoczęcia kariery w tej dziedzinie?
U mnie akurat historia jest raczej prostolinijna, w technikum przy e.14 uczyli nas webówki, w tym właśnie PHPa. Chciałem wcześnie zacząć pracę, a wiedząc, iż frontend to nie moja bajka, w ostatnim roku przyłożyłem się do nauki PHPa będącego wówczas najoczywistszą opcją.
Motywacją był fakt, iż byłem na kierunku informatycznym i raczej byłem świadom, iż studia to spora inwestycja czasu, która niekoniecznie musi się przełożyć na dobrą pracę. Dlatego postanowiłem spróbować szybciej wejść w branżę tak, żeby po 3 latach, które poświęciłbym na studia, miał już 3 lata doświadczenia. Myślę, iż to był mój motor napędowy
Czy możesz opisać trudny projekt lub problem, który napotkałeś w swojej karierze programisty PHP? Jak sobie z nim poradziłeś?
Ciężko namierzyć jeden duży problem, który spędzałby mi sen z oczu na tyle długo, żeby pojawiał się w głowie kiedy tylko usłyszę słowo „problem” :). Wydaje mi się, iż moja kariera zawodowa składała się głównie z wielu małych i średnich problemów, ale gdybym miał przytoczyć jeden, który pochłonął najwięcej czasu, to przychodzi mi do głowy stworzenie modułu związanego z DNSem do starej linuksowej biblioteki z dokumentacją porozsiewaną po różnych stronach w stylu 2005.
Problem polegał na tym, iż ta aplikacja była oparta na plikach tekstowych z luźną strukturą, którą musiałem odpowiednio interpretować i modyfikować. Temat ciężki jak na juniora wówczas, ale rozwiązaniem było rozbijanie problemów na mniejsze, aż wszystko spięło się w całość.
Czy jesteś zaangażowany w jakieś społeczności programistów PHP lub projekty open-source? W jaki sposób udział w tych działaniach wpłynął na Twój rozwój zawodowy?
Aktualnie raczej programuję tylko komercyjnie, zdarzało się kontrybuować do projektów opensource, ale raczej wynikało to z pracy na nich w większych projektach i podrzucaniu błędów, które znalazło się w trakcie pracy. jeżeli chodzi o społeczności PHP, to w moim przypadku jestem tylko na paru grupach na Facebooku, ale szczerze mówiąc, polskie grupy nie należą do tych najbardziej ożywionych. Najciekawsze rozmowy raczej pojawiają się w DMach z innymi developerami, których już poznałem w trakcie pracy.
Czy kiedykolwiek zdarzyła Ci się sytuacja, w której musiałeś blisko współpracować z osobami nietechnicznymi (np. klientami, PM-ami)? W jaki sposób skutecznie przekazywałeś im kwestie typowo techniczne?
Tu szczerze przyznam, iż w tej kwestii wypadam raczej słabo :). W aktualnej pracy całkiem często miałem okazję rozmawiać z osobami nietechnicznymi, jednak moją wadą jest to, iż lubię mówić mocno technicznie i zagłębiać się w szczegóły. PM często musiał mnie w takich rozmowach stopować i zawracać na dobrą ścieżkę. Tak więc moja rada jest taka — znajdźcie sobie takiego PMa ;).
Jak podchodzisz do rozwiązywania problemów i debugowania w swojej pracy programistycznej PHP? Czy możesz podzielić się przykładem, w którym z powodzeniem rozwiązałeś złożony problem?
Taak, znam osoby, które lubią tę część bardziej od regularnego programowania przez wzgląd na satysfakcję, jaką może to dawać. Jestem w stanie to zrozumieć dlatego, iż w dużym stopniu na rynku PHP i w dużym segmencie webówki lwia część pracy opiera się na nauce danego schematu i wdrażaniu go w wielu projektach, co może być powtarzalne.
Ja raczej nie należę do tych osób, przez wzgląd na ilość włosów, którą można przy tym stracić i ciężką estymację czasu, jaki w debugowanie trzeba włożyć. Chciałbym przytoczyć jakiś dobry przykład, gdzie problem zamykał się w samym PHP, ale najczęściej spotykanymi przeze mnie problemami były te na granicy DevOps / PHP gdzie dużą rolę odgrywały konfiguracje czy to nginx, firewalla, czy to niekonwencjonalne podejście klientów do wykorzystania danych funkcjonalności ;).
Jeśli chodzi o złożony problem, to myślę, iż dobrym przykładem mogłaby być funkcjonalność narzędzia, które pisałem na wewnętrzne potrzeby firmy. Jedną z funkcjonalności była możliwość instalowania na serwerze i zarządzania modułami napisanymi przez firmę. Problem polegał na tym, iż u niektórych kolegów funkcjonalność listująca zainstalowane moduły nie działała, nie informując o błędzie, jaki wystąpił. Do problemu doszedłem, lokalizując moduły, które powodowały problem, instalując wszystkie po kolei.
Problemem okazało się to, iż niektóre moduły używają tych samych nazw funkcji w globalnym namespace, czego PHP nie lubi (co wymuszał system, do którego moduły pisaliśmy). Rozwiązałem ten problem tworząc osobny skrypt php, który zwracał w czytelnym formacie dane o module i uruchamiałem go w osobnej instancji PHP.
Czy kiedykolwiek byłeś mentorem lub szkoliłeś młodszych programistów? Na jakim poziomie było wtedy Twoje doświadczenie i jakie umiejętności lub wiedzę im przekazałeś?
Jeśli w pracy, to raczej pomoc sprowadzała się do pojedynczych sytuacji. Nigdy nie przydzielono mi roli mentora czy opiekuna nad juniorem. Natomiast tu nieustannie próbuję namówić znajomych na IT i aktualnie uczę dwoje z nich (i których serdecznie pozdrawiam również na PHP Developerów. Aktualnie jestem na midzie i planuję doprowadzić ich do opanowania podstaw jednego z frameworków MVC, co przy dobrych wiatrach uda się osiągnąć do końca wakacji.
Wszystko, o czym za mało mówi się w branży IT.
Prosto na Twoją skrzynkę.
Jak radzisz sobie z konstruktywną krytyką lub informacją zwrotną na temat swojej pracy? Czy musiałeś jakoś „dojrzeć” do tego, czy jednak od początku przyjmowałeś feedback jako coś normalnego?
Przyznam, iż akurat z feedbackiem było różnie. Prawda jest taka, iż mało osób lubi dawać negatywny feedback i raczej spotykałem się z kudosami. Na juniorze było dużo nauki, która bezpośrednio wiązała się z otrzymywaniem feedbacku, ale na juniorze nie odbierałem tego jako „negatywny” feedback a część nauki.
W kolejnej firmie był większy nacisk kładziony na dzielenie się feedbackiem i tam krytyka była już związana nie tylko z programowaniem i do takiej faktycznie musiałem się przyzwyczaić :). Warto jednak nadmienić, iż zwykle wiąże się to z dużą życzliwością, dlatego też nie jest to coś, czego trudno się nauczyć.
Jak utrzymujesz motywację i inspirację w swojej karierze programisty PHP?
Tu być może kontrowersyjna kwestia, ale w moim wypadku wynika z dobrego work-life balance. Staram się rzeczywiście wychodzić z pracy i zajmować swoimi hobby. Wydaje mi się, iż dzięki temu mogę utrzymać swoje zdrowie i motywację na dobrym poziomie, a następnego dnia do pracy wrócić wypoczęty :).
Co uważasz w tej chwili za największe wyzwanie lub trend w rozwoju PHP? Czy można przygotować się jakoś na takie zmiany?
Wydaje mi się, iż największym wyzwaniem aktualnie jest to, iż PHP wypadł z łask FAANGa ;). I oczywiście to, iż wszelkie nowe rozwiązania w całym IT do PHPa trafiają później, przez wzgląd na to, iż ich użycie opiera się na SDKach pisanych przez społeczność. Tak naprawdę w przypadku PHPa moim zdaniem największe zmiany związane są z rozwiązaniami wprowadzanymi do szerszej publiki przez największe frameworki, takie jak Laravel czy Symfony. Moją radą na przygotowanie się na to jest śledzenie rozwoju właśnie tych 2 frameworków.
Jakub Pokorny. Programista backendowy z 4-letnim doświadczeniem komercyjnym w PHP. Z wykształcenia technik informatyk. Pracujący głównie w frameworku Symfony i Laravel oraz frameworkach opartych na ich elementach. Z doświadczeniem w Vue, Deno oraz dockerze. w tej chwili PHP Developer w Massive Pixel Creation.
Zdjęcie główne pochodzi z unsplash.com