Michael Bodnarchuk jest programistą internetowym z Kijowa na Ukrainie i pełni funkcję głównego programisty platformy testowej Codeception. Pracuje także jako konsultant techniczny i trener w firmie konsultingowej SDCLabs. Obecnie pracuje nad systemem do zarządzania testami dla użytkowników nie zajmujących się zarządzaniem testami. Cieszymy się, że Michael jest tu dzisiaj z nami i opowiada nam o swojej podróży, swoich doświadczeniach w pracy z PHP, swoich doświadczeniach z Codeception i wiele więcej.
Shahzeb: Witaj Michael, dziękuję za poświęcenie czasu na ten wywiad. Zanim zaczniemy, czy możesz nam powiedzieć trochę o sobie, aby nasi czytelnicy mogli Cię lepiej poznać?
Michael: Jestem programistą internetowym z Kijowa na Ukrainie. Zawsze pasjonowało mnie tworzenie nowych rzeczy i to właśnie doprowadziło mnie do technologii. Przez ostatnie 10 lat pracowałem nad własnymi projektami open source, takimi jak Kodecepcja I CodeceptJS.
Bardzo lubię rozwijać narzędzia, dlatego przez długi czas nie miałem regularnej pracy. Pracowałem jako konsultant techniczny, trener i freelancer. Dzięki temu mogę zarabiać pieniądze na swoich produktach i je ulepszać. Mieszkam w dość tanim kraju, więc mi to w zupełności wystarczy. Tworzenie oprogramowania typu open source to pasja, a nie pieniądze. Nie mam więc dużo pieniędzy, ale mam mnóstwo pasji do robienia wielkich rzeczy!
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.
W tej chwili pracuję nad kolejnym projektem – Testomat.io, czyli systemem do zarządzania testami dla wszystkich, którzy w ogóle nie korzystają z zarządzania testami. Pomysł jest prosty – Twoje testy wymagają widoczności. Chcesz udostępniać je zespołom, wyświetlać raporty z uruchomień i przeprowadzać testy, aby były czymś więcej niż ukrytymi perełkami w kodzie. Jeśli Twój zespół będzie mógł je zobaczyć, zaproponować kolejne testy i sprawdzić raporty z przebiegu testów, lepiej zrozumie bieżący zasięg testów.
Shahzeb: Czy możesz podzielić się swoją podróżą z PHP? Jakieś historie ze swojej kariery uważasz za interesujące? Jakie było największe wyzwanie, przed którym stałeś na początku swojej kariery i jak sobie z nim poradziłeś?
Michael: Zacząłem w 2004 roku. Jak większość młodych programistów tamtych czasów, próbowałem zbudować własną grę komputerową. Sieć była najtańszą platformą do opracowania – nie trzeba było myśleć o wysokiej jakości grafice, animacjach czy 3D. Użyłem więc silnika forum PHPBB jako podstawy mojej gry. Jakość kodu była bardzo słaba (nie tylko mój, ale także PHPBB), więc w pewnym momencie zrezygnowałem, ponieważ projekt stał się zbyt skomplikowany.
Ale ponieważ miałem już dobre doświadczenia z PHP, próbowałem pracować nad stronami internetowymi. Zacząłem używać frameworków Seagull, Symfony 1 i innych. To były stare, dobre czasy, kiedy frameworki dopiero zaczynały się pojawiać i w tym konkursie nie było jeszcze zwycięzcy.
Shahzeb: Jak opisałbyś Codeception komuś, kto nigdy o nim nie słyszał?
Michael: Kodowanie to coś, czego potrzebujesz, jeśli nie lubisz pisać testów. Jest to framework testowy przeznaczony dla tych, którzy nie mają pojęcia jak testować swoje aplikacje, ale chcieliby zacząć szybko i łatwo oraz posiadać narzędzie integrujące się z ich własnym frameworkiem. Opisujesz interakcje z aplikacją i sprawdzasz wyniki: co zostało wysłane do użytkownika, co zostało zapisane w bazie danych itp. Codeception zapewnia całe narzędzie, więc możesz skupić się tylko na pisaniu prostych i sensownych testów!
Shahzeb: Dlaczego opracowałeś Codeception?
Michael: Pracowałem dla amerykańskiej firmy i właśnie zacząłem swoją przygodę z testowaniem jednostkowym. I napisałem kilka testów. Okazały się całkiem dobre, gdyż dostarczały informacji na temat stabilności naszej aplikacji. Jak powiedział nasz CTO: testy kilka razy uratowały nam życie. Był jednak jeden duży problem – nikt nie rozumiał tych testów. Zapytałem więc dyrektora generalnego, czy mógłbym poświęcić trochę czasu i przekształcić nasze testy w coś bardziej znaczącego. W ten sposób wymyśliłem składnię, w której każde polecenie zaczyna się od I – jestem na stronie, klikam, widzę. Te testy składni stały się łatwe do odczytania i łatwe do napisania. Z tego paradygmatu zrodziło się kodecepcja.
Shahzeb: Jak wpadłeś na pomysł Codeception? Jakie wyzwania napotkałeś podczas jego tworzenia?
Michael: W czasach, gdy powstawało Codeception, nastąpiła zmiana paradygmatu we frameworkach PHP. Programiści przeszli z PHP 5.2 na 5.3 i zaczęto wprowadzać przestrzenie nazw. To sprawiło, że stare frameworki, takie jak Symfony 1, Yii 1, Zend Framework, stały się dziedzictwem, podczas gdy nowe frameworki, takie jak Symfony 2 czy Laravel, nie zajęły jeszcze swojego miejsca.
Zatem najtrudniejszą rzeczą był wybór frameworku PHP do integracji z Codeception. Moja oryginalna wersja została zbudowana na Symfony 1. Ale to już nie był dobry pomysł. Podjąłem więc decyzję o obsłudze wszystkich popularnych frameworków PHP. Prawdopodobnie nie był to dobry pomysł, jeśli policzę cały czas spędzony nad ich integracją, ale efekt końcowy był całkiem niezły. Nieważne, jakiego frameworka użyjesz – testy będą takie same.
Słyszałem historię, że jedna firma przeprowadziła migrację z Zend Framework 1 do Symfony bez zmiany kodu w swoich testach. Dla mnie to brzmi całkiem fajnie! Tak więc Codeception stało się ogólnym narzędziem do testowania wszelkiego rodzaju aplikacji internetowych zbudowanych w PHP.
Shahzeb: Masz rozległą wiedzę na temat programowania PHP. Czy chciałbyś opowiedzieć naszym czytelnikom o najlepszych projektach PHP, nad którymi pracowałeś?
Michael: PHP ma świetną społeczność i całkiem niezły ekosystem. Podoba mi się ekosystem Laravela, choć nie korzystałem z niego zbyt często. Podoba mi się, że istnieją frameworki przyjazne dla przedsiębiorstw, takie jak Symfony, frameworki start-upowe, takie jak Yii lub Laravel, oraz potężne systemy CMS, takie jak WordPress lub Drupal. Pozwala PHP zająć się większością przypadków związanych z tworzeniem stron internetowych. Przestałem oceniać produkty po kodzie, dlatego powiedziałbym, że wszystkie projekty, które czynią ekosystem PHP wyjątkowym, są świetne.
Shahzeb: Jak myślisz, jakie są główne korzyści, jakie testerzy PHP czerpią z narzędzi Codeception?
Michael: Codeception to proste narzędzie na początek, ale z założenia zapewnia skalowalność na poziomie przedsiębiorstwa. Dlatego Codeception zachęca programistów do stosowania najlepszych praktyk – nie mieszaj kodu z konfiguracją, usuwaj kod pomocniczy z testów, dbaj o czytelność testów, preferuj testy integracyjne, otrzymuj raporty z uruchomień i wiele więcej!
W przeciwieństwie do innych narzędzi testowych Codeception nie pozostawia programisty samego z jego problemami. W Codeception większość integracji jest już wykonana, a problemy rozwiązane. Pisanie testów w sposób zaproponowany przez Codeception sprawia, że są one łatwe w pisaniu, czytaniu i utrzymaniu.
Shahzeb: Jakie są Twoje osobiste opinie na temat testowania? Dlaczego testowanie jest istotną częścią rozwoju produktu?
Michael: Testowanie dotyczy zaufania. Czy ufasz swojemu kodowi? Nie ufam swoim. Dlatego mam wokół niego testy jako pas bezpieczeństwa. Nie powinieneś mieć także fałszywej pewności siebie. Wykonaj jak najwięcej automatycznych kontroli. Zacznij od lintersów i analizy kodu, dodawaj więcej testów funkcjonalnych, integracyjnych itd., dodając coraz więcej pewności do swojego projektu.
Shahzeb: Jaki typ hostingu wolisz? Jakie są Twoim zdaniem korzyści z hostowania witryny u dostawcy rozwiązań zarządzanych zamiast w przypadku konwencjonalnego hostingu współdzielonego?
Michael: Aby utrzymać własny hosting, korzystam z kilku skryptów Ansible, które muszę aktualizować i konserwować. Mam w tym spore doświadczenie i dość łatwo mogę dostroić i skalować swój serwer. Wolałbym jednak zlecić to zadanie komuś innemu. Jeśli więc możesz zaoszczędzić czas na zarządzaniu serwerami i zapłacić hostowi dodatkowe pieniądze, prawdopodobnie warto.
Shahzeb: Co sądzisz o rozwiązaniach do zarządzanego hostingu, takich jak DreamHost, które zapewniają zoptymalizowany stos PHP z funkcjami wdrażania aplikacji internetowych?
Michael: Myślę, że to wspaniale, że programiści PHP mają taką opcję. Może to radykalnie zaoszczędzić czas potrzebny na przekształcenie produktu od pomysłu do produkcji.
Shahzeb: Bardzo ważne jest, aby zachować równowagę między życiem osobistym i zawodowym. Jak spędzasz czas, kiedy nie pracujesz?
Michael: Lubię spływy kajakowe, piesze wędrówki, jazdę na rowerze i inne zajęcia. Dzięki temu nie wypalę się.
Shahzeb: Z kim powinniśmy przeprowadzić następny wywiad i dlaczego?
Michael: Myślę, że to powinien być Anton Tsitou. Buduje rewolucyjną technologię dla PHP – Spiral Framework z RoadRunner, asynchronicznym serwerem WWW dla PHP.
Shahzeb: Davert, jestem pewien, że wiele osób robiło notatki. Jestem też pewien, że chętnie zobaczą zdjęcie Twojej stacji roboczej, jeśli chcesz je udostępnić!
Shahzeb: Jeszcze raz dziękuję, Davert!
×