POIT #171: Język programowania R

Witam w sto siedemdziesiątym pierwszym odcinku podcastu „Porozmawiajmy o IT”. Tematem dzisiejszej rozmowy jest język programowania R.

Dziś moim gościem jest Filip Stachura CEO Appsilon, który bez inwestora osiągnął pozycję lidera w domenie R / Shiny. Pasjonat danych, dataviz, Open Source i Tech4Good. Ukończył matematykę i informatykę na Uniwersytecie Warszawskim. Wcześniej pracował w Microsoft w Los Angeles.

W tym odcinku o R rozmawiamy w następujących kontekstach:

  • czym jest język R i do czego służy?
  • jak powstał?
  • kto go obecnie rozwija?
  • skąd bierze się popularność języka R?
  • z jakimi językami konkuruje?
  • co jest wyjątkowego w R i jego ekosystemie?
  • jak wygląda ekosystem?
  • jak wygląda rynek pracy osób programujących w R?
  • jak najlepiej nauczyć się R?
  • w których kierunkach ten język będzie się rozwijał? Jaka przyszłość go czeka?

Subskrypcja podcastu:

Linki:

Wsparcie na Patronite:

Wierzę, że dobro wraca i że zawsze znajdą się osoby w bliższym lub dalszym gronie, którym przydaje się to co robię i które zechcą mnie wesprzeć w misji poszerzania horyzontów ludzi z branży IT.

Patronite to tak platforma, na której możesz wspierać twórców internetowych w ich działalności. Mnie możesz wesprzeć kwotą już od 5 zł miesięcznie. Chciałbym oddelegować kilka rzeczy, które wykonuję przy każdym podcaście a zaoszczędzony czas wykorzystać na przygotowanie jeszcze lepszych treści dla Ciebie. Sam jestem patronem kilku twórców internetowych i widzę, że taka pomoc daje dużą satysfakcję obu stronom.

👉Mój profil znajdziesz pod adresem: patronite.pl/porozmawiajmyoit

Pozostańmy w kontakcie:

 

Muzyka użyta w podcaście: „Endless Inspiration” Alex Stoner (posłuchaj)

Transkrypcja podcastu

To jest 171. odcinek podcastu Porozmawiajmy o IT, w którym z moim gościem rozmawiam o języku R. Przypominam, że w poprzednim odcinku rozmawiałem o wyzwaniach branży Data Science. Wszystkie linki oraz transkrypcję dzisiejszej rozmowy znajdziesz pod adresem porozmawiajmyoit.pl/171

Ocena lub recenzja podcastu w Twojej aplikacji jest bardzo cenna, więc nie zapomnij poświęcić na to kilku minut. Od niedawna można wystawiać oceny podcastom w Spotify. Będzie mi bardzo miło, jeśli w ten sposób odwdzięczysz się za treści, które dla Ciebie tworzę. Dziękuję.

Zastanawiasz się nad zmianą pracy, ale gdy przeglądasz oferty na popularnych stronach, to nie jesteś przekonany, czy młody dynamiczny zespół oraz owocowe środy są dla Ciebie? Na szczęście jest solid.jobs – portal z ofertami pracy dla ludzi, którzy chcą wiedzieć, ile będą zarabiać, z jakimi technologiami i nad jakimi projektami będą pracować. Solidne oferty pracy znajdziesz na solid.jobs.

Ja się nazywam Krzysztof Kempiński, a moją misją jest poszerzanie horyzontów ludzi z branży IT. Środkiem do tego jest między innymi ten podcast. Wspierając mnie przez Patronite, pomagasz w realizacji tej misji. Dlatego już dziś wejdź na porozmawiajmyoit.pl/wspieram i sprawdź szczegóły. Ja natomiast bardzo dziękuję moim obecnym patronom. A teraz życzę Ci już miłego słuchania!

Odpalamy!

 

Cześć!

Mój dzisiejszy gość to CEO Appsilon, firmy, która bez inwestora osiągnęła pozycję lidera w domenie R / Shiny. Pasjonat danych, dataviz, Open Source i Tech4Good. Ukończył matematykę i informatykę na Uniwersytecie Warszawskim. Wcześniej pracował w Microsoft w Los Angeles. Moim i Waszym gościem jest Filip Stachura.

Cześć, Filip! Bardzo miło mi gościć Cię w podcaście.

 

Cześć, Krzysztof! Bardzo mi miło być gościem. Witam wszystkich słuchaczy.

 

Dzisiaj z Filipem będziemy rozmawiać o języku, który bardzo szybko pnie się w rankingu popularności języków programowania, o którym to słuchacze kilka razy wspominali w prywatnych wiadomościach do mnie, prosili o odcinek w tym temacie. Będziemy rozmawiać o języku programowania R.

Zanim jednak do tego przejdziemy, to rozpocznijmy, FIlip, standardowo, jak to u mnie w podcaście, czyli pytanie właśnie o to, czy Ty słuchasz podcastów, jeśli tak, to może masz jakieś audycje, o których warto powiedzieć?

 

Tak, słucham podcastów i cały czas poszukuję nowych. Z tych, których ostatnio słucham regularnie, to jest to Raport o stanie świata oraz Technologicznie, Jarosława Kuźniara i Bartosza Pucka. Ostatnio wiele osób poleciło mi też podcast Huberman Lab i to jest też coś, co bardzo mi się spodobało i prawdopodobnie będę go słuchał częściej, ale jestem otwarty i cały czas poszukuję nowych, a także dosyć często pojawiają się też odcinki, które mnie zainteresowały, w innych podcastach. I to też jest super, że można sięgnąć po wiedzę w jakiejś domenie i w formie, która jest bardzo interesująca i przystępna.

 

Dokładnie. Słuchać podcastów warto, występować w podcastach również warto. Myślę, że jest to obustronna korzyść. Nie tylko czerpanie, ale również dawanie, dzielenie się tą wiedzą, którą się posiada.

W tym tonie chciałbym Cię zapytać o początki, o definicję, czym jest język R, jak powstał, do czego służy – żebyśmy mniej więcej nakreślili ramy, w których później będziemy się poruszać.

 

