Ścieżki kariery na platformie HR-ME

W ramach podcastu “Porozmawiajmy o IT” miałem okazję porozmawiać z Piotrem Klinke o ścieżkach kariery na platformie HR-ME.

Posłuchaj naszej rozmowy w wersji audio 🎧 👇

Cześć! Mój dzisiejszy gość to CTO w HR-ME, gdzie zajmuje się algorytmami dopasowania ścieżek i ofert dla kandydatów, architekturą systemu oraz procesów wytwarzania oprogramowania. Zawodowo od 7 lat związany z algorytmami przetwarzania dźwięku i rozpoznawania mowy, otwarty na naukę technologii oraz próbowanie nowych sportów wodnych. Moim i Waszym gościem jest Piotr Klinke.

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

Cześć, Krzysztof! Bardzo mi miło z Tobą wreszcie porozmawiać. Wymienialiśmy maile, ale to jednak zupełnie co innego porozmawiać.

Dokładnie. Formuła naszej dzisiejszej rozmowy, tego podcastu, będzie nieco inna od tego, co zazwyczaj w mojej audycji występuje, to znaczy są jakieś założenia co do tego, o czym będziemy mówić, ale raczej będziemy chcieli przeprowadzić sobie taką rozmowę na temat ścieżek kariery, które zostały przez Piotra i przeze mnie przygotowane w ramach platformy HR-ME. Więc jestem bardzo ciekawy, jestem chłonny tego, żeby się dowiedzieć czegoś nowego o ścieżce Piotra. Czekam na naszą rozmowę, ale rozpocznę standardowo, tak jak każdą audycję w ramach mojego podcastu, czyli pytaniem do Ciebie, Piotr. Czy słuchasz podcastów? Jeśli tak, to może masz jakieś swoje ulubione, o których chciałbyś powiedzieć.

Tak, słucham podcastów, jak najbardziej. Słucham, jak tylko mam czas wolny w przelocie, w samochodzie czy na spacerze z psem. I na przykład coś, co mnie jakiś czas temu bardzo zainteresowało, to jest podcast StartUp od Gimlet Media (na Spotify dostępny). Tam opisują historię powstania firmy, w której tworzy się podcasty, ale wszystko z perspektywy tworzenia startupu. Podcasty z tak zwanego, oni tak to nazywają, investigative journalism, czyli po prostu z takiego dziennikarstwa z krwi i kości. I rzeczywiście fajnie się tego słucha, jest to fajnie opowiedziana historia. I potem kolejne podcasty z tej samej stajni, czyli na przykład Reply All albo Heavyweight, to są naprawdę fajne rzeczy, których się świetnie słucha. Na przykład Heavyweight jest o rozwiązywaniu starych historii i autor jest, staje się mediatorem, rozpoznaje historie od podszewki, historie ludzkie, międzyludzkie. A Reply All jest bliżej technologii, ale pomiędzy technologią, a jej wpływem na społeczeństwo — bardzo ciekawe rzeczy. A z polskich to na przykład Imponderabilia też czasami czy Dział Zagraniczny.

Okej, to może przejdźmy najpierw do zdefiniowania, powiedzenia, czym właściwie jest platforma HR-ME. Kto ją stworzył? Skąd ten pomysł? Komu i w czym pomaga? Czyli takie zaplecze tego przedsięwzięcia, w którym też bierzesz udział.

Tak, HR-ME jest platformą rozwoju osobistego dla IT, czyli my staramy się być agregatorem, takim podmiotem, który stara się łączyć ludzi, programistów i w ogóle ludzi związanych z IT, bo to nie tylko jest bezpośrednio dla programistów, ale też dla PM-ów, dla analityków biznesowych. Staramy się być dla całego rynku IT taką platformą wiedzy i platformą, gdzie można znaleźć, w jakiś sposób zacząć nową ścieżkę na IT albo zobaczyć, w którym miejscu takiej ścieżki się jest, ale też zobaczyć inne ścieżki, rozwinąć się horyzontalnie, zobaczyć, czym się je technologię ludzi, z którymi na co dzień współpracujemy.

