Co zmieniło moje podejście do frontendu? Poznanie zasad accessibility
– Niestety nigdy nie poświęcałem większej uwagi tematowi dostępności. W końcu wydawać by się mogło, że adresatów takich rozwiązań jest stosunkowo niewiele. Okazuje się, że to niesamowicie złożona problematyka, zapoznanie się z nią znacznie zmienia podejście do tworzenia front-endu – powiedział nam Karol Stępień, Software Development Engineer w Tesco Technology Poland.
7. kwietnia 2022 roku odbędzie się wydarzenie w nowej przestrzeni Tesco Technology, podczas którego zostanie poruszona tematyka przyszłości branży IT. Będzie panel z ekspertami na temat sztucznej inteligencji, głębokiego uczenia i uczenia maszynowego. Po dyskusji będzie okazja do networkingu i poznania Tesco Technology od środka. Udział w wydarzeniu jest bezpłatny, choć wymaga rejestracji. Więcej na ten temat tutaj.
Spis treści
Swoją przygodę w branży IT zacząłeś od zostania deweloperem aplikacji natywnych dla iOS’a. Dziś podjąłbyś tą samą decyzję?
Pewnie tak. Dla mnie, jako fana marki Apple, z wyborem technologii wiązała się pasja, a jeśli coś się robi z pasją, to wychodzi to najlepiej. Dziś aplikacje dla iOS’a tworzy się w języku Swift, który w porównaniu do Objective-C królującego na tej platformie, gdy zaczynałem jest znacznie wygodniejszy i bardziej przypominający pozostałe popularne języki. Próg wejścia znacząco więc się obniżył. Dodatkowo jest bardziej przewidywalny niż JavaScript, w którym głównie piszę obecnie, więc moim zdaniem jest lepszym wyborem do nauki programowania.
Co pchnęło Cię do zmiany kierunku rozwoju i przejścia na JavaScript?
Będąc programistą ważne jest ciągłe trzymanie ręki na pulsie technologicznego rynku. Trzeba sprawdzać jakie rozwiązania są warte uwagi, uczyć się tego, co w przyszłości może okazać się kluczowe. Ekosystem Apple jak powszechnie wiadomo jest mocno ograniczony, a JavaScript jest na tyle uniwersalnym językiem, że stosuje się go właściwie wszędzie. Daje to możliwość rozwoju w różnych dziedzinach rozwoju oprogramowania. JS na polskim rynku jest też zdecydowanie bardziej popularny. Poza tym w czasach przed pandemią koronawirusa bardzo lubiłem brać udział w różnych meetupach – społeczność JavaScripta w Polsce jest również znacznie większa, a dla początkującego programisty (bo dwa lata doświadczenia to nadal początki) możliwość nauki od bardziej doświadczonych deweloperów jest bardzo istotna.
Na podstawie jakich czynników określiłeś, że JS na polskim rynku ma się lepiej?
Najprostszym sposobem na poznanie sytuacji na rynku jest oczywiście przeglądanie ofert pracy na portalach jak JustJoin.it. W czasie, gdy podejmowałem decyzję o zmianie ekosystemu, w świecie aplikacji mobilnych bardzo dużą popularność zyskiwały różne rozwiązania multiplatformowe jak Ionic, Xamarin, czy później React Native. Takie rozwiązania były zdecydowanie tańsze, a więc i zapotrzebowanie na programistów aplikacji natywnych malało.
O czym dzisiaj się już powoli zapomina to fakt, że wtedy możliwość pracy zdalnej była dosyć rzadkim benefitem. To dodatkowo mocno ograniczało wybór ofert, a dla mnie w czasie studiów dziennych taka możliwość była kluczowa. Dzisiaj sytuacja jest nieco inna – różne wydarzenia jak np. głośne odejście Airbnb od React Native ponownie spopularyzowały natywne rozwiązania, a możliwość pracy zdalnej dała szansę bezpośredniej pracy dla firm z całego świata.
We wczesnym etapie Twojego rozwoju współpracowałeś zarówno z korporacjami, jak i startupami. Czego uczy praca w tym pierwszym rodzaju organizacji, a czego w tym drugim?
Główną różnicą między tymi rodzajami organizacji jest skala budowanych rozwiązań. W startupie, czy w mniejszej firmie skupiasz się zazwyczaj na jednej domenie, a głównym celem jest dostarczenie jak największej wartości biznesowej, w jak najkrótszym czasie. Uczy się tutaj samodzielności, bo często jest się w pełni odpowiedzialnym za spory obszar projektu. Ma się dużą swobodę w doborze technologii czy podejściu do architektury. W moim przypadku bardzo liczyła się bliska współpraca z klientami – kontakt z nimi był na porządku dziennym, więc oswoiłem się z tym miękkim aspektem pracy programisty.
Korporacyjne projekty są ogromne, często dotykają wielu tematyk naraz. Bardzo satysfakcjonująca jest możliwość tworzenia rozwiązań, z których od razu korzystają dziesiątki tysięcy osób. Zyskuje się tutaj świadomość faktycznego wpływu wykonywanej pracy na życie wielu osób. Duże firmy kładą spory nacisk na metodologię pracy i jakość kodu. Często rezerwuje się czas na naukę, zarówno samodzielną, jak i za pośrednictwem platform learningowych. Ważne jest trzymanie się ustanowionych standardów, by tworzone przez firmę aplikacje były ze sobą spójne. Uczy się więc staranności, dbałości o szczegóły i zwracania uwagi na odpowiednie dokumentowanie swojej pracy.
Na pewno polecam spróbować swoich sił w firmach i projektach różnej wielkości. Z każdego doświadczenia wyniosłem coś nowego.
Jak trafiłeś do Tesco i co przekonało Cię do zaaplikowania na stanowisko Software Development Engineera?
Zaczęło się standardowo – na LinkedIn napisała do mnie rekruterka z Tesco Technology. Pierwsza myśl: „co ciekawego może być w Tesco?” W ofercie stos technologiczny jednak w 100% pokrywał się z moimi zainteresowaniami, więc postanowiłem dowiedzieć się więcej. Tak naprawdę to właśnie proces rekrutacyjny przekonał mnie do Tesco. Składał się z czterech etapów, ale każdy z nich był krótki, sensowny, a sprawdzana wiedza okazała się faktycznie być wykorzystywana w codziennej pracy.
Stos technologiczny to główny element pasującej do Ciebie oferty pracy? Na co jeszcze zwracasz uwagę?
Na pewno jest to kluczowy element. W tym przypadku wiedziałem w jakich obszarach chcę się rozwijać, a ta oferta dawała nadzieję na spełnienie tych oczekiwań. Drugim najważniejszym elementem oferty są mimo wszystko widełki płacowe i na szczęście już większość ofert ma je jawne. O pozostałe interesujące mnie szczegóły zwykle dociekam już podczas rozmowy telefonicznej. Pytam o szczegóły metodologii pracy, bo co prawda większość ofert ogłasza Scrum ale każdy zespół dostosowuje go pod swoje wymagania. Dopytuję o formę kontaktu z klientem, czy jest możliwość prezentacji aplikacji przed potencjalnymi użytkownikami aplikacji albo na jak dużą autonomię mogę liczyć.
Kiedy po raz pierwszy spotkałeś się z tematyką dostępności tworzonych rozwiązań dla osób z niepełnosprawnościami?
Temat dostępności cały czas gdzieś się przewija. To wspomni o tym dokumentacja danej biblioteki, to narzędzia deweloperskie czasem coś podkreślą, a to czasem ktoś coś napisze na blogu. Niestety nigdy jednak nie poświęcałem temu większej uwagi. W końcu wydawać by się mogło, że adresatów takich rozwiązań jest stosunkowo niewiele i do wykonania są inne zadania o wyższych priorytetach. Bardziej tematem zacząłem się interesować dopiero niedawno, startując z nowym projektem w Tesco Technology. Okazuje się, że jest to niesamowicie złożona problematyka, zapoznanie się z nią znacznie zmienia podejście do tworzenia front-endu, zarówno od strony wizualnej, jak i tej technicznej, a zainteresowanych odbiorców dostępnego oprogramowania jest zaskakująco wiele.
Jakimi zasadami warto kierować się pracując nad tego typu projektami?
Należy zmienić swoje myślenie o projektowaniu interakcji użytkownika z tworzoną aplikacją. Podczas codziennej pracy warto sobie zadać pytania np. „Jak ten komponent może zostać obsłużony wyłącznie za pośrednictwem klawiatury, tak by osoby z obniżonymi możliwościami motorycznymi były w stanie uzyskać takie same rezultaty jak osoby korzystające z myszy?”, „Czy obsługa głosowa tego interfejsu jest wystarczająco łatwa?”, „Jak powinien wyglądać proces testowania dostępności?”.
Zdecydowanie warto zapoznać się ze wytycznymi WCAG (Web Content Accessibility Guidelines), czyli opublikowanymi przez W3C (World Wide Web Consortium) dokumentami zawierającymi zalecenia dotyczące tworzenia dostępnych serwisów internetowych. Na pierwszy rzut oka jest to ciężka do przebrnięcia dokumentacja, na szczęście społeczność dostępności jest całkiem spora i łatwo znaleźć ciekawe jej opracowania, a także narzędzia ułatwiające testowanie zgodności aplikacji z tą specyfikacją.
Poza tym polecam zasięgnąć opinii samych osób z niepełnosprawnościami na temat możliwych usprawnień i funkcjonalności, na które jest zapotrzebowanie. Ich spojrzenie zawsze wskazuje problemy, których zwykle nie zauważamy.
Jak do tematu dostępności podchodzi ogółem biznes? Klienci widzą korzyść w stosowaniu tych rozwiązań we własnych produktach?
Moje doświadczenie jest takie, że temat rzadko był przez nich poruszany. Zdarza się, że programiści o większym doświadczeniu chcą ratować sytuację pamiętając o spełnianiu wymagań niektórych standardów, więc dostosowują aplikację od strony kodu. Niestety to nie wystarczy. Co z tego, że przy schodach wybuduje się rampę dla wózków inwalidzkich, jeśli dojazd do niej jest niemożliwy ze względu na stojący przed nią słup? O dostępność należy zadbać już na etapie projektowania interfejsu i user flow (przepływu użytkowników). Na szczęście odpowiednie przedstawienie tematu zazwyczaj wystarczy by uzyskać akceptację klientów. Rzecz w tym, że zwykle po prostu brakuje świadomości o tego typu komplikacjach. W Tesco Technology nie ma z tym problemu.
Kiedy Twoim zdaniem jest najlepszy czas, by początkujący programista poznał zasady tworzenia rozwiązań dostępnych dla osób z niepełnosprawnościami?
Im szybciej tym lepiej! Każdy z nas wypracowuje sobie własny sposób na wytwarzanie komponentów aplikacji i radzenie sobie z problemami. Z czasem coraz trudniej więc zmienić swoje nawyki. Podobnie sprawa się ma w przypadku planowania projektów – jeżeli od samego początku w szacunkach będziemy zawierali zgodność ze standardami dostępności unikniemy szoku związanego z nagłą potrzebą dodatkowego czasu na usprawnienie produktu w tym obszarze.
Co mogłoby pomóc w zachęceniu zainteresowania się tą tematyką?
Dla mnie mocną motywacją są konferencje tematyczne. Uczestniczenie w sesjach prowadzonych przez zarówno osoby techniczne, jak i nietechniczne uświadomiło mi, jak wielka jest przestrzeń do innowacji w zakresie dostępności. Odkryłem kilka bardzo ciekawych projektów, które teraz wykorzystuję w codziennej pracy. Teraz gdy większość tego typu wydarzeń jest darmowa i dostępna zdalnie, aż żal nie skorzystać!
Jak Twoim zdaniem będzie wyglądała przyszłość programistów? Na czym skupimy się w najbliższych latach?
Mam nadzieję, że programiści nie odbiorą sobie samym pracy przez nadmierną automatyzację. A tak na serio liczę na to, że rozwój uczenia maszynowego poprzez inteligentne narzędzia do wytwarzania oprogramowania, pozwoli nam skupiać się na dostarczaniu funkcjonalności unikając niedoskonałości. Znów nawiążę do dziedziny dostępności, gdzie już teraz widać, że idzie to w dobrym kierunku – powstały narzędzia, które potrafią wykryć, że dany komponent zachowuje się inaczej niż wynika to z semantyki języka i mogłoby być to mylące np. dla osoby korzystającej z czytnika ekranu. To taka implementacja zasady „fail-fast” na etapie tworzenia oprogramowania, skutkująca mniejszym prawdopodobieństwem potrzeby refaktoryzacji kodu w późniejszym czasie.
7. kwietnia 2022 roku odbędzie się wydarzenie (część offline, część także online), podczas którego zostanie poruszona tematyka przyszłości branży IT. Spotkanie otworzy CTO Tesco Technology a zaraz po nim odbędzie się dyskusja na temat na technologii przyszłości. Udział w wydarzeniu jest bezpłatny, choć wymaga rejestracji. Więcej na ten temat tutaj.
Karol Stępień. Software Development Engineer w Tesco Technology Poland. Programista zajmujący się obecnie głównie aplikacjami webowymi, ale mający doświadczenie również w tworzeniu rozwiązań mobilnych. Profesjonalnie tworzy oprogramowanie od 2015 roku, od samego początku obracając się w międzynarodowym środowisku. Każdego dnia stara się optymalizować zarówno twarde jak i miękkie aspekty pracy dewelopera, by móc jak najszybciej dostarczać dopracowane rozwiązania pracując przy tym w dobrej atmosferze. Entuzjasta nowinek technologicznych i okazjonalny gracz PlayStation.