Język R jest językiem trochę innym niż klasyczne języki programowania, dlatego że służy przede wszystkim do analizy statystycznej i do pracy z danymi. Taki był główny cel jego powstania i nadal jest wykorzystywany przede wszystkim w tym celu. Stąd też grupy, które przede wszystkim go używają. Są to z jednej strony naukowcy, nauczyciele statystyki, nauczyciele metod badawczych, czyli wszystkie osoby, które prowadzą research, badania, publikują wyniki tych badań. Z drugiej strony jest to język używany komercyjnie, również do analizy danych. Zarówno do bioinformatyki, do klasycznych metod uczenia maszynowego, jak np. do budowy systemów wspierania decyzji.

Jednocześnie trzeba pamiętać, że R jest językiem programowania w pełnym znaczeniu. Nie jest to język ograniczony do jakiejś powiązanej technologii, jak np. w arkuszach kalkulacyjnych czy w BI, w którym możemy np. osadzać skrypty, ale niekoniecznie wykonać pełen program. To naprawdę jest język programowania, w którym mamy takie same możliwości, jak w każdym innym języku programowania, np. takim jak Python.

Mimo to warto na pewno powiedzieć, że taki główny core, w którym R wyrósł, to są zadania statystyczne, zadania związane np. z czyszczeniem danych, łączeniem zbiorów danych, analizowaniem danych, tworzeniem wykresów. I tu najbardziej widać przewagę tego języka nad innymi technologiami, które można potencjalnie wykorzystać do tego celu.

 

Język R jest językiem trochę innym niż klasyczne języki programowania, dlatego że służy przede wszystkim do analizy statystycznej i do pracy z danymi. Taki był główny cel jego powstania i nadal jest wykorzystywany przede wszystkim w tym celu. Stąd też grupy, które przede wszystkim go używają. Są to z jednej strony naukowcy, nauczyciele statystyki, nauczyciele metod badawczych, czyli wszystkie osoby, które prowadzą research, badania, publikują wyniki tych badań. Z drugiej strony jest to język używany komercyjnie, również do analizy danych. Zarówno do bioinformatyki, do klasycznych metod uczenia maszynowego, jak np. do budowy systemów wspierania decyzji.

 

Myślę, że warto byłoby też powiedzieć, w jakich warunkach powstał, kto go stworzył, bo taki rys historyczny zawsze pokazuje, skąd właściwie się ten język wywodzi, na jaki problem odpowiadał u źródła.

 

Jest to naprawdę dosyć ciekawa historia. Trzeba się cofnąć pół wieku wstecz, do zespołu z Bell Labs. Był to ośrodek innowacji, który pracował nad różnego rodzaju innowacjami. I w tym zespole był również zespół statystyków, który pracował nad językiem o nazwie S. I służył on właśnie do analiz statystycznych. Mówimy tutaj o latach 70. ubiegłego wieku. Język S wzbudzał dużo zainteresowania w gronie statystyków, ale niestety nie był projektem open source. Pojawiła się więc grupa ludzi, w szczególności dwóch statystyków, którzy po pierwsze, mieli imiona na literę R, a po drugie, w nawiązaniu do języka S i jako w pewnym sensie następcy, stworzyli język R i wypuścili go jako open source po raz pierwszy w 1995 roku.

Co ciekawe, większość programów napisana w S działa bez zmian w R, więc jest to w pewnym sensie sukcesja, można ją na pewno porównywać do C i C++. Zresztą sama jednoliterowa nazwa też jest domeną tamtych czasów.

 

Nie ma obecnie zbyt wielu języków programowania tzw. mainstreamowych 07:35 , które by miały na tyle długą historię. Zastanawiam się tylko, czy faktycznie istniało jakieś realne zapotrzebowanie na nowy język, czy te rozwiązania, które były dostępne, były niewystarczające? Podstawowe pytanie jest takie, czy on powstał, żeby zaspokoić jakąś potrzebę, czy też powstał jakom kolejne podejście do rozwiązania tego samego problemu?

 

Myślę, że z jednej strony to, co wyróżnia R, to na pewno to, że jest open source. Jeżeli spojrzymy na języki służące do analizy danych, to jest tam dużo technologii. I sam, jako student matematyki, używałem np. na wyjazdach, czy to z Polskiej Akademii Nauk, czy pracy na studiach np. Matlaba. Tylko są to technologie komercyjne, co drastycznie tak naprawdę utrudnia prowadzenie analiz z wykorzystaniem tej technologii, ponieważ pierwsze co, to trzeba pokonać problem zdobycia licencji.

R jako język jest całkowicie darmowy. Możemy go pobrać i możemy jeszcze dzisiaj pisać kod i analizować dane. I każdy na świecie może to zrobić. W przypadku języków takich jak Matlab czy wspomniany S nie było to możliwe i ograniczało się do dużych instytucji, które kupowały takie oprogramowanie dla swoich zespołów naukowców. Myślę, że tutaj główną potrzebą była możliwość kształcenia tanio studentów, którzy potem przechodzą na rynek pracy i znają już narzędzie, z którym chcą pracować bez konieczności kupowania drogiej licencji.

 

Teraz można powiedzieć, że praktycznie większość oprogramowania działającego komercyjnie w jakiś sposób korzysta z tego komponentu open source. Nawet NASA wykorzystuje tego typu rozwiązania, więc to jest znak naszych czasów, że w ten sposób oprogramowanie dostaje dodatkowo możliwość rozwoju poprzez community.

 

Jeżeli mogę, Krzysztof, wtrącić, to myślę, że ciekawostką jest również to, że NASA także używa R i technologii Shiny, o której będziemy dzisiaj rozmawiać.

 

Skoro mówimy o technologiach, to chciałbym Cię jeszcze zapytać o nieco głębsze podstawy technologiczne tego języka. Czy to jest język interpretowany, kompilowany, obiektowy, funkcyjny? Gdybyś mógł powiedzieć, na jakich pryncypiach on się osadza.

 

Jest to język interpretowany. Jeżeli chodzi o możliwości, o performance, to jest zbliżony do języka Python ze względu na to, że jest interpretowany, działają podobne reguły gry. Można rozszerzać w pakiety, wsadzając tam elementy C++ i Fortrana , co pewnie dzisiaj nie jest zbyt popularnym rozwiązaniem, ale w tamtych czasach, gdy powstawał R, bardzo dużo rozwiązań numerycznych było już napisanych w Fortranie, więc R po prostu z nich czerpał, zamiast je reimplementować, ale na pewno jest to język wolniejszy pod względem performance niż np. Julia, która jest kolejną alternatywą do pracy z danymi.

To, co jest gigantyczną przewagą R przed Julią i Pythonem, to że wszystkie te pakiety zostały przetestowane zarówno teoretycznie, jak i w praktyce wzdłuż i wszerz. I nieraz zdarzało się w naszych projektach analitycznych, że w Pythonie jakieś elementy statystyczne, analityczne po prostu nie działają w przypadkach brzegowych, a w R wszystko działa. Dlatego że naukowcy to wszystko sprawdzili o wiele więcej razy niż w przypadku bibliotek na Pythonie, które zostały zaimplementowane na szybko przez mniejsze zespoły, czasami przez ludzi, którzy robili coś dla siebie i wypuścili to jako open source – co jest oczywiście świetne. Mnogość rozwiązań w Pythonie, która jest dostępna, cieszy, ale w Pythonie to, co mamy świetnie przetestowane, to rozwiązania emelowe. Jeżeli chodzi o klasyczną analizę danych i statystykę, to R jest o wiele bardziej solidnym narzędziem, dającym przewagę. Julia jest osobnym bytem, który ma dużo własnych problemów, jeżeli chodzi o jakość, o wiele więcej niż Python. Jest za to bardzo szybka.

Wracając do paradygmatów, R jest językiem, który łączy paradygmaty. Można w nim projektować obiektowo, jest wsparcie dla obiektowości, ale nie trzeba. Jest wsparcie dla funkcjonowania funkcyjnego, ale nie trzeba tak programować. Osobiście jestem wielkim fanem programowania funkcyjnego i ogólnie w naszej organizacji dużo programuje się funkcyjnie, ale jest to wyłącznie możliwość. Jeżeli ktoś chce programować czysto imperatywnie, to może. I większość osób początkujących pisze czysto imperatywne skrypty w R i to im wystarcza. Ale pogłębiając wiedzę i skomplikowanie swoich projektów, można używać zarówno programowania obiektowego, jak i funkcyjnego.

 

Mam takie wrażenie, że to nastawienie na jakość, ta duża waga przywiązywana do stabilności tych rozwiązań jest kluczowa w rozwoju samego języka. Chciałbym Cię zapytać, kto obecnie rozwija język R i czy tam społeczność też ma duże znaczenie jak w przypadku innych popularnych języków programowania?

 

Tak. Filary są dwa, a może nawet jest ich więcej. Pierwszy filar jest oficjalny. Oficjalnie za język i jego rozwój odpowiada R Development Core Team, w skład którego wchodzą osoby z wieloletnim doświadczeniem w pracy z tym językiem. I to są osoby, które np. ustalają, co znajdzie się w specyfikacji języka w wersji 4.0 i dodają np. do języka wsparcie dla Lambdy, dla tzw. PIP-ów, które są w R specjalnymi operatorami wzorowanymi na tym, jak funkcyjnie programuje się w Haskellu. Więc z jednej strony do języka dochodzą może niewielkie, ale na pewno istotne zmiany, które sprawiają, że programowanie w tym języku jest po prostu łatwiejsze. Te zmiany następują stosunkowo powoli. Na pewno nie jest to język, który rozwija się równie szybko, jak Java Script przez ostatnią dekadę, ale jest oparty na bardzo solidnych fundamentach i w dużej mierze bazuje na potrzebach użytkowników.

Żeby jeszcze zamknąć rozdział z R Development Core Teamem, ten zespół utworzył również coś, co nazywa się R Foundation, i on zbiera środki finansowe na rozwój języka, jak i rozwój i wspieranie niektórych inicjatyw w community.

Teraz przechodzimy do drugiego, ogromnie istotnego i mocnego filaru rozwoju tego języka. Jest to rozwój przez pakiety.

W R nie mówimy o bibliotekach, mówimy o pakietach. Pozwalają one mocno ingerować w język. Właśnie np. PIP-y, o których wspominałem przed chwilą, wzorowane na Haskellu, zostały zaimplementowane jako operatory infiksowe i nagle zyskały gigantyczną popularność w analizie danych – upraszczając to, jak myśli się o analizie, czyszczeniu, łączeniu różnych zbiorów danych, wyciąganiu z nich wniosków.

I teraz, jeśli chodzi o to, kto tworzy pakiety, to jest tu naprawdę bardzo szeroki przekrój. Mamy tu np. średniej wielkości organizacje, takie jak RStudio czy Appsilon. RStudio jest firmą, która bardzo mocno wyrosła z open source i zatrudnia niektórych czołowych kontrybutorów i twórców pakietów open source, m.in. słynnego Hadleya Wickhama, który jest twórcą szeregu pakietów, o których będę mówił. RStudio jest też odpowiedzialne za stworzenie frameworka Shiny, który jest na licencji GPL, jest frameworkiem open source i pozwala tworzyć dashboardy i systemy wspierania decyzji. Aplikacje webowe, generalnie, z wykorzystaniem R.

Ale również widzimy trend tworzenia pakietów przez pojedyncze osoby czy zespoły w bardzo dużych organizacjach. Czyli mamy np. dużą firmę farmaceutyczną i tam mały zespół opracował coś ciekawego, i dzieli się tym z community. I coraz więcej jest sytuacji, że ludzie dostają zgody w dużych organizacjach, aby podzielić się tym z całą społecznością.

Kolejny ważny trend to zespoły naukowców. Mamy np. naukowców prowadzących badania nad komórkami rakowymi i oni wypuszczają pakiety również jako open source, które służą np. do analizy komórek rakowych albo do innych badań genetycznych. Zresztą bioinformatyka jest bardzo mocno powiązana z językiem R. Więc to jest kolejna grupa. Uniwersytety, naukowcy i nawet studenci tworzą różne pakiety. Niektóre z nich zyskują popularność, inne nie, ale każdy może stworzyć swój pakiet, kontrybuować do istniejących i oczywiście, co też jest ważne, wrzucić do największego repozytorium pakietów, który nazywa się CRAN i jest ogólnodostępny.

Jeżeli Twój pakiet pojawi się na CRAN, to każdy, używając konsoli R, będzie mógł go bardzo łatwo zainstalować. Więc w tym sensie jest to też bardzo uproszczone. Jeżeli chodzi o zarządzanie systemem pakietów, jest to mocno wbudowane w język i nie mamy tutaj takiej konkurencji, jak w niektórych językach programowania, że w jednym projekcie mamy inny system do zarządzania pakietami, w innym jeszcze inny.

Myślę, że również ważnym trendem w R jest to, że coraz więcej pakietów jest pisanych przez programistów. Czyli nie tylko naukowców, statystyków, bioinformatyków, ale też programistów tak jak w Appsilonie w naszym wypadku. My również tworzymy sporo pakietów i to, co wnosimy nowego do języka, w którym jest tak dużo osób ze zróżnicowanymi backgroundami, to jest ten background programistyczny i bardzo solidne podejście do jakości tworzenia oprogramowania, testowania oprogramowania w sposób automatyczny tych wszystkich dobrych praktyk, których sami się nauczyliśmy na studiach i później, zdobywając doświadczenie w innych firmach

 

Myślę, że takie solidne podejście jest potrzebne, w pewnym momencie jest wręcz wymagane, żeby wznieść rozwój języka na wyższy poziom. Ale chciałem Cię jeszcze zapytać, czy ktoś finansowo wspiera rozwój języka R? Bo o ile faktycznie open source to jest jak gdyby jedna rzecz, pakiety tworzone albo hobbystycznie przez pasjonatów, albo przez firmy, które oddają do społeczności tę wartość w ten sposób, o tyle wspomniałeś o R Development Core Team – czy to jest w jakiś sposób grupa, która otrzymuje środki z zewnątrz, czy ktoś tutaj kontrybuuje do rozwoju również finansowo?

 

Tak, można płacić coroczne składki na R Foundation, które z kolei zostało założone i wspiera R Development Core Team. Te składki są niezwykle niskie i na pewno nie finansują rozwoju języka. Większość z tych osób, które pracują w ramach R Development Core Teamu nad rozwojem języka, pracuje również albo akademicko, albo w bardzo dużych organizacjach, takich jak koncerny farmaceutyczne w Stanach, albo firmy takie jak Microsoft czy Google.

To są również firmy, które są częścią czegoś, o czym jeszcze nie wspominałem, ale również istnieje, tj. R Consortium. Jest to organizacja non profit (nie jestem tego zupełnie pewny, ale tak mi się wydaje) i tam faktycznie sponsorami są duże i średnie firmy, które również przyznają granty na rozwój niektórych pakietów open source czy rozwoju infrastruktury związanej np. z testowaniem pakietów, czy na bardzo interesujące inicjatywy w community, skupiające się np. na rozwoju diversity, equity and inclusion, więc tutaj wspieranie np. underrepresented groups.

Więc jest jeszcze taka organizacja, jak R Consortium. To jest ważne. I to, co na pewno trzeba też wymienić w ramach rozwoju tego języka i technologii, to to, jak ciekawą firmą jest RStudio, które ma szereg produktów komercyjnych, za których licencje płacą głównie bardzo duże organizacje, a dzięki temu druga połowa firmy, która nie rozwija produktów komercyjnych, pracuje nad open source i rozwojem ekosystemu służącego do analizy danych, do tworzenia systemów wspierania decyzji itd. Tego wszystkiego, co robi RStudio.

Więc wydaje mi się, że jest to dosyć wyjątkowy model, który my, jako Appsilon w pewny sensie też staramy się naśladować, bo uważamy go za inspirujący, w którym jednocześnie organizacja sprzedaje produkty komercyjne, ale dużą część przychodu reinwestuje w rozwój open source powiązanego z tą technologią.

 

Myślę, że to, co powiedziałeś, może być częściowo odpowiedzią na kolejne pytanie, ale chciałbym trochę poszerzyć ten wątek. Otóż przed naszym spotkaniem spojrzałem sobie w indeks popularności języków programowania Tiobe i okazuje się, że język R niedawno wskoczył do pierwszej dwudziestki. Chciałbym Cię zapytać, skąd wynika popularność języka, który bądź co bądź jest językiem wąskiego zastosowania.

 

Myślę, że tak naprawdę, żeby odpowiedzieć na to pytanie, dobrze jest wrócić do jego korzeni, czyli do języka S. Wtedy zobaczymy, że w trakcie, kiedy S był tworzony w Bell Labs, jeden z jego twórców określił, że jest to język, w którym przekształcanie pomysłów w oprogramowanie jest szybkie i wierne. I to jest bardzo ciekawe, ponieważ to faktycznie działa. Jestem osobą, która jednocześnie skończyła studia informatyczne i studia z matematyki stosowanej. I to właśnie na zajęciach ze statystyki poznałem język R, a jednocześnie na studiach informatycznych uczyłem się Haskella, C, Javy, Prologa i wszystkich innych interesujących paradygmatów, ale na studiach informatycznych nie wiem, czy w ogóle miałem jakąś styczność z R jako językiem. Być może, ale na pewno nie był to jeden z ważnych języków na studiach informatycznych.

I to, co mnie urzekło w języku R, to to, jak szybko jesteśmy w stanie osiągać rezultaty. Jak szybko jesteśmy w stanie zrobić przyzwoity, elegancki, dobrze wyglądający wykres. Jak szybko jesteśmy w stanie pobrać i wyczyścić dane i zbudować na nich coś sensownego, a już zupełnym dla mnie zaskoczeniem było to, jak szybko jesteśmy w stanie zbudować aplikację webową, którą będą posługiwać się eksperci domenowi, aby zrobić z tym coś sensownego. Zresztą czasami też budowałem takie aplikacje sam dla siebie, bo było to po prostu na tyle szybkie, że bardziej opłacało mi się zrobić dla siebie narzędzie, niż dłubać coś w arkuszu kalkulacyjnym.

Więc myślę, że jedna z tych rzeczy, która sprawia, że R jest tak popularny, to właśnie to nastawienie na szybkie rezultaty. I teraz: co to daje, że jesteśmy w stanie osiągać rezultaty szybko?

Po pierwsze, to bardzo upraszcza wdrażanie się nowych osób do języka. Bo jeżeli jesteśmy w stanie im wysłać 10 albo 20 linii kodu, albo napisać tutorial, który zajmuje 10 albo 20 linii, i wytłumaczyć, co tu się dzieje, to bardzo wiele osób sobie z tym poradzi. I te osoby nie muszą spędzać pięciu lat na studiach, aby zrozumieć, co tam dokładnie się dzieje. To jest język stworzony dla naukowców. I to jest takie grono bystrych ludzi, którzy chcą osiągnąć swoje rezultaty, chcą np. sprawdzić, że wyniki ich badań są wiarygodne. I jeżeli my im pokażemy, jak to zrobić, wytłumaczymy, która część jest odpowiedzialna za co, to okazuje się, że oni są w stanie to powtórzyć na nowym zbiorze danych albo następnym razem chcą zrobić wizualizację i widzą, że są w stanie ją napisać w pięć albo dziesięć linii. I znowu, i to działa. I są ciekawi, jak ją rozwinąć kolejnym razem. I ta nauka postępuje bardzo organicznie.