W tym kontekście chcemy udostępnić platformę, która nie tylko patrzy na pracowników i na ich aktualny stan wiedzy, ale też rozwojowo, do przodu, umożliwiając zdobywanie wiedzy, umożliwiając zerknięcie w naszą giełdę technologii, czyli w statystyki, które technologie idą do przodu, które są rzeczywiście na topie w ofertach pracy i w ogóle na rynku, ale też po prostu między programistami, które są najbardziej popularne i które zyskują popularność, więc które prawdopodobnie są bardziej przyszłościowe, czyli po prostu danie danych i narzędzi ludziom, żeby mogli się bardziej rozwijać.

I w tym kontekście też próbujemy podchodzić do rekrutacji, czyli dopasowujemy potencjalnych kandydatów do firm, w których rzeczywiście się rozwiną w dziedzinach, w których chcą się rozwijać, czyli nie tylko na podstawie dzisiejszych umiejętności próbujemy robić dopasowanie pomiędzy firmą a kandydatem, ale również na podstawie tego, czego kandydat chciałby się nauczyć i w którą stronę chciałby się rozwinąć w przyszłości, co go rzeczywiście interesuje. Dzięki czemu już na wstępie rozmowa o potencjalnej nowej pracy, czy nawet o zaczęciu płatnego kursu, bo to też chcemy oferować na naszej platformie, już ma jakiś punkt wyjścia, że kandydat jest rzeczywiście czymś zainteresowany, a firma rzeczywiście jest w stanie to dać. I ten punkt wyjścia tej rozmowy jest dużo ciekawszy niż taka sucha standardowa rozmowa rekrutacyjna, która często bardzo szybko okazuje się nietrafiona.

I w tym kontekście też próbujemy podchodzić do rekrutacji, czyli dopasowujemy potencjalnych kandydatów do firm, w których rzeczywiście się rozwiną w dziedzinach, w których chcą się rozwijać, czyli nie tylko na podstawie dzisiejszych umiejętności próbujemy robić dopasowanie pomiędzy firmą a kandydatem, ale również na podstawie tego, czego kandydat chciałby się nauczyć i w którą stronę chciałby się rozwinąć w przyszłości, co go rzeczywiście interesuje.

Rozumiem, okej. Ma to sens jak najbardziej. Powiedziałeś, że jest to platforma dla specjalistów IT, czyli dosyć szeroko. Obecnie tych specjalizacji, tych branż nawet w ramach IT jest bardzo dużo.

Tak.

Co możemy znaleźć obecnie na HR-ME, jeśli chodzi o ścieżki kariery? Które kierunki chcecie zagospodarować?

Na ten moment, na moment nagrywania podcastu, bo to cały czas się szybko rozwija, mamy ścieżkę ogólną Front-endową, czyli staramy się tam zamieścić wszystkie możliwe technologie, żeby użytkownik miał dostęp do pełnego wachlarza opcji i miał określenia, jakie różne opcje są dla każdego etapu rozwoju na ścieżce Front-end. Więc to jest tego typu ścieżka dla Front-end Web Developerów.

Mamy również ścieżkę AI, którą ja przygotowywałem. Aha, ścieżkę Front-end przygotowywał Hubert, nasz Head of Product. Ścieżkę AI przygotowywałem ja, czyli to z kolei jest ścieżka dość zorientowana, bo akurat w AI, którym ja się zajmuję, czyli Deep Learningowym, jest głównie Python i tego typu zastosowania. Czyli jest tu już nieco bardziej spersonalizowana czy raczej zopiniowana ścieżka po prostu przeze mnie.

I mamy ścieżkę Back-end, którą Ty byłeś uprzejmy przygotować, za co jestem mega wdzięczny. Super naprawdę ta współpraca wychodzi i to dokładnie o coś takiego chodziło, czyli podsumowanie różnych źródeł z różnych stron i podsumowanie ich na jednej ścieżce, spisanie tych różnych technologii w jakimś sensownym hierarchicznym modelu. I teraz właśnie wchodzi nowa ścieżka Mobile Android Developer, czyli Kotlin i wszystko, co związane z programowaniem aplikacji mobilnych.

Okej, brzmi to bardzo fajnie. Czyli większość takich najbardziej popularnych kierunków obecnie w IT myślę, że już jest. A jestem przekonany, że będzie tam przybywało tych ścieżek kariery, które będą pokrywały jeszcze gęściej cały ten wachlarz możliwości. Super. Dobra, Piotr. Powiedziałeś, że jesteś autorem ścieżki o Artificial Intelligence, o AI. To też jest niesamowicie szeroka dziedzina. Tam można znaleźć naprawdę wiele różnych tematów.

