Dzięki urządzeniom IoT nasze życie staje się łatwiejsze. Wywiad z Norbertem Towiańskim
– Dzięki urządzeniom IoT nasze życie staje się przyjemniejsze, łatwiejsze, bardziej zautomatyzowane, choć nie można zapominać o wyzwaniach, które stoją przed światem inteligentnych urządzeń, jak i przed programistami/projektantami. Chodzi mi głównie o kwestie bezpieczeństwa, które są konieczne przy wytwarzaniu rozwiązań IoT – uważa Norbert Towiański, Embedded Developer w SolveQ. Rozmawiamy z nim m.in. o jego ścieżce kariery, jak znalazł się na obecnym stanowisku oraz o tym, jaką przyszłość ma przed sobą branża IoT/Embedded.
Spis treści
Na początek porozmawiajmy o Tobie. W dobie programistów po kursach Ty zdecydowałeś się na studia. Jak oceniasz ten wybór z perspektywy czasu? Co Ci dały studia w kontekście programowania, czego nauczyły?
Tak naprawdę jeszcze w momencie ukończenia liceum nie wiedziałem, co chcę konkretnie robić w życiu. Wszyscy moi znajomi szli na studia, więc i ja poszedłem. Być może teraz to podejście się trochę zmieniło, ale my jako 19-latkowie dalej nie wiedzieliśmy, w czym chcemy się specjalizować. To pokazuje tylko, jak nasza edukacja kuleje i brakuje np. rozmów z praktykami już na poziomie szkoły podstawowej i liceum, którzy ukierunkują młode osoby w jakiejś dziedzinie. Wracając jednak do studiów, to z perspektywy czasu nie uważam, by ten czas był stracony. Pomimo wielu mankamentów i niedoskonałości polskich uczelni technicznych poznałem tam cały przekrój technologii inżynierskich. Co do samego programowania to myślę, że studia nie nauczą nikogo programować, tak samo jak nie zrobi tego żaden kurs. Tu potrzeba po prostu dużo silnej woli, pracy nad własnym rozwojem i godzin spędzonych przed kodem. Dotyczy to w zasadzie każdej dziedziny życia, w której chcemy się specjalizować. Oczywiście niektórym osobom pewne rzeczy przychodzą łatwiej, niektórym trudniej, jednak bez doświadczenia nawet najbardziej utalentowana osoba nic nie zdziała.
Z perspektywy czasu uważam, że te 5 lat studiów na Politechnice znacznie przyczyniły się do tego, że jestem tu, gdzie jestem, jednak uważam, że nie ma tu reguły i każdy powinien dopasować do siebie własną ścieżkę rozwoju. Przytoczę może trochę anegdotyczny przykład, ale zdecydowana większość ludzi, których znam i którzy skończyli chociaż studia inżynierskie, pracują w zawodzie i spełniają się jako programiści czy inżynierowie. Natomiast w przypadku kursów i bootcampów sytuacja ma się zgoła inaczej i tu raczej mniejszość kontynuuje pracę w IT, ale to tylko moje obserwacje. Tak, jak wspomniałem wcześniej, bez pracy nad własnym rozwojem nie ma szans na dobrą pracę i to bez znaczenia, czy będziemy po studiach czy po kursie.
Należy pamiętać także o tym, że o ile programista lub inżynier ma już jakieś doświadczenie w zawodzie, to znalezienie pracy przychodzi mu dość łatwo, to jednak na początku jest bardzo ciężko, a z racji współpracy różnych firm technologicznych z politechnikami dużo łatwiej o pracę na start.
Na 3. roku studiów rozpocząłeś pracę jako programista systemów wbudowanych. Jak znalazłeś tę pracę, jak wyglądała Twoja pierwsza rekrutacja?
Rozpocząłem szukanie pracy w zawodzie w zasadzie już podczas wakacji między drugim a trzecim rokiem studiów. Wiedziałem, że im szybciej zacznę szukać, tym większa szansa na znalezienie czegoś. Nie szukałem konkretnych ogłoszeń, po prostu przygotowałem CV, w którym opisałem moje doświadczenie (lub jego brak), umiejętności, a w samej treści maila zawarłem dużo informacji o chęci do pracy i rozwoju. Prawdę mówiąc, nie spodziewałem się od razu wielkiego odzewu, a to dlatego, że moje doświadczenie w programowaniu komercyjnym było zerowe, a z powodu masy zajęć na studiach związanych nie tylko z programowaniem, ale i z matematyką, fizyką lub ogólną inżynierią mój poziom nie był nadzwyczajny. Oczywiście nadrabiałem to po zajęciach, ale to była naprawdę ciężka praca i momentami brakowało motywacji.
Po paru tygodniach zgłosiła się do mnie mała firma specjalizująca się w dostarczaniu całych rozwiązań dla przemysłu elektronicznego od projektu PCB, firmware aż po mechanikę obudowy. Rozmowa rekrutacyjna polegała głównie na sprawdzeniu moich umiejętności miękkich. Nikt nie wymagał od studenta, że będzie znał coś więcej niż podstawy, ale oczywiście ogólne pytania o wiedzę techniczną padły. W zasadzie od razu otrzymałem pozytywną odpowiedź i zacząłem początkowo pracę jako stażysta. Po około dwóch, trzech miesiącach wytężonej nauki mikrokontrolerów, elektroniki i języka C dostałem pierwszy projekt komercyjny. Był to projekt był balansera baterii. Urządzenie to umożliwia wyrównywanie napięć cel pakietów akumulatorowych w trakcie ładowania, dzięki czemu są one znacznie dłużej sprawne. Projekt był dość prosty i w ciągu około 2 tygodni udało się zbudować działającą wersję, która poszła do testów przez klienta. Potem zająłem się kolejnym projektem – zaawansowanym miernikiem dźwięku. Wykorzystywaliśmy w nim bardzo wiele modułów, interfejsów i protokołów, dzięki czemu mogłem w szybkim czasie poznać wiele standardów komunikacji.
Po roku jednak stwierdziłem, że aby dalej się rozwijać, muszę trafić do większej firmy i ludzi, którzy są w stanie przekazać mi swoją wiedzę. W ten sposób trafiłem do 3City Electronics i tu na poważnie zaczęła się moja przygoda z programowaniem. Poznałem tam inny wymiar programowania elektroniki, ale przede wszystkim fantastycznych ludzi, którzy każdego dnia służyli pomocą i świetnie się z nimi dogadywałem. Z wieloma osobami dotąd mam bliski kontakt.
Brałeś udział w projektowaniu i wdrażaniu systemów automatyki budynkowej oraz elektroniki użytkowej. Opowiedz, proszę, coś więcej o tych zadaniach. Na czym dokładnie polegały? Jakie miały zastosowanie w praktyce?
3City Electronics było software house’em, przez co rotacja projektów była dość duża i nie sposób było się nudzić. Mieliśmy działy firmware’u, hardware’u i mechaniki w jednym oddziale, przez co cały proces tworzenia urządzeń był znacznie szybszy, ponieważ bardzo ściśle współpracowaliśmy na każdym etapie wytwarzania produktu. Pierwszym projektem, który współtworzyłem, było urządzenie do monitorowania higieny toalet i łazienek publicznych. Użytkownik miał do wyboru trzy przyciski – czerwony, żółty i zielony.
Samo urządzenie posiadało wbudowany moduł modemu GPRS, który był odpowiedzialny za komunikację z serwerem. Dodatkowo inna firma, z którą współpracowaliśmy, implementowała aplikację kliencką do obsługi urządzeń. System pomimo udanego zakończenia nie znalazł zainteresowanych zakupem klientów, natomiast ilość nauki, jaką przyswoiłem w kilka miesięcy w zakresie protokołów, języka C i samej elektroniki, była przeogromna. Jeśli chodzi o automatykę budynkową, to jako firma byliśmy odpowiedzialni za dostarczenie kompletnego gateway’a, czyli bramki komunikacyjnej dla rozwiązań IoT. Część firmware’u była oparta o system Linux, zaś ja byłem głównie odpowiedzialny o firmware na mikrokontroler STM32. Wtedy też po raz pierwszy miałem do czynienia z takimi protokołami, jak Z-WAVE, ZigBee, LoRA, Thread. Oprócz tego urządzenie miało wbudowany Bluetooth Low Energy. Zadania polegały głównie na uruchomieniu tych modułów i zaimplementowaniu prostych aplikacji do ich obsługi. Oczywiście, zanim te aplikacje mogły powstać, musieliśmy ściśle współpracować z działem hardware’u, prowadzić pomiary oscyloskopem i debuggować różne ciekawe problemy, które wcześniej nie były nam znane. Oprócz tych urządzeń byłem odpowiedzialny za firmware w kilku jeszcze innych, które niekiedy wymagały także znajomości fizyki czy matematyki.
W firmie pracowałem prawie 5 lat i mogę z całą odpowiedzialnością stwierdzić, że nauczyłem się tam ogromnego przekroju embedded, a sama praca tam ukształtowała mnie jako programistę. Jestem bardzo wdzięczny ludziom i firmie, dzięki której mogłem liznąć tak wielu tematów, co jest niemożliwe podczas pracy w korporacji, gdzie bardzo często pracuje się nad jednym małym kawałkiem całego systemu przez parę lat. Z moich obserwacji wynika, że warto często zmieniać projekty zamiast specjalizować się w jednej małej rzeczy, czasami charakterystycznej dla danej firmy i potem mieć problem ze znalezieniem pracy. Nie chcę tu generalizować, każdy przypadek jest inny, ale na pewno warto zastanowić się czasami nad swoją karierą i zapytać siebie, czy rozwijam się jako programista w swojej firmie.
Teraz pracujesz w firmie SolveQ. Za co jesteś tu odpowiedzialny?
W SolveQ pracuje już prawie 2 lata i trafiłem tu do bardzo ciekawego projektu – trackera GPS dla psów. Urządzenie przeznaczone jest na rynek norweski, a co ważne jest już używane przez około 5000 użytkowników. Jestem odpowiedzialny za jego firmware, czyli naprawianie istniejących błędów i implementowanie nowych funkcji.
Tracker jest dość mały i spokojnie mieści się na obroży w specjalnym holderze. Wyposażony jest w moduł Bluetooth Low Energy, modem LTE-M, moduł GPS, akcelerometr oraz ładowanie indukcyjne. Jest także całkowicie wodoodporny do 1 metra. Bateria wystarcza na około 8 godzin ciągłej pracy w trybie szukania psa oraz 12 godzin w trybie spaceru. Po zakończeniu tych aktywności urządzenie przechodzi w stan uśpienia, w którym co 5 minut sprawdza, czy nie zmienił się jego tryb, a następnie idzie w tryb uśpienia. Może wtedy wytrzymać około 6 dni na baterii. Oczywiście, prócz urządzenia nasz zespół w SolveQ jest odpowiedzialny za aplikację mobilną oraz serwer, z którymi tracker łączy się, aby przesłać swoją pozycję i inne informacje.
W jakich technologiach pracujesz na co dzień?
Głównym językiem w projekcie jest C, w którym też są napisane biblioteki do obsługi mikrokontrolera, który już w sobie ma zaszyty stos Bluetooth. Oprócz tego, tak jak już wcześniej wspomniałem, używamy w projekcie modemu LTE-M i modułu GPS, a więc szeroka wiedza w tym zakresie jest konieczna do płynnej pracy z projektem. Bardzo przydatne techniki są także różne techniki debuggowania kodu embedded, takie jak konsola UART, konsola zdalna przez bluetooth, debug za pomocą GDB/RTT czy po prostu znajomość podstawowych zasad elektroniki. Tracker jest zasilany bateryjnie, a więc bardzo duży nacisk jest postawiony na technologie low energy LTE-M: eDRX czy PSM.
Dodatkowo przez fakt, że urządzenie łączy się bezprzewodowo z serwerem oraz z aplikacją mobilną, musimy mieć wiedzę w zakresie back-endu (protokoły takie jak TCP/IP, MQTT czy UDP), a także iOSa i Androida.
Jesteś fanem IoT. Co szczególnie fascynuje Cię w tej koncepcji?
IoT czyli Internet of Things (Internet Rzeczy) jest to koncept, w którym wszystkie urządzenia elektroniczne są podłączone do globalnej sieci, potrafią rozmawiać i komunikować się wzajemnie. Zaczynając od sensorów, które dostarczają nam podstawowych informacji o otoczeniu, urządzeń smart home po te bardziej zaawansowane jak telefony komórkowe, laptopy czy samochody. My, łącząc je i dając im możliwość komunikacji budujemy dla nich niejako świat, a one tym samym definiują, jak ten nasz świat wygląda i chyba to właśnie sprawia, że jestem zauroczony tą koncepcją.
Przede wszystkim to chyba jest fakt pracowania z fizycznym sprzętem i choć to czasami bardzo utrudnia pracę zdalną, przez konieczność większej ilości miejsca dla różnych sprzętów, takich jak oscyloskop, multimetry, płytki PCB, debuggery, to jednak wydaje mi się, że praca daje dużo większą frajdę. Dodatkowo branża IoT jest tak szeroka, że chyba każdy programista znajdzie tu coś dla siebie.
Wydaje mi się także, że dzięki urządzeniom IoT nasze życie staje się przyjemniejsze, łatwiejsze, bardziej zautomatyzowane, choć nie można zapominać o wyzwaniach, które stoją przed światem inteligentnych urządzeń, jak i przed programistami/projektantami. Chodzi mi głównie o kwestie bezpieczeństwa, które są konieczne przy wytwarzaniu rozwiązań IoT.
Bez wątpienia IoT jest dynamicznie rozwijającą się branżą. Pokusisz się może o przewidzenie, w jakim kierunku pójdzie w ciągu najbliższych lat?
Według różnych szacunków do sieci jest podłączonych obecnie ponad 50 miliardów urządzeń IoT. Wzrost jest w zasadzie wykładniczy i można oczekiwać, że urządzeń elektronicznych włączonych do Internetu będzie coraz więcej. Kolejne przewidywania mówią, że wartość globalnego rynku IoT wycenianego na ok. 200 mld dolarów, wzrośnie w 2026 roku do 1,1 bln dolarów utrzymując tempo wzrostu na poziomie 24 proc. rocznie.
Osobiście uważam, że ostatnie 3 lata całkowicie zmieniły sposób, w jaki postrzegamy świat, a jakiekolwiek przewidywania są jak wróżenie z fusów. Na ten moment wydaje się, że branża IoT będzie notować znaczące wzrosty rok do roku. Generalnie niesie ona wielki potencjał od codziennego życia, przez ochronę zdrowia po zarządzanie miastami.
Tym, co może zablokować dalsze rozpowszechnianie IoT są kontrowersje związane z prywatnością. Mówimy w końcu o urządzeniach, które zbierają informacje na temat wszystkiego, co robimy, by jak najlepiej nas poznać. Czy mamy się czego obawiać?
Tak jak już wcześniej stwierdziłem, IoT pomimo niewątpliwych zalet niesie ze sobą masę wyzwań szczególnie związanych z bezpieczeństwem. Na ten moment głównymi urządzeniami zbierającymi dane o nas są przede wszystkim nasze smartfony i laptopy. Dane, które są zbierane używane są przez sklepy, reklamy dostosowują swoją zawartość do naszych preferencji, a nasze rozmowy w domu są po prostu podsłuchiwane – po to, aby za chwilę smartfon podsunął nam kolejną rzecz do kupienia.
Kolejną sprawą, która może budzić nasze obawy to urządzenia smart home. Są one podłączone do naszej sieci domowej, przez którą przecież łączymy się do naszego konta bankowego czy tajnych informacji firmowych, a same urządzenia zazwyczaj łączą się z chmurą AWSową albo – co gorsza – z chińskimi serwerami. Zaskakująco łatwo przez takie urządzenia dostać się do naszej sieci domowej i po prostu ją zainfekować. Najłatwiejszym sposobem na to jest wydzielenie oddzielnej podsieci w domu dla takich urządzeń i już w pewnym stopniu jesteśmy bardziej chronieni. Niestety mnogość urządzeń, które są podłączone do Internetu powoduje, że jesteśmy coraz bardziej narażeni na ataki hakerskie, ale nie sądzę, by to miało zahamować rozwój samego IoT. Markowe rozwiązania posiadają dobre zabezpieczenia i jeśli tylko takowe wybieramy, już zmniejszamy ryzyko ataku.
Jak oceniłbyś polski rynek jeśli chodzi o zapotrzebowanie i zarobki specjalistów od IoT?
Cała branża embedded obejmuje tak szerokie spektrum, że ciężko odpowiedzieć na to pytanie w kilku zdaniach. Wydaje mi się, że same zarobki są porównywalne z innymi branżami IT, szczególnie jeśli chodzi o działkę Linuxową, jednak próg wejścia jest dużo wyższy chociażby przez konieczność pracowania ze sprzętem. W przypadku aplikacji mobilnych wystarczy smartfon lub nawet emulator i już można działać. W przypadku embedded bardzo często rozwiązania są specyficzne dla danej branży. Przykładem może być automotive, w którym bardzo ciężko złapać wcześniej jakiekolwiek doświadczenie nie pracując w tym bezpośrednio, ale za to perspektywa pracy nad modułem, który trafi do samochodów za parę lat wydaje się fascynująca.
Co do zapotrzebowania na specjalistów to po paru miesiącach od wybuchu pandemii tak ono wzrosło, że w zasadzie firmy prześcigają się w tym, jak zachęcić pracownika do zmiany pracy. Na pewno ma też na to wpływ doświadczenie danego kandydata, bo zdaję sobie sprawę, że rynek juniorów wygląda zgoła odmiennie, ale dalej jest to dużo większe zapotrzebowanie niż kilka lat wcześniej. Sprawę ułatwia także praca zdalna i możliwość świadczenia usług dla klientów w zasadzie z całego świata. Na koniec mogę tylko zachęcić do zagłębienia się w świat IoT i Embedded, bo z pewnością nie będziecie się w nim nudzić
Norbert Towiański. Embedded Developer w SolveQ z 7-letnim doświadczeniem zawodowym. Absolwent Automatyki i Robotyki oraz Informatyki na Politechnice Gdańskiej. Na 3. roku studiów rozpoczął pracę jako programista systemów wbudowanych. Brał udział w projektowaniu i wdrażaniu systemów automatyki budynkowej oraz elektroniki użytkowej. Specjalizuje się w technologiach Bluetooth Low Energy oraz LTE-M. Wielki fan IoT. Biegacz, gracz squasha, miłośnik pizzy neapolitańskiej i podróżnik.