W rozmowie z Matthew Turlandem, aż z Lafayette w Los Angeles. Matthew jest profesjonalnym programistą, autorem i mówcą z ponad 20-letnim doświadczeniem w branży tworzenia oprogramowania. Matthew jest także zaangażowany w społeczności programistów open source i jest dobrze znaną postacią w społeczności PHP i GitHub.
Shahzeb: Witaj Matthew, dziękuję za poświęcenie czasu na ten wywiad. Zanim zaczniemy, może opowiesz naszym czytelnikom trochę o sobie?
Mateusz: Urodziłem się i obecnie mieszkam w Lafayette w Luizjanie. Do niedawna przez kilka lat mieszkałem w Nowym Orleanie, ale niedawno wróciłem do Lafayette po tym, jak straciłem dom w wyniku huraganu Ida. Uzyskałem tytuł licencjata z informatyki na Uniwersytecie Luizjany w Lafayette jakieś 15 lat temu.
Zacząłem pracować w 2000 roku, niedługo po ukończeniu szkoły średniej. Moją pierwszą pracą była praca w firmie inżynieryjnej i zajmowałem się głównie arkuszami kalkulacyjnymi Excel i bazami danych Access przy użyciu Visual Basic for Applications (VBA).
Następnie zacząłem pracę w konglomeracie medialnym opracowującym niestandardowy system zarządzania treścią publikacji informacyjnych. Był to sklep Microsoftu: Windows 2000 Server, SQL Server 2000, IIS i klasyczny ASP w VBScript. Miało to miejsce zanim na scenie pojawiła się platforma .NET.
To, co wydarzyło się później, właściwie pasuje do twojego następnego pytania…
Shahzeb: Zatem kiedy i jak rozpocząłeś swoją karierę w PHP? Jakieś ciekawe historie, którymi chciałbyś się podzielić ze swojej podróży? Z jakimi wyzwaniami musiałeś się zmierzyć na początku i jak sobie z nimi poradziłeś?
Mateusz: Moja trzecia praca była w sklepie PHP. Byłem wtedy studentem i miałem trochę za sobą C/C++, więc składnia PHP nie była mi całkiem obca i udało mi się ją stosunkowo szybko opanować. W tamtym czasie mój pracodawca miał kilka starszych aplikacji działających na jednym serwerze z PHP 3, a jego nowsze aplikacje znajdowały się na serwerze z PHP 4.0.3.
Wszystko, co słyszeliście o kodzie z tamtej epoki, jest prawdopodobnie prawdą. Miało to miejsce, zanim istniało wiele filarów współczesnego programowania PHP: automatyczne ładowanie, wskazówki dotyczące typów, przestrzenie nazw, Kompozytoritp. Kod był zaśmiecony instrukcjami require i w dużej mierze proceduralny, z bardzo małą ilością udostępniania kodu, która nie wymagała ręcznego kopiowania go z witryny takiej jak phpclasses.org i wklejenie go do własnego projektu.
Były to w dużej mierze ograniczenia języka i jego ówczesnego ekosystemu. Główny zespół był dość odizolowany w porównaniu z obecnymi czasami i działał w oparciu o system karmy. Proces RFC jeszcze nie istniał, a postęp w rozwoju rdzenia języka był zazwyczaj bardzo powolny.
Myślę, że najlepszą rzeczą, jaką większość ludzi, łącznie ze mną, mogła wówczas zrobić, było aktywne zaangażowanie się w społeczność, komunikowanie się z innymi jej członkami, nawiązywanie relacji i zwracanie uwagi na problemy tamtej epoki, tak aby wszystko w końcu się zmieni. Jeśli nic więcej, myślę, że te doświadczenia dały nam status quo, na podstawie którego możemy ocenić dzisiejszy stan rzeczy, i myślę, że od tego czasu zarówno język, jak i ekosystem przeszły długą drogę.
Shahzeb: Mathew, ty także napisałeś tę książkę Scraping sieciowy za pomocą PHP. Czy mógłbyś opowiedzieć nam trochę o tej książce? Kto powinien przeczytać tę książkę i w jaki sposób pomaga programistom ulepszać i zwiększać wydajność?
Mateusz: Z perspektywy czasu można przyznać, że tytuł książki może być nieco mylący.
Doświadczenia, które zainspirowały mnie do napisania tej książki, sięgają mojej pierwszej pracy z PHP. Pracowałem tam nad projektem, który obejmował automatyzację procesu pobierania danych z niestandardowego interfejsu użytkownika do dwóch różnych zewnętrznych systemów danych, które w pewnym stopniu pokrywały się pod względem zbieranych danych. Żaden z tych systemów nie miał interfejsu API – o ile pamiętam, nie były one wtedy tak powszechne jak obecnie – więc aby osiągnąć cele projektu, musieliśmy uciekać się do metod alternatywnych, a mianowicie web scrapingu.
To powiedziawszy, każdy, kto chce dowiedzieć się więcej o HTTP, o tym, jak przeglądarki internetowe i serwery działają i współdziałają ze sobą, jak sobie radzić z wyodrębnianiem danych ze znaczników lub jak radzić sobie z automatyzacją zadań związanych z aplikacjami internetowymi (np. testowaniem systemu), powinien przeczytać ta książka.
Kiedy zaczynałem pracować z PHP, nie zdawałem sobie z tego sprawy, ale przez cały czas korzystałem z protokołu HTTP, nie zdając sobie z tego sprawy. Zrobiłem, co w mojej mocy, aby napisać książkę, której żałuję, że nie miałem, kiedy zaczynałem programować w PHP, i taką, która pokazała kilka naprawdę fajnych rzeczy, które można zrobić z tym językiem.
Shahzeb: Jakiego rodzaju badania prowadzisz i ile czasu poświęcasz na te badania, zanim zaczniesz pisać książkę?
Mateusz: Badania, które przeprowadziłem, zanim zacząłem pisać, były dość pobieżne: analiza rynku, prezentacja książki w formie windy (lub „tylnej okładki”), spis treści przedstawiający główne tematy, które będę omawiał i tak dalej.
Większość badań związanych z faktyczną treścią książki przeprowadzono w trakcie jej pisania. Większość prac polegała na przyjrzeniu się różnym ówczesnym bibliotekom klientów HTTP i rozszerzeniom XML, ustaleniu, jak one działały, i opracowaniu przykładów pokazujących, jak z nich korzystać. W trakcie wykonywania tej czynności było nawet kilka przypadków, w których zgłosiłem błędy, ponieważ znalazłem nieprawidłowe zachowanie.
Chodziłem tam i z powrotem pomiędzy badaniami, pisaniem i redagowaniem przez sześć lub siedem miesięcy z rzędu. Napisanie pierwszego wydania książki było bardzo czasochłonne; w zasadzie w tym okresie poświęcano temu każdy wolny wieczór i weekend.
Shahzeb: Czy chciałbyś podzielić się kilkoma wskazówkami i trikami dla tych, którzy dopiero zaczynają używać PHP?
Mateusz: Daj językowi sprawiedliwy wstrząs. Wszystko, co słyszałeś o PHP 5-10 lat temu, jest już prawdopodobnie bardzo nieaktualne.
Spójrz na zasoby takie jak PHP we właściwy sposób, php[architect] Czasopismo, Blog Brenta Roose’alub książka Josha Lockharta Nowoczesne PHP aby dowiedzieć się więcej o współczesnym ekosystemie i najlepszych praktykach.
Dowiedz się o standardach opracowanych przez grupę PHP Framework Interoperability Group (FIG). Dzięki temu zdobędziesz wiele przydatnej wiedzy, która ma zastosowanie w szeregu nowoczesnych frameworków PHP.
Wyjdź i poznaj wszystkich wspaniałych ludzi w społeczności, co jest moim zdaniem jej najcenniejszą ofertą. Przejdź do grup użytkowników lub konferencji PHP. Szukaj podspołeczności na Slacku, Discord, Stack Overflow lub IRC, do których możesz dołączyć. Znajdź projekty, które Cię pasjonują i wnieś do nich swój wkład. To najlepsze sposoby na naukę.
Shahzeb: Wygląda na to, że lubisz przemawiać na konferencjach PHP na całym świecie. Czy masz jakieś informacje na temat tematu, o którym będziesz mówić w tym roku? I gdzie?
Mateusz: Mam kilka pomysłów na nowe rozmowy, które będę przedstawiał; Prawdopodobnie w czasie wakacji poświęcę trochę czasu na napisanie dla nich formalnych abstraktów.
Jedna dotyczy języka SQL i jego powiązań z teorią mnogości. Ten ostatni temat jest moim zdaniem przydatny, ale nie widzę go zbyt często omawianego na konferencjach; Dowiedziałem się o tym na uniwersytecie.
Inny zajmuje się skrobanie sieci. Moja reputacja osoby znającej się na tym temacie zaczęła się od artykułu w php[architect] Magazine i stamtąd rozwinął się w książkę. Co dziwne, nigdy wcześniej nie wygłaszałem na ten temat przemówienia konferencyjnego, więc uważam, że czas to zmienić.
Ostatnim pomysłem, jaki w tej chwili mam, jest coś w rodzaju następcy mojego ostatnio popularnego wykładu „Jak zostać świetnym programistą”. Koncentruje się na mentoringu i szczegółowo omawia, w jaki sposób wprowadzać nowych programistów do branży i pomagać im w rozwoju zawodowym.
Popraw szybkość swojej aplikacji PHP o 300%
DreamHost oferuje serwery dedykowane z pamięcią masową SSD, niestandardową wydajnością, zoptymalizowanym stosem i nie tylko, zapewniając o 300% krótszy czas ładowania.
Trudno jeszcze powiedzieć, gdzie będę wygłaszał te przemówienia. Niedawno uczestniczyłem w Longhorn PHP – a swoją drogą, to świetna konferencja – w Austin w Teksasie. To była pierwsza konferencja, w której uczestniczyłem osobiście od rozpoczęcia izolacji związanej z pandemią Covid-19. Spodziewam się, że pozostanę przy pobliskich konferencjach krajowych, na które będę mógł przez jakiś czas dojechać samochodem lub krótkim lotem, przynajmniej do czasu poprawy warunków związanych z pandemią.
Shahzeb: Co lubisz robić, gdy nie masz dostępu do laptopa?
Mateusz: Lubię bawić się z moimi dwoma psami, Sierra (trójkolorowa Pembroke Welsh Corgi) i Kaylee (mieszanka teriera i jamnika). Zostały nazwane na cześć postaci z seriali science fiction Dollhouse i Firefly. Jestem trochę maniakiem, jeśli już tego nie widać. Lubię czytać i oglądać science fiction, chociaż nie znajduję na to czasu tak często, jak bym chciał.
Lubię też spędzać czas z żoną. W czasie pandemii zaczęliśmy oglądać filmy na YouTube, głównie kanały traktujące o gotowaniu i robieniu koktajli oraz wykorzystujące to, czego nauczyliśmy się w kuchni.
Shahzeb: Jaki typ hostingu wolisz dla swoich klientów lub członków społeczności? Czy Twoim zdaniem konwencjonalny hosting współdzielony jest opłacalną opcją dla projektów, które realizujesz?
Mateusz: Szczerze mówiąc, nie mam zdecydowanych preferencji.
Myślę, że hosting współdzielony jest nadal realną i niedrogą opcją, szczególnie w przypadku mniejszych witryn lub projektów.
W ostatnich latach hosting w chmurze stał się bardziej powszechną opcją, ale myślę, że lepiej nadaje się do większych projektów komercyjnych o bardziej złożonych wymaganiach infrastrukturalnych i doświadczonym personelu.
Jeśli jakość łączności szerokopasmowej w kraju poprawi się, a technologie takie jak Raspberry Pi będą nadal się rozwijać w dotychczasowym stanie, widzę, że samodzielny hosting stanie się bardziej powszechną i realniejszą opcją niż obecnie.
Shahzeb: Jakie są Twoje przemyślenia na temat rozwiązań hostingowych takich jak DreamHost? Czy uważasz, że te rozwiązania dodają wartość aplikacjom opartym na PHP?
Mateusz: Naprawdę uważam, że rozwiązania takie jak DreamHost dodają wartość. Wierzę, że wielu niezależnych programistów i małych start-upów mogłoby zyskać więcej na ofercie hostingu w chmurze niż obecnie, ale borykają się z związaną z tym złożonością i wymaganą wiedzą specjalistyczną. Istnieje powód, dla którego DevOps jest obecnie rolą samą w sobie i dlatego trudno jest znaleźć ludzi, którzy są w tym dobrzy.
Shahzeb: Pogodzenie pracy z życiem osobistym może być trudne. Co lubisz robić w wolnym czasie? Jakieś hobby, którym chciałbyś się podzielić?
Mateusz: Nadal mam projekty poboczne związane z kodowaniem, nad którymi pracuję w wolnym czasie. Obecny dotyczy zarządzania finansami osobistymi. Mam nadzieję, że w końcu uda mi się udostępnić źródło do wnoszenia wkładu, ale obecnie znajduje się ono w fazie przedalfa.
Od wielu lat lubię stołowe gry RPG. Podczas izolacji spotkałem się z kilkoma znajomymi online i od tamtej pory kilka razy w miesiącu gramy w D&D. Dołączyłem także do innej grupy, która gra w Werewolf. W przeszłości prowadziłem kilka kampanii, które nie są już aktywne; Jestem w trakcie pisania modułu w oparciu o jeden z nich, ale to projekt długoterminowy.
Jestem także okazjonalnym graczem w gry wideo. Od czasu do czasu gram w gry mobilne, takie jak Best Fiends lub Wordscapes. Lubię też gry na Steamie; niektóre z moich ostatnio granych gier na tej platformie to SteamWorld Dig 2, urocza łamigłówka/platformówka o tematyce steampunkowej oraz Darkest Dungeon, brutalna eksploracja lochów. Uważam, że gry to dobry sposób na relaks.
Zapytaj każdego, kto mnie zna, a jestem pewien, że powie Ci, że kocham karaoke, śpiew i muzykę. Nie mogę ich robić poza domem tak często, jak bym chciała, ale staram się, kiedy tylko mogę. Jeśli zdarzy Ci się złapać mnie na konferencji PHP, istnieje spora szansa, że w którymś momencie spróbuję zorganizować wyjście do lokalnego baru karaoke.
Shahzeb: Jak myślisz, z kim powinniśmy przeprowadzić następny wywiad i dlaczego?
Mateusz: Twoja lista wywiadów to prawdziwa lista „Kto jest kim” społeczności PHP!
Prawdopodobnie mogłabym podać długą listę nazwisk, ale gdybym miała wybrać jedną osobę, która nie znalazła się jeszcze na tej liście, prawdopodobnie musiałabym zaproponować jedno z główni twórcy projektu ReactPHPszczególnie Cees-Jan Kiewiet (@WyriHaximus) czy Christian Lück (@inna_wskazówka).
Główny zespół ReactPHP jest mały, ale dość zgrany i bardzo przyjazny. Tworzą wiele naprawdę fajnych pakietów do wykonywania różnych form programowania asynchronicznego w PHP i naprawdę pomogli w przesunięciu granic tego, co można zrobić z PHP jako językiem.
Shahzeb: By zainspirować naszych czytelników, byłbym wdzięczny, gdybyś udostępnił kilka zdjęć swojej przestrzeni biurowej lub aktualnej stacji roboczej.
Mateusz: Dziękuję, że dałeś mi pretekst, żeby trochę posprzątać na biurku. Trzeba przyznać, że nie zawsze radzę sobie z tym tak dobrze, jak powinienem.
Mój laptop niedawno zrezygnował z ducha, więc korzystam z pożyczki na Macbooka Air z 2017 r., dopóki nie uda mi się tego rozwiązać.
Mój telefon to Samsung Galaxy Note 9. Druga ładowarka, którą możesz zauważyć, jest przeznaczona do mojego Samsunga Galaxy Watch3.
To rzeczy, z których korzystam najczęściej, gdy siedzę przy biurku. Reszta to głównie drobiazgi: adaptery, urządzenia peryferyjne i tym podobne.
Shahzeb: Dziękuję jeszcze raz, Matthew!
Mateusz: Dziękuję! Cała przyjemność po mojej stronie.