Z jakimi wyzwaniami mierzą się PHP Developerzy? Wywiad z Jakubem Pokornym
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.
Spis treści
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, że 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, że byłem na kierunku informatycznym i raczej byłem świadom, że 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ę, że 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ę, że 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, że 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śli 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, że 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, że 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, że 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ę, że 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, że 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, że 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.