Zgadza się.

Powiedz, proszę, tak w kilku słowach, co dokładnie tam zawarłeś, czego się można z tej ścieżki nauczyć.

Na ścieżce w tym momencie zaczynamy od podstaw Pythona, czyli są polecane kursy, różnego typu kursy, bo tych kursów darmowych jest naprawdę bardzo dużo, ale podzieliłem je na 3 części. Jedna z platform, którą tam udostępniam, to jest bardziej taka wykładowa część, czyli że więcej można się nauczyć z samego słuchania. Jedna jest część bardziej ćwiczeniowa, czyli ćwiczenia są na bieżąco z każdego tematu, po każdym małym akapicie. I część projektowa, w której mamy więcej projektów, takich konkretnych zadań do zrobienia. I to też jest mniej więcej odwzorowane na platformie zresztą, czyli są osobno źródła nauki, czyli bardziej te rzeczy, które można sobie w między czasie posłuchać i ogólnie ogarnąć, czym co jest na wstępie i potem nieco głębiej. A oprócz tego zadania, które są bardziej rzeczami do wykonania i do odhaczenia.

I tak to właśnie wygląda na platformie. Czyli od tego się zaczyna, od Pythona ogólnie. Na tym przykładzie opisałem, jak wygląda taki konkretny etap ścieżki kariery i kolejne etapy ścieżki kariery AI rozwijają się poprzez używanie struktur danych w Pythonie, czyli NumPy czy Pandas poprzez później Machine Learning. To też jest ciężko czasami określić, co czym jest i na ten temat też chcielibyśmy zacząć rozmowę. Ale Machine Learning na mojej ścieżce oznacza te standardowe klasyczne metody Machine Learningowe, czyli k-nearest neighbours i dopasowanie jeszcze nie Deep Learningowe.

I później przechodzimy powoli w Deep Learning, czyli w głębokie sieci neuronowe w różnych zastosowaniach. Najpierw po prostu ogólnie, czym są te głębokie sieci neuronowe, jak wyglądają neurony — są tam takie źródła. A później konkretne źródła już do konkretnych różnych specjalizacji Deep Learningowych, czyli źródło o NLP i embeddings w modelach językowych, źródło dotyczące rozpoznawania obrazów, co jest najbardziej popularne w Deep Learningu, ale też źródła dotyczące rozpoznawania mowy.

Jasne.

Mniej więcej tym się kończy ścieżka. Ja oczywiście mam mnóstwo pomysłów, jak ją rozwinąć, ale jest to taka solidna podstawa, z której można wyciągnąć sobie po pierwsze jakie są etapy, a po drugie jakie są też opcje, w czym można się rozwinąć, chociażby nawet w samym Deep Learningu.

Okej, jestem bardzo też ciekawy, jakim kluczem się kierowałeś, jeśli chodzi o dobór tych rzeczy i coś, nad czym ja się też zastanawiałem: czy chcemy dać taką ścieżkę przejścia przez te materiały od a do zet czy też raczej dajemy pewien przekrój różnych możliwości, ale nie wszystko tam jest obowiązkowe? Ja pewnie za chwilę będę opowiadał o swojej ścieżce, więc powiem, jakimi zasadami się kierowałem, ale jestem ciekawy, jak Ty to układałeś. Czy to faktycznie oznacza, że żeby te postawy AI w tym zakresie, o którym Ty myślisz, zdobyć, to trzeba przysłowiowo odhaczyć wszystkie z tych materiałów, które umieściłeś, czy też raczej niektóre materiały są dla chętnych, niektóre materiały są poszerzające, a jest jakiś core? Jak Ty to widzisz?

Jak najbardziej, ścieżka sama w sobie jest zorientowana od początku do końca. Ten początek to są te core’owe rzeczy, które warto zawsze ogarnąć. Później im głębiej, tym bardziej wyspecjalizowane są te elementy na ścieżce, więc można jak najbardziej sobie później wybierać. Takim założeniem kierują się ścieżki kariery. Ale to, co poruszyłeś, to jest bardzo ciekawa rzecz, bo w trakcie tworzenia kolejnych ścieżek w praktyce wychodzi nam właśnie to, że niektóre ścieżki są bardziej ogólne, niektóre bardziej szczegółowe — o czym mówiłem na początku.