Czyli mamy bardzo silny język pod względem ekspresji, łatwo jest wyrażać rzeczy i jest niski próg wejścia. Myślę, że to jest jeden z fundamentalnych powodów, dlaczego R jest popularny coraz bardziej.

Kolejna rzecz, która wpływa na popularność języka R, to, że jeżeli przejdziemy sobie przez większość uniwersytetów w dzisiejszych czasach i spojrzymy na to, jak wygląda kurs statystyki, który na bardzo wielu kierunkach jest obowiązkowy (np. na ekonomii, biologii, ale też na psychologii), mamy bardzo szeroki przekrój ludzi, którzy w pewnym momencie zetknęli się z R i udowodnili sobie, że potrafią programować.

 

Czyli mamy bardzo silny język pod względem ekspresji, łatwo jest wyrażać rzeczy i jest niski próg wejścia. Myślę, że to jest jeden z fundamentalnych powodów, dlaczego R jest popularny coraz bardziej.

 

Ciekawe. Czyli ten developer experience też jest istotny. To, że da się szybko osiągnąć rezultaty, że próg wejścia nie jest zbyt wysoki. To się przekłada później na zyskiwanie na popularności danego języka.

Ja natomiast chciałbym Cię zapytać o konkurentów w tej technologii, bo z tego co pamiętam, miałem też na studiach Matlaba. Nie do końca się polubiliśmy, ale to inna historia, natomiast z tego, co tutaj mówiłeś, z tych zastosowań, potrafię sobie wyobrazić, że część z nich da się również zrobić w takim Matlabie. Więc gdybyś mógł nakreślić, z jakimi technologiami R konkuruje.

 

Może zacznijmy od tego Matlaba. Pierwsza grupa to będą komercyjne pakiety statystyczne. I tu mamy całą gamę takich rozwiązań, zaczynając od SAS (nie należy mylić tego z rozwinięciem CSS, czyli to nie jest technologia webowa), później mamy SPSS, Matlab, Stata. Jest tak naprawdę cała rodzina komercyjnych rozwiązań, które nadal są popularne w niektórych domenach, branżach czy środowiskach naukowych. Myślę, że fundamentalna różnicą jest to, że R jest dostępny bezpłatni na licencji wolnego oprogramowania. Mamy wpływ na to, jakie funkcje są dostępne, możemy go rozszerzać dowolnie, jak chcemy i jeżeli komercyjnie chcemy użyć innego rozwiązania do analizy danych, np. do klasyfikacji, klasteryzacji, jakiegokolwiek innego zadania, które przed nami stoi, to nie ma absolutnie żadnych przeciwwskazań i możemy to zrobić, jeżeli tylko mamy umiejętności.

Możemy też bardzo łatwo integrować się z innymi rozwiązaniami. Więc to plus koszt licencji to moim zdaniem główne zalety na korzyść R. Oczywiście istnieją też wady, np. trzeba się zastanowić, na jakich zasadach możemy używać i komercjalizować rozwiązania stworzone w R, co z supportem, jeżeli jesteśmy firmą. Ale są to tak naprawdę pytania niewyróżniające R. Jeżeli używamy jakiegokolwiek rozwiązania open source, to będziemy musieli sobie na te pytania odpowiedzieć jako organizacja.

Druga grupa rozwiązań, z którymi konkuruje R, to są oczywiście najbardziej popularne na świecie rozwiązania, czyli arkusze kalkulacyjne. To też jest rozwiązanie, które jest używane przez bardzo szerokie grono ludzi, które myśli, że nie potrafi programować, ale de facto w arkuszach kalkulacyjnych programuje. W bardzo specyficzny sposób, ale na pewno w ramach niektórych definicji możemy to zakwalifikować jako programowanie. I BI – myślę, że to też jest kolejny podobny, powiedzmy, zgrupowany z arkuszami kalkulacyjnymi obszar.

I teraz, jakie są różnice i podobieństwa? Myślę, że podstawowa różnica i wynikająca z niej przewaga to to, że R jest prawdziwym językiem programowania, tzn. możemy zadbać o takie rzeczy, jak reproducibility. Możemy upewnić się, że ten sam skrypt odpalamy w kontenerze, w chmurze, da rok czy dwa lata później dokładnie te same rezultaty. Możemy te pakiety przetestować. Możemy je testować automatycznie. Możemy dowolnie rozszerzać nasze programy, aplikacje, analizy, nie jesteśmy tak jak w BI ograniczeni przez platformę, która narzuca nam, co możemy zrobić, a czego nie.

Więc mamy pełną kontrolę, możliwość kontrolowania jakości, mamy rozłączenie danych od logiki (myślę, że to też jest bardzo ważne). I arkusze kalkulacyjne, i BI na pewno są świetnymi rozwiązaniami w niektórych przypadkach, ale kiedy traktujemy rzeczy bardzo serio, to nie powinniśmy ich używać, albo w bardzo ograniczonej liczbie przypadków. Trzeba patrzeć na ryzyko z tym związane.

Trzecia grupa, której nie można pominąć, to oczywiście inne języki programowania, o których już mówiłem, szczególnie te, które również służą do analizy danych. W dzisiejszych czasach jest to zdecydowanie Python jako główny konkurent, a później aspirujące języki, takie jak Julia. Julia jest jeszcze bardzo, bardzo daleko od mainstreamu i myślę, że przynajmniej przez pewien czas tak będzie (a może nigdy się nie wybije). W niektórych domenowych dziedzinach mogą to też być jakieś konkretne frameworki. Czyli np. jeżeli chodzi o wizualizację danych, to w pewnym sensie można by było powiedzieć, że można nakreślić D3.js jako konkurencję dla niektórych rozwiązań w R. Myślę jednak, że to są inne zastosowania i trochę inne cele, jakie sobie stawiamy przed takimi wizualizacjami. Ale to są przede wszystkim te trzy klastry, które ja widzę.

 

Myślę sobie, że nawet najgenialniejszy język programowania w dzisiejszych czasach jakoś tam się nie przebije, jeśli zabraknie dwóch rzeczy, mianowicie ekosystemu i społeczności. Właśnie, jakie najpopularniejsze biblioteki z językiem R obecnie występują? Jak wygląda community? Myślę, że to by nam dopełniło tego obrazu, gdybyś mógł odpowiedzieć na to pytanie.

 

Postaram się tutaj punkt po punkcie, bo jest tego sporo, i dzięki temu jednym zdaniem o każdym z nich. Po pierwsze mamy ggplot2. To jest pakiet stworzony początkowo przed Hadleya i służy do wizualizacji danych. Jest niezwykle silny i w wielu obszarach jest standardem w dzisiejszych czasach.

Później mamy cały ekosystem sam w sobie, który nazywa się tidyverse, również zapoczątkowany przez Hadleya i wspierany przez RStudio. I tutaj mamy m.in. takie pakiety, jak dplyr czy tibble, które służą to analizy danych, do czyszczenia danych, do łączenia różnych zbiorów danych. I tutaj nie będę wchodził w szczegóły, ale tidyverse na pewno jest bardzo ważnym punktem na mapie.

Alternatywą dla dplyr i podejścia tidyverse jest pakiet data.table, który również służy do reprezentowania tak zwanych ramek danych, czyli tego jak zazwyczaj reprezentowane są dane w formie tabelarycznej. I data.table jest bardzo szybkim pakietem. Pisze się w nim w trochę inny sposób, trochę inny sposób wyrazu, ale ma swoje grono fanów i ludzi, którzy wierzą, że data.table jest właściwym podejściem.

Na pewno bardzo ważnym pakietem jest Shiny. Shiny jest bardzo popularny i to jest naprawdę niesamowite, kiedy widzi się ludzi, którzy nie mieli nigdy styczności z programowaniem, a którzy tworzą aplikacje webowe. I co więcej, mają użytkowników, którzy używają tych aplikacji regularnie. Więc Shiny jest zupełnie wyjątkowym frameworkiem reaktywnym, jeżeli programował w technologii Meteor JS. Był on dosyć popularnym frameworkiem kilka lat temu w środowiskach startowych. Shiny właśnie był bazowany na Mitj Meteor JS. Paradoksem jest to, że Meteor JS już dzisiaj nie istnieje, a Shiny ma się świetnie i bardzo prężnie się rozwija.

Mamy cały zestaw pakietów służących to tworzenia raportów. Dwa główne obecnie to jest rmarkdown i quarto. Quarto jest ciekawe z tego względu, że tworzyć raporty korzystające jednocześnie wielu języków, tzw. polyglot programming, czyli możemy napisać fragment, który jest napisany w R, jest fragment, który jest w Pythonie, i fragment, który wizualizuje te dane w d3.js w Java Scripcie.

Mamy zestaw pakietów związanych z uczeniem maszynowym, głównie klasycznym. Takie trzy pakiety to na pewno xgboost, caret i mlr3, to jest tak naprawdę następca wcześniejszego pakietu mlr, który jako skrót ma ml4r.

I później możemy chodzić coraz głębiej. Na pewno ważnym też repozytorium, tak jak wspominałem o CRAN-ie, który jest głównym repozytorium pakietów, to drugim bardzo ciekawym jest Bioconductor. Gromadzi on pakiety związane z pakietami bioinformatycznymi, służącymi do analizy danych powiązanych z szeroko rozumianą genetyką. Bo tutaj wchodzimy też głębiej w translacje genów, czyli analizę danych RNA, proteomiki itd.

Czy kolejne, takie jak tidyverse, domenowe ekosystemy pakietów, np. istnieje taki ekosystem, który nazywa się pharmaverse, i on gromadzi pakiety wyłącznie związane z testami klinicznymi i raportowaniem z tym związanym. Więc myślę, że tak top-down, to na tym down można by było wymieniać jeszcze dużo, ale takie top 3 moje, to byłby ggplot2, Shiny i dplyr, jako coś, co wypada poznać, jeżeli używa się R i jest to fajny punkt startowy do nauki też.

 

Wiemy już mniej więcej, w co warto spojrzeć, jeśli chodzi o biblioteki. Gdybyś jeszcze mógł słówko na temat community powiedzieć.

 

Tak, oczywiście. Jeżeli chodzi o wydarzenia, to na szczęście jest ich bardzo dużo. Często teraz przechodzą w model hybrydowy ze względu na to, co przeżyliśmy w pandemii. Zacznę od konferencji, która wyrasta głównie z tego środowiska akademickiego i jest organizowana przez R Foundation. Jest to konferencja useR! i ona odbywa się na zmianę w Stanach i w Europie. W latach, w których odbywa się w Stanach Zjednoczonych organizowana jest również konferencja “European R Users Meeting”, czyli po polsku eRum. I ona jest organizowana w Europie.

Drugą ważną konferencją na mapie wydarzeń jest rstudio::conf, czyli konferencja coroczna , organizowana przez RStudio, która głównie skupia się na pakietach open source tworzonych przez RStudio, ale także na wykorzystaniu komercyjnych produktów, tworzonych przez tę organizację.

Mamy szereg kolejnych konferencji, trochę bardziej tematycznych, poświęconych np. nauce R albo wykorzystania komercyjnego tego języka, np. WhyR, SatRdays, EARL.

Jeżeli chodzi o Shiny, Appsilon w zeszłym roku pierwszy raz zorganizował darmową i zdalną konferencję dla ponad 2,5 tys. osób i to była konferencja w całości poświęcona temu frameworkowi i aplikacjom tworzonym z wykorzystaniem Shiny. Okazała się całkiem dużym sukcesem i już wiemy, że chcemy ją organizować co roku. A nagrania upubliczniliśmy za darmo na naszym kanale na YouTubie.

Mamy też znowu konferencje czysto tematyczne, czyli np. jest konferencja R/Pharma, R/Medicine, R/Finance, które skupiają sięna wykorzystaniu języka w konkretnych domenach i też są bardzo interesujące.

I teraz, bardziej wchodząc już w same communities, na świecie mamy prawie 900 grup użytkowników R, w różnych miastach całego świata. Mamy ponad 200 chapterów R-ladies. Jest to organizacja, która wspiera rozwój kobiet i innych underrepresented groups używających języka R.

Mamy RStudio community, które jest stworzone i zarządzane przez RStudio, które też jest otwarte. To jest m.in. forum internetowe, ale też meet upy, które się regularnie odbywają, również tematyczne, gdzie zapraszani są eksperci i toczą się dyskusje na różne tematy.

Jest również Bioconductor community, czyli community poświęcone analizie danych genetycznych.