Ścieżka Front-enda jest bardziej podsumowująca różne opcje i starająca się agregować wszystko, a ta moja jest raczej bardziej konkretna, spersonalizowana. Co według mnie jest wartościowe w tego typu karierze, czy z czego ja rzeczywiście skorzystałem u siebie przy osobistym rozwoju. I tak samo te źródła. Źródła są na początku, najczęściej tak je starałem się układać, że te pierwsze źródła w źródłach nauki są bardziej ogólne, bardziej podstawowe, ale też bardziej ogólne, podsumowujące ogólną wiedzę. A im dalej w las, tym więcej ciekawych ciekawostek, ale oczywiście nie są one obowiązkowe dla każdego.

Jasne. A jaki poziom założyłeś wśród osób, które do takiej ścieżki miałyby podejść? Co jest wymagane, żeby w ogóle rozpocząć tę ścieżkę, jaka wiedza, jakie umiejętności?

Chętnie bym powiedział o dwóch etapach, które jeszcze bym chciał rozwinąć i to jest jeden z nich, czyli udostępnić, bardziej zdemokratyzować tę ścieżkę, bo w tym momencie ścieżka zaczyna się od nauki Pythona, ale nie ma takiego wstępnego elementu podsumowania metod statystycznych: czym jest statystyka, jakie są podstawowe wartości statystyczne, jakie są takie narzędzia matematyczne, które mogą się później przydać. Takich kursów też jest dość mało. Większość kursów, źródeł przechodzi prosto z nauki Pythona od razu do już konkretnych modeli, które trenujemy. I to jest fajna wiedza, bo można 80% use case’ów zastosować po prostu istniejące modele. Ktoś o tym pomyślał i warto wiedzieć, gdzie tego szukać i jak tego użyć, ale to jest zaledwie taka wiedza.

Chciałbym też dodać z czasem tę część bardziej ogólną. Znaleźć jakieś źródła, które pomogą kandydatom, którzy są w ogóle spoza IT, tak naprawdę wejść na tę ścieżkę. Na tym etapie, na którym teraz jest, to zakładam, że ktoś ma ogólną wiedzę na temat IT i wchodzi w programowanie po pierwsze Pythona, żeby się nauczyć tego, w jaki sposób się w tym języku poruszać, a potem wchodzi już na ścieżkę AI, czyli już konkretnego wykorzystywania konkretnych modeli. Tak to w tym momencie jest zbudowane jako ta pierwsza wersja tej ścieżki, ale mam mnóstwo pomysłów, jak to rozwijać i to jest coś, co mam cały czas na głowie.

Jasne, rozumiem. Okej, myślę, że też platforma jest o tyle elastyczna, że jeśli dajmy na to te początki Pythona wydaje Ci się, że masz już opanowane, że nie musisz tego materiału przechodzić przysłowiowo, to de facto możesz przejść do tych następnych kroków. To nie jest coś takiego, że Ty jesteś ograniczony jakimś czasem, że pewne kolejne materiały są dostępne dopiero po pewnym czasie, po zaliczeniu jakichś testów czy cokolwiek takiego. Myślę że mimo tego, że jest oczywiście jakiś określony jeden przebieg tej ścieżki, to możemy w razie czego pominąć pewne kroki albo przejść do kroków następnych, zakładając, że znamy już te wcześniejsze.

Jak najbardziej, nawet zachęcam do tego, żeby zajrzeć sobie na ścieżkę AI, zajrzeć sobie do tych materiałów, które są tam później właśnie w sekcji Deep Learning czy w tamtych późniejszych okolicach, bo tam są rzeczy, które mogą rzeczywiście zainteresować, pokazać, czym w praktyce może być AI. Na przykład blog Andreja Karpathiego, który w tym momencie pracuje bodajże w Tesli i robi ogromne modele do rozpoznawania obrazu i do kierowania samochodami Tesli, self-driving, jakiś czas temu opublikował dużo materiałów na swoim blogu.

Jednym z tych materiałów jest materiał o sieciach neuronowych sekwencyjnych, który jest taki dość mocno popularno-naukowy, czyli można go też spróbować czytać tak po prostu patrząc na to, co jest możliwe z takimi sieciami rekurencyjnymi. Tam jest ten element na przykład podawania kawałka tekstu modelowi, podawania modelowi całej książki Szekspira i potem podawania pierwszego słowa, z którego model jest w stanie wygenerować losowy ciąg słów, który tak naprawdę brzmi, ma ten styl Szekspira i ten podział na osoby. To są niesamowite rzeczy, które są bardzo inspirujące, co można tak naprawdę zrobić, co można stworzyć, używając głębokich sieci neuronowych.

Dokładnie. I ta dziedzina idzie bardzo szybko do przodu, tu się bardzo szybko wiele rzeczy zmienia. Dezaktualizuje się równie szybko, dlatego zastanawiam się też, na ile takie ścieżki są dłużej żyjące niż by mogło się na początku wydawać. Na ile one pokrywają jakieś evergreenowe tematy, a na ile zakładasz, że mimo wszystko taką ścieżkę trzeba aktualizować, trzeba do niej wracać i to musi być materiał, który nadąża za obecnym rozwojem danej dziedziny?

Żeby odpowiedzieć na to pytanie, to chciałbym powiedzieć nieco więcej o wizji tego, jakbym chciał, żeby się rozwijała ta platforma. W tym momencie my zbieramy specjalistów z danych dziedzin, którzy tworzą swoje zopiniowane ścieżki i to jest super na start, bo mamy już coś. Użytkownicy mogą w coś zerknąć i zobaczyć, jak się w tym miewają. Ale przyszłościowo, coś co widzę w najlepszym możliwym scenariuszu rozwoju platformy, to jest crowdsourcing tych ścieżek, czyli nasze propozycje wchodzą chociażby nawet na GitHuba i na tym GitHubie są komentowane. Jeśli coś ma dużo gwiazdek, to może wejść jako oficjalna ścieżka na HR-ME.

My nie aspirujemy do miana podmiotu, który daje, tylko który agreguje. Nie chcemy być autorytetem w każdej dziedzinie, bo nie jesteśmy też w stanie i to jest okej. I tak naprawdę dużo wiedzy takiej dawanej z góry, stare takie metody nauczania, że „ja Ci teraz powiem, a Ty wiesz” , po prostu przestają działać, gdy rynek się tak dynamicznie zmienia i to jest coś nie do zastosowania. I chciałbym, żeby te materiały na naszej platformie były tworzone po prostu przez community, jeśli tylko takie community uda nam się stworzyć.

My nie aspirujemy do miana podmiotu, który daje, tylko który agreguje. Nie chcemy być autorytetem w każdej dziedzinie, bo nie jesteśmy też w stanie i to jest okej. I tak naprawdę dużo wiedzy takiej dawanej z góry, stare takie metody nauczania, że „ja Ci teraz powiem, a Ty wiesz” , po prostu przestają działać, gdy rynek się tak dynamicznie zmienia i to jest coś nie do zastosowania. I chciałbym, żeby te materiały na naszej platformie były tworzone po prostu przez community, jeśli tylko takie community uda nam się stworzyć.

Ale myślę, że to jest bardzo ciekawa część polskiego rynku, że mamy tutaj specjalistów od niesamowitych rzeczy i to pole do wymiany informacji to jest coś, co my staramy się zrobić. Żeby tutaj u nas też można było się podzielić swoją wiedzą bardzo głęboką, którą przenosimy, albo którą zbieramy też za granicą czy po prostu w codziennej pracy i żeby było pole do wymiany i do rozmowy na temat tego, co jest tak naprawdę na topie. I tak samo jeśli chodzi o całą resztę platformy.

Bardzo jesteśmy otwarci na feedback i to jest dla nas bardzo ważna część. Na każdym etapie, przy każdej ścieżce też są okienka ankiet, w których zbieramy informacje i je non stop przetwarzamy. I pod tym względem, pod względem po prostu najczęściej wybieranych na przykład kolejnych ścieżek, staramy się szukać kolejnych specjalistów, którzy tworzą następne ścieżki, którymi ludzie są rzeczywiście zainteresowani. Także zapraszam też do tego, rzeczywiście zerkamy w ten feedback.

Super, to jest bardzo fajne podejście. Gdy mówiłeś o tym, że te ścieżki niektóre są ogólne, niektóre bardziej specjalistyczne, to przyszło mi do głowy, że przecież bardzo często nie ma takiej jedynej słusznej ścieżki, jakąkolwiek dziedzinę by wziąć na warsztat. Bo pracując teoretycznie w tym samym stacku w dwóch różnych firmach, możemy korzystać z zupełnie różnych ficzerów, z zupełnie innych aspektów danej technologii i wręcz nasz rozwój, chociażby jako programista w firmie A może wyglądać zupełnie inaczej niż w firmie B, pomimo tego, że teoretycznie korzystają z tych samych technologii.

Więc być może pokazywanie właśnie tego samego zakresu technologicznego, ale z kilku punktów widzenia, pozwoli też odbiorcom, pozwoli też użytkownikom tej platformy w jakiś sposób wybrać, która z tych ścieżek względnie bardzo podobna pod względem technologicznym, będzie pasowała bardziej do ich profilu. I myślę, że nic nie stoi też na przeszkodzie, żeby właśnie ta sama technologia, ten sam język programowania czy cokolwiek innego, występował w kilku wariantach.

To jest tak samo jak chociażby z tymi podcastami, o które Cię pytałem na początku, że podcastów o technologii, podcastów o biznesie, podcastów o zdrowiu jest mnóstwo, ale to nie chodzi o to, że one poruszają te same treści. Chodzi o to, że to ta osoba twórcy, ta osoba podcastera tutaj jest tym wyróżnikiem, który przyciąga właśnie do konkretnego podcastu. Tak samo myślę sobie, że może być właśnie ze ścieżkami na HR-ME, że ten mały akcent, to małe odróżnienie, może być właśnie tym, co powoduje, że dana ścieżka nam bardziej pasuje albo mniej.

Tak, a my chcemy dać właśnie tę platformę, w której można sobie porównać w podobnej formie tych różnych autorów czy te różne podejścia do rozwiązania podobnych problemów i to jest jedno miejsce, gdzie można sobie je przeglądać. Być może w przyszłości będziemy też tworzyli swoje własne treści naukowe, ale my raczej staramy się pozwolić ludziom wyjść z własnych baniek, które tworzą się w firmach i w których myślimy sobie, że to jest jedyna możliwość do rozwiązania tego problemu. Jak tylko wyjdziemy na zewnątrz, to często okazuje się, że jest mnóstwo różnych możliwości rozwiązywania problemów i często w tym toniemy od razu i jest taka niechęć.

My chcemy dać tę opcję wyboru, że jeśli interesujesz się Back-endem na przykład, to masz tutaj 3–4 różne opcje, jak można akurat podejść do zagadnienia Back-endu. Otwórzmy się wszerz, otwórzmy się na boki, na różne inne rozwiązania — to jest właśnie coś, co nam przyświeca przy tworzeniu tej platformy. W to wszystko idealnie wpisuje się Twoja ścieżka, prawda? To jest właśnie Back-end, ale konkretne podejście do Back-endu, które jest dla mnie mega ciekawe. Możesz opowiedzieć co nieco?

Tak, oczywiście, z chęcią. Dokładnie, Back-end jest bardzo szerokim zagadnieniem i możemy skorzystać z różnych technologii, które ten Back-end pomogą nam zrealizować. Ja akurat od prawie 4 lat mocno zagnieździłem się w takiej niszowej dosyć technologii, dosyć niszowym języku, mianowicie Elixir. Z racji tego, że on się bardzo dobrze sprawdza właśnie na Back-endzie aplikacji webowych, to postanowiłem tę swoją ścieżkę oprzeć właśnie dokładnie o Elixira.

Back-end oczywiście jest też szerokim zagadnieniem i najbardziej charakterystycznym czy najbardziej rozpoznawalnym na ten moment jest pewnie Back-end aplikacji webowych czy też ogólnie jakiś Back-end, który serwuje API. Później konsumentem tego mogą być różne końcówki: to może być aplikacja webowa, ale też mobilna czy też jakieś inne API. Natomiast chodzi mi o to, że poprzez HTTP wystawiamy pewien interfejs API, który później może być konsumowany przez inne serwisy. Z racji tego, że Elixir bardzo fajnie się tam sprawdza, to postanowiłem właśnie wpleść w tę moją ścieżkę Back-endową tę technologię.

Jest funkcyjny, to jest coś, co mnie tutaj w tym wszystkim interesuje już.

Jest funkcyjny, faktycznie.

Jakiś czas temu czytałem też o Clojure na przykład i natknąłem się parę razy na książki o tym, ale jakoś nigdy nie zabrałem się za to. Nie miałem takiego punktu wejścia, że: dobra, to tutaj zacznij, zacznij sobie z tym zadaniem. Coś takiego mega by mi się przydało, więc jak tylko będę miał chwilę wolną, to chętnie zagłębię się w Twoją ścieżkę, naprawdę.

Zachęcam. Faktycznie ten język, można powiedzieć, historycznie się trochę wywodzi — może wywodzi to źle powiedziane — ale jest gdzieś powiązany z językiem Ruby. A język Ruby z kolei powstał, i to było wręcz wpisane w jego podstawy, po to, żeby dawać przyjemność deweloperom, programistom, żeby ten kod, który jest pisany, był czytelny, żeby był przejrzysty, żeby nie trzeba było pisać wiele boilerplate’u niezbędnego do zrealizowania czegoś. Elixir z racji tego, że był stworzony przez kogoś, kto wcześniej był w core teamie związanym z Rubim, to oczywiście wiele tych inspiracji czerpie i też ta radość, to developer experience, które było charakterystyczne dla Rubiego, zostało przeportowane do Elixira.

Tak jak powiedziałeś, tych języków funkcyjnych trochę jest. Zresztą, o ile mnie pamięć nie myli, to podejście funkcyjne było tak naprawdę sporo przed nawet tym obiektowym, więc to nie jest nic nowego. W sensie wracamy do rzeczy, które istnieją już od dawna. Zresztą — taka mała anegdota — podobna sytuacja, jak z samochodami. Pierwsze samochody były samochodami elektrycznymi na jakieś baterie czy właśnie akumulatory, a nie spalinowymi.

Tak, ostatnio o tym czytałem. Rzeczywiście, tak. I to tylko Henry Ford po prostu zrobił pierwszą linię spalinową i to wybuchło. Też o tym czytałem ostatnio, ciekawe.

Tak, tak. Dokładnie. Teraz odkrywamy ponownie to podejście do samochodów elektrycznych, ale przecież one istniały od dawna i tak samo jest z programowaniem funkcyjnym. Ono istniało też wcześniej, teraz je trochę ponownie odkrywamy z różnych przyczyn. Jedną z takich przyczyn jest to, że przestaliśmy już trochę skalować te nasze maszyny poprzez podkręcanie kolejnych gigaherców. Raczej dokładamy kolejne core’y, kolejne procesory i chcemy równolegle realizować wiele przeliczeń, wiele obliczeń, wiele operacji jednocześnie.

Teraz odkrywamy ponownie to podejście do samochodów elektrycznych, ale przecież one istniały od dawna i tak samo jest z programowaniem funkcyjnym. Ono istniało też wcześniej, teraz je trochę ponownie odkrywamy z różnych przyczyn. Jedną z takich przyczyn jest to, że przestaliśmy już trochę skalować te nasze maszyny poprzez podkręcanie kolejnych gigaherców. Raczej dokładamy kolejne core’y, kolejne procesory i chcemy równolegle realizować wiele przeliczeń, wiele obliczeń, wiele operacji jednocześnie.

I żeby to w miarę robić bez bólu głowy, to chcielibyśmy właśnie mieć takie podejście do tego, które nam gwarantuje, że coś, co się wykonuje na powiedzmy corze 1., nie będzie miało wpływu na core 2., a jednocześnie jakieś problemy czy błędy spowodowane jednym obliczeniem nie będą wpływały na drugie i tak dalej. Tutaj bardzo blisko jest nam już do takiego podejścia funkcyjnego, gdzie podstawą przetwarzania są właśnie te funkcje, które są takimi osobnymi robotami, niezależnymi od siebie, które mogą być uruchamiane niezależnie od siebie. Jak też sobie to ładnie powiążemy z niemutowalnością danych, to faktycznie mamy dość bezpieczny model przetwarzania takiego równoległego. Ale wydaje mi się, że wybiegłem trochę za mocno do przodu.

Nie, nie, to jest bardzo ciekawa część. Może od razu, bo mam takie pytanie, o którym sobie myślałem od samego początku w tym kontekście. To znaczy my w projekcie używamy Firebase’a i funkcji firebase’owych, cloudowych, czyli też właśnie podejście typu stateless i w dodatku serverless, tak jak Amazon Lambda na przykład. Wydaje się na pierwszy rzut oka, że to ma dużo wspólnego i że byłoby idealnym zastosowaniem tak naprawdę języka funkcyjnego, gdzie też właśnie te zasady są powiedzmy podobne, takiej współbieżności. Jak to się ma jedno do drugiego, mógłbyś jakoś tak, jak dla laika, dla mnie to porównać, zestawić i czy właśnie Elixir jest używany w Lambda Functions na przykład?

Oczywiście. Niekoniecznie, ale to może z innych powodów. Mianowicie to, o czym powiedziałeś, że na przykład uruchamiane są pewne funkcje. Całe to podejście serverless to jest też nic nowego, można powiedzieć. To coś, co istnieje w wirtualnej maszynie Erlanga, bo tak naprawdę o tym jeszcze nie powiedziałem, ale Elixir to jest taki język, który funkcjonuje na maszynie wirtualnej Erlanga, a ma składnię trochę przypominającą Ruby. To, jak działa ta maszyna wirtualna Erlanga, jest oparte o tak zwany system aktorów.

W dużym skrócie można powiedzieć, że mamy jeden proces tej maszyny wirtualnej, a w ramach tego procesu, w ramach systemu operacyjnego, działa mnóstwo takich lekkich procesów maszyny wirtualnej. One są na tyle lekkie, że pisząc program, my się nie zastanawiamy, tak jak w innych językach, tak jak w Javie, w Rubim, czy my zbytnio nie obciążymy tej naszej maszyny, powołując jakieś obliczenia równoległe. Tutaj taka przeciętna aplikacja zazwyczaj ma setki albo tysiące równolegle działających procesów i to jest jak najbardziej okej. One są powoływane do wykonania czegoś i w momencie, kiedy te obliczenia są zamykane, to ten proces jest szybko likwidowany.

Tutaj jest bardzo dobra analogia do takiego podejścia serverless, kiedy w momencie, gdy chcemy wykonać jakieś obliczenie, to faktycznie powołujemy sobie taką funkcję do życia. Ona jest niezależna, nie ma wpływu na inne funkcje, które mogą równolegle działać. One działają, można powiedzieć, w zupełnie odseparowanym od siebie scopie i w momencie, kiedy te obliczenia, czy jakiekolwiek tam działanie jest pod spodem, zostają wykonane, to bardzo szybko i sprawnie te zasoby związane z tą funkcją są usuwane.

Identycznie, można powiedzieć, analogicznie działa to właśnie w przypadku maszyny wirtualnej Erlanga i jednocześnie tego podejścia elixirowego. Więc jeśli komuś jest blisko do takiego myślenia — bo trzeba tutaj jasno sobie powiedzieć, że wymaga to zmiany sposobu myślenia, do którego bardzo często jako na przykład programiści języków obiektowych przywykliśmy — jeśli komuś to nie jest obce, kogoś to nie przestraszy, że tak się rzeczy dzieją, to myślę, że bardzo szybko odnajdzie się właśnie w Elixirze i zrozumie, gdzie tkwi ta moc i w jaki sposób inaczej pisać programy, bo to też jest niezbędne.

Widzę to, super. Dokładnie o coś takiego mi chodziło, bo właśnie się zastanawiałem, w których momentach to się łączy, w których momentach to może być wzajemnie wykorzystywane. Ciekawe, ciekawe bardzo.

👉 Czytaj dalej na: https://porozmawiajmyoit.pl/poit-146-sciezki-kariery-na-platformie-hr-me/

--

--

--

Dev and life blog. Thoughts about programming, design patterns, Ruby and life.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Krzysztof Kempiński

Krzysztof Kempiński

IT expert. Ruby on Rails/iOS/Elixir programmer. Blogger. Podcaster.

More from Medium

How the Insolvency and Bankruptcy Code 2016 made it a fair life for creditors | Vivek Sood

How Much For A Bunch Of Onions?

Dear Chicas Poderosas’ Community and Independent Media

Penyalin Cahaya: A Not-So-Review