I może ostatnie, które wymienię tutaj, to jest R4DS Online Learning Community – kanał na Slacku z ponad 13 tys. użytkownikami wymieniającymi się wiedzą na każdym poziomie doświadczeń.

Ostatnie dwie inicjatywy ciekawe, warte uwagi to są newslettery. I to są R weekly i Shiny weekly, które tygodniowo podsumowują nam najciekawsze wydarzenia, zmiany, nowe pakiety, które pojawiają się, przykłady zastosowań języka lub frameworku do różnych zastosowań.

Więc myślę, że jest to naprawdę bardzo szeroka gama, a także mamy własne podcasty i wideoblogi, ale w to już nie będę wchodził.

 

Myślę, że wszystkie te materiały, newslettery, konferencje, podcasty itd. są doskonałym źródłem wiedzy, inspiracji, poznania ludzi, którzy są już w tę technologię gdzieś tam zanurzeni. Gdyby ktoś chciał więcej, gdyby ktoś chciał rozpocząć bardziej na serio przygodę z językiem R, to jakie materiały, miejsca, sposoby byś tej osobie polecił, żeby się nauczyć języka R?

 

To jest trudne pytanie, ponieważ sam swoją przygodę z językiem i z frameworkiem zaczynałem już dosyć dawno temu. Ja zaczynałem od nauki z materiałów prof. Przemysława Biecka (pozdrawiam, Przemku, jeśli nas słuchasz) i zarówno te książki, jak i w szczególności kurs Pogromców danych mogę polecić z ręką na sercu, ponieważ sam nauczyłem z tych materiałów dwie osoby, które nie miały żadnego backgroundu programistycznego, więc wiem, że jest to możliwe. I te osoby pracują z R i dostały pracę jako analitycy. Więc to na pewno jest coś, co działa, ale tych materiałów jest o wiele więcej. Są książki Hadleya Wickhama, które reprezentują bardzo wysoki poziom i na pewno od niektórych z nich można zacząć. 

Jeżeli chodzi zaś o porady, co można robić, to myślę, że taki pierwszy punkt, który może być ciekawy, to usprawnienie czegoś, co robimy w Excelu. Jeżeli np. w pracy mamy jakieś raporty, które pojawiają się regularnie, może być bardzo ciekawe zautomatyzować je z wykorzystaniem R i wysłać do wszystkich zainteresowanych taki raport na maila, aby działo się to bez żadnej pracy manualnej. Ale to może być coś, co robimy w domu, np. jakieś proste analizy naszych finansów domowych, jakikolwiek zbiór danych nas interesuje. 

Widziałem fantastyczne analizy korzystające z danych zbieranych przez aplikacje fitnessowe. Czyli jeżeli ktoś zbiera swoje dane z biegów i chciałby zobaczyć, jak to wygląda w skali miesiąca lub roku na mapie, albo przeanalizować dystans, jaki przebiega, albo czemu w jakieś tygodnie może jest ciężko wyjść pobiegać, to może być bardzo ciekawe i powiązane z naszą pasją.

Mogę też polecić naszego bloga i nasze materiały, np. na YouTubie, szczególnie dla osób, które chcą się nauczyć frameworku Shiny i tworzyć np. systemy wspierania decyzji. To są rzeczy, które na szybko przychodzą mi do głowy i myślę, że takie podejście też learn by the wing to w R jest faktycznie bardzo możliwe, bo nie potrzeba tego kodu dużo do jakichś pierwszych rezultatów i to buduje motywację.

 

Dla osób, które chciałyby coś więcej, które chciałyby być może swoją karierę pokierować w tym kierunku, powiedz, proszę, jak wygląda rynek pracy osób programujących w języku R. Gdzie szukać ofert pracy? Jak w porównaniu do innych języków wypada konkurencyjność tych ofert?

 

Na pewno jest to bardzo dobry sposób na wejście do świata IT, bo takich historii znam bardzo dużo. Zresztą nam też zdarza się zatrudniać doktorantów, którzy stwierdzili, że nie chcą kontynuować kariery naukowej albo zdarza nam się zatrudniać ludzi, którzy są bardzo zdolnymi samoukami i sami nauczyli się wielu rzeczy. I są w stanie udowodnić tę wiedzę w procesie rekrutacji. Więc to jest na pewno bardzo fajne. 

Jeżeli chodzi o firmy, które zatrudniają analityków ze znajomością R, to jest ich naprawdę bardzo dużo, o wiele więcej, niż może się dzisiaj wydawać naszym słuchaczom. To widać po konferencjach, na które przychodzimy, i dlatego warto też o tym mówić, że np. takie organizacje jak NASA używają R. My jako firma pracujemy głównie z firmami z Fortune 500. W Polsce jeżeli pójdziemy na eventy R, to spotkamy tam analityków pracujących w dużych bankach, w bardzo dużych firmach FMCG, w bardzo dużych consultingach polskich, więc to jest ciekawe zjawisko, ponieważ bardzo popularny język, który zatrudnia bardzo wykwalifikowanych analityków, jest np. na job boardach nadal całkowicie pomijany. 

Więc szukanie pracy w R jest trochę inne niż szukanie pracy w Pythonie czy Java Script. Myślę, że warto pojawić się na wydarzeniach związanych z R, również tych wirtualnych, albo przynajmniej zobaczyć, kto jest sponsorem i z jakich firm są prelegenci. Warto śledzić to, co się dzieje na LinkedInie, na Twitterze, aby widzieć, kto tej technologii używa i próbować budować też relacje, ponieważ przez klasyczne job boardy IT będzie nam trudno znaleźć taką pracę. Ale zapewniam, że firmy takich analityków szukają i zatrudniają. Po prostu jest to w tych organizacjach umiejscowione trochę inaczej niż klasyczne zespoły programistów.

 

Więc szukanie pracy w R jest trochę inne niż szukanie pracy w Pythonie czy Java Script. Myślę, że warto pojawić się na wydarzeniach związanych z R, również tych wirtualnych, albo przynajmniej zobaczyć, kto jest sponsorem i z jakich firm są prelegenci. Warto śledzić to, co się dzieje na LinkedInie, na Twitterze, aby widzieć, kto tej technologii używa i próbować budować też relacje, ponieważ przez klasyczne job boardy IT będzie nam trudno znaleźć taką pracę. Ale zapewniam, że firmy takich analityków szukają i zatrudniają. Po prostu jest to w tych organizacjach umiejscowione trochę inaczej niż klasyczne zespoły programistów.

 

Rozumiem, dlatego też sposób szukania musi być odpowiednio inny. Myślę, że to jest kwestia czasu, kiedy świadomość, że taki język, bądź co bądź, mainstreamowy, funkcjonuje i że oferty pracy na tych klasycznych job boardach będą również taki filtr, jak język R gdzieś tam miały.

Myślę, że tutaj bardzo fajnie wprowadziłeś i powiedziałeś, gdzie mniej więcej ten język jest obecny, skąd się wywodzi. Warto byłoby jeszcze na koniec spojrzeć, w którym kierunku zmierza. Jaka przyszłość wg Ciebie czeka język R?

 

To jest bardzo trudne do wróżenia, ale jeżeli ja bym miał coś obstawiać, to wydaje mi się, że Julia, mimo że jest bardzo ciekawym eksperymentem, nie wybije się i nie zastąpi tej pewnej dynamiki między R i Pythonem, która jest obecnie. Może pojawi się jakiś inny gracz. Na pewno to, co można zaobserwować, i ja tak to widzę, to że open source będzie zjadać bardzo dużo komercyjnego Software’u, na przykład wypierać takie rozwiązania jak SAS jeśli chodzi np. o testy kliniczne. Zdecydowana większość leków jest raportowana do FDA w celu autoryzacji z wykorzystaniem SAS, ale widać niezwykle wielką chęć, aby to zmienić i wykorzystywać do tego rozwiązania open source. Stoją za tym różne wyzwania technologiczne, które trzeba rozwiązać, aby to się wydarzyło, ale obstawiałbym, że to się wydarzy i to w dosyć niedalekiej przyszłości.

Myślę, że powiązanym elementem będzie wypieranie tych komercyjnych zastosowań dalej ze środowisk naukowych. Takich rozwiązań, jak Matlab, że będą one jeszcze rzadziej nauczane w porównaniu do R, a w konsekwencji jeszcze rzadziej wykorzystywane w procesie analiz i publikowania. Miejmy nadzieję, że ten ruch open science i dzielenia się faktycznie analizami, idealnie danymi pozwoli nam wznieść naukę na jeszcze wyższy poziom i upewniać się, że te eksperymenty są reprodukowalne i że bazujemy na faktycznej wiedzy, która dzięki temu powstaje.

Z ciekawych jeszcze rzeczy, które się dzieją, to tak jak w innych językach web assembly moim zdaniem to jeszcze bardziej zmniejszy próg wejścia to, że każdy będzie mógł użyć R bezpośrednio w przeglądarce, nawet w bardzo odległych miejscach świata. Szczególnie dla osób, które mało programowały dotychczas, albo nie programowały nigdy, w połączeniu z tymi szybkimi rezultatami to może być bardzo ciekawe, jak będziemy mogli uczyć ludzi wykorzystywać ten język do tego, aby zrobili coś szybko. I to, myślę, będzie budowało ekscytację, będzie zachęcać do nauki i budować ich kompetencje. 

Myślę też, że stopniowe, większe przenikanie się z Pythonem i Java Script to jest coś, co też widać jako trend. I to jest potrzebne, ponieważ te technologie razem są o wiele silniejsze, niż rywalizując ze sobą. I część programistów to widzi i chce z tego korzystać i budować rozwiązania, które używają najlepszych narzędzi do odpowiednich zadań, a niekoniecznie w całości kopiować to, co jest w innych językach i w pewnym sensie wymyślać koło na nowo.

 

Myślę też, że stopniowe, większe przenikanie się z Pythonem i Java Script to jest coś, co też widać jako trend. I to jest potrzebne, ponieważ te technologie razem są o wiele silniejsze, niż rywalizując ze sobą. I część programistów to widzi i chce z tego korzystać i budować rozwiązania, które używają najlepszych narzędzi do odpowiednich zadań, a niekoniecznie w całości kopiować to, co jest w innych językach i w pewnym sensie wymyślać koło na nowo.

 

Brzmi to naprawdę dobrze. A w dzisiejszym odcinku podcastu o języku programowania R opowiadał Filip Stachura z firmy Appsilon.

Filip, bardzo Ci dziękuję za poświęcony czas, za rozmowę.

 

To ja dziękuję, Krzysztof za zaproszenie i za poświęcony czas.

 

Dziękuję bardzo. Zanim Cię jeszcze wypuszczę, to powiedz, proszę, gdzie Cię można znaleźć w internecie, albo do jakich miejsc chcielibyśmy odesłać słuchaczy.

 

Można mnie bardzo łatwo znaleźć na LinkedInie, mój adres mailowy też jest łatwy do zgadnięcia. Odpowiadam na wszystkie sensowne wiadomości, więc zapraszam do kontaktu. Poza tym mam również konto na Twitterze. Jeżeli chodzi o wszystkie pozostałe linki, postaram się jak najwięcej do Ciebie przesłać, abyśmy mogli odesłać ludzi zarówno do materiałów do nauki, jak i wydarzeń, które się odbywają w community R.

 

Oczywiście wszystkie linki będą w notatce do odcinka. Filip, jeszcze raz bardzo Ci dziękuję.

Do usłyszenia! Cześć!

 

Cześć!

 

I to na tyle z tego, co przygotowałem dla Ciebie na dzisiaj. Po więcej wartościowych treści zapraszam Cię do wcześniejszych odcinków. A już teraz, zgodnie z tym, co czujesz, wystaw ocenę, recenzję lub komentarz w aplikacji, której słuchasz lub w social mediach. 

Zawsze możesz się ze mną skontaktować pod adresem krzysztof@porozmawiajmyoit.pl lub przez media społecznościowe. 

Ja się nazywam Krzysztof Kempiński, a to był odcinek podcastu Porozmawiajmy o IT o języku R. Zapraszam do kolejnego odcinka już wkrótce.

Cześć!

 

+ Pokaż całą transkrypcję
– Schowaj transkrypcję
mm
Krzysztof Kempiński
krzysztof@porozmawiajmyoit.pl

Jestem ekspertem w branży IT, w której działam od 2005 roku. Zawodowo zajmuję się web-developmentem i zarządzaniem działami IT. Dodatkowo prowadzę podcast, kanał na YouTube i blog programistyczny. Moją misją jest inspirowanie ludzi do poszerzania swoich horyzontów poprzez publikowanie wywiadów o trendach, technologiach i zjawiskach występujących w IT.