Daniel Łaś o tworzeniu produktów tradingowych

Jak wygląda praca developera przy produktach tradingowych? Odpowiada Daniel Łaś

Daniel przez 25 lat swojej kariery w IT zgłębił tajniki wielu gałęzi IT. Obecnie jako CTO odpowiada za strategię rozwoju technologicznego firmy Empirica. Właśnie jego zapytaliśmy o to, co zmieniło się na przestrzeni ostatnich lat, jakie wyzwania stoją przed deweloperami pracującymi nad produktami tradingowymi oraz jak od środka wygląda praca w branży fintech.

Pierwszy kod napisałeś w wieku 12 lat. Od samego początku wiązałeś swoją karierę z IT?

Tak, od samego początku wiedziałem, że chcę się tym zajmować. To była bardzo szybka fascynacja, która przerodziła się w “obsesję”. Możliwość zmuszenia tej czarnej skrzynki do robienia tego, co chcę, była bardzo ekscytująca.

Co przez te lata zmieniło się w świecie IT? 

Wszystko? Tak na poważnie, chyba tylko nieuchronność szybkich zmian jest stałą w tym świecie, nie tylko w branży IT. Podam kilka przykładów: 

  • kiedyś obowiązującym sposobem prowadzenia projektów był “waterfall” i twarde metodyki zarządzania, teraz króluje Agile i już słychać głosy, że się nie sprawdza – pewnie czeka nas wkrótce coś nowego,
  • języki programowania – ostatnio mamy ogromny wysyp nowych: Golang, Rust, Lua, Kotlin. Stare koncepcje wracają do łask: Clojure jako dialekt Lisp’a, czy cechy programowanie funkcyjnego dodawane do języków głównego nurtu,
  • kiedyś własne serwery fizyczne, a teraz wirtualizacja, technologie chmury czy nawet globalna maszyna wirtualna bazująca na Blockchain.

Mógłbym bardzo długo wymieniać, co się zmieniło.

Przerobiłeś sporo gałęzi IT, wliczając w to między innymi sieciowca, programistę, analityka, menedżera projektu i architekta oprogramowania. Skąd decyzje o tak “zawiłej” ścieżce kariery?

Nie były to świadome i przemyślane decyzje. O takiej ścieżce zadecydowały ciekawość i chęć wpływu. Po kilku latach kodowania uświadomiłem sobie, że jest wiele czynników decydujących o powodzeniu projektu. Praca programisty ma znaczenie, lecz nie zawsze największe. Mogę napisać piękny, czysty i wydajny kod na podstawie źle zebranych wymagań od klienta i jaki będzie efekt? Klapa, stres, poprawki na szybko co przyniesie niższą jakość, przekroczony budżet, zepsutą atmosferę oraz niezadowolonego klienta. Podobne efekty może przynieść niewprawne prowadzenie projektu, a zarządzanie projektem to jest skomplikowane zadanie. 

Z ciekawości o przyczyny takich niepowodzeń zrodziła się chęć zrozumienia i wprowadzenia zmian. Na początek zacząłem pracować z klientami, rozmawiać z nimi czego tak naprawdę potrzebują, zbierać ich wymagania, dokumentować je i przygotowywać szacunkowe koszty. Potem zrobiłem krok dalej i wszedłem w rolę menadżera projektów, co pozwoliło mi nauczyć się planować i realizować projekty. W dzisiejszych czasach interdyscyplinarnych i samoorganizujących się zespołów takie przenikanie się kompetencji jest bardzo korzystne, pomaga w osiągnięciu wspólnego celu, jakim jest zakończenie projektu sukcesem. Zawsze zachęcam programistów do rozwijania się w kierunkach mniej technicznych, jeśli tylko mają takie chęci.

Załóżmy, że chcę zostać CTO. Jak to osiągnąć? Jakie umiejętności, twarde i miękkie, powinienem posiadać?

To jest pytanie warte napisania książki. Myślę, że rolą CTO jest zaplanowanie technologicznej przyszłości firmy, przekonanie do swojej wizji wszystkich zainteresowanych stron i konsekwentne udzielanie wsparcia w realizacji swojego planu. Na pewno przydadzą się: znajomość technologii na poziomie architekta oprogramowania oraz umiejętności słuchania i przekonywania zarówno odbiorców biznesowych jak i technicznych.

Z czym się wiąże praca w Fintechu? Jaka jest największa zaleta, a jaka wada tej branży?

Fintech to bardzo szerokie pojęcie, tworzysz moduł płatności online – działasz w Fintech’u, piszesz bank internetowy – też Fintech. Wspólny mianownik to oczywiście pieniądze. Jeśli pracujesz z pieniędzmi, salda muszą się zgadzać. Gdybym zawęził branżę Fintech do handlu algorytmicznego na rynkach kryptowalut, powiedziałbym że największa wada jest również największą zaletą, ocena zależy od punktu widzenia. 

Tam, gdzie są pieniądze, tam jest duża konkurencja i wielu uczestników rynku. Bardzo szybko trzeba się zmierzyć z problemami wysokiej dostępności, skalowalności czy też dużej ilości danych. Jeśli tworzysz sklep internetowy to tego typu problemy pojawiają się dopiero wtedy, kiedy masz wielu klientów. Potrzebne są spore inwestycje pozatechniczne, na przykład na jego promocję. W handlu algorytmicznym wystarczy połączyć się z publicznie dostępnym interfejsem dużej giełdy krypto i już otrzymujesz ogromną ilość informacji. 

Te dane musisz efektywnie przetworzyć i dostarczyć do inteligentnego algorytmu, który na ich podstawie podejmuje decyzje. Jeśli algorytm podejmuje złe decyzje jesteś narażony na straty finansowe. Dla jednych taka duża konkurencja i konieczność szybkiej adaptacji zaawansowanych technologii i technik jest zaletą, dla innych może być wadą.

Czym ta branża różni się od innych?

Nie chciałbym generalizować oraz nie czuję się ekspertem, by wypowiadać się na temat innych branż. Być może mnogość nowych technologii nieco wyróżnia Fintech, lecz z drugiej strony widziałem wiele prezentacji o wykorzystaniu Machine Learning i BigData w branżach e-commerce czy Travel. Nie ma specjalnych różnic.

Jakie umiejętności powinien mieć developer, który chce pracować nad produktami tradingowymi?

To zależy, w którym obszarze chcesz pracować. Systemy tradingowe zazwyczaj wyglądają podobnie: są algorytmy podejmujące decyzje. Te algorytmy działają w środowisku, które dostarcza im różnych usług – nazwijmy to platformą. Na końcu jest część łącząca platformę z różnymi giełdami – warstwa integracyjna. 

Jeśli interesuje Cię pisanie algorytmów, powinieneś bardzo dobrze znać zasady działania rynków finansowych, w szczególności giełd, mocne podstawy z matematyki też się przydadzą, nieco mniej istotna jest znajomość różnych technologii. 

Umiejętności efektywnego przetwarzania dużej ilości informacji, technologie typu “messaging middleware”, różne bazy danych NoSQL pozwolą dobrze się poczuć w części platformowej. 

Często niedoceniania, ale bardzo ciekawa jest część integracyjna. Komponenty łączące platformę ze światem zewnętrznym działają w bardzo niegościnnym, wręcz “wrogim” środowisku. Trzeba bardzo dobrze znać platformę i potrafić szybko zrozumieć różnice koncepcyjne między nią a systemami z którymi chcemy ją zintegrować. W kolejnych krokach czekają wszelakiej maści problemy wynikające z odległości. Platforma rozmawia z systemami zewnętrznymi przez Internet, w trakcie tej konwersacji wszystko się może zdarzyć. Możemy w ogóle nie dostać odpowiedzi w środku ważnego wątku i trzeba zrobić wszystko, by ten utracony wątek odzyskać – przecież salda muszą się zgadzać.

Jakie są najpopularniejsze technologie używane obecnie przy budowaniu produktów tradingowych?

Jeśli chodzi o platformy programistyczne to chyba wszystkie z tych bardziej popularnych: Java, Python, JavaScript, Go, Rust, .Net. Często są łączone w taki sposób, by jak najlepiej wykorzystać ich mocne strony, na przykład Python ma świetny ekosystem Data Sciece i Machine Learning, popularne bazy danych NoSQL czy narzędzia Big Data są napisane w Javie czy Scali. Wszystko, co nadaje się do szybkiego przetwarzania i przechowywania dużej ilości informacji, znajduje zastosowanie w produktach tradingowych.

Jakie są Twoim zdaniem największe wyzwania dla tych developerów?

Jeśli masz doświadczenie głównie w aplikacjach służących do uzupełniania danych za pomocą formularzy, to specyfika i skala działania platform tradingowych może być czymś, do czego trzeba się przyzwyczaić i czego się trzeba nauczyć. Oprócz tego pozostaje podstawowe wyzwanie dla wszystkich inżynierów w IT – mnogość technologii i prędkość ich zmian. 

Czy ta część branży jest otwarta na juniorów czy raczej na osoby z większym doświadczeniem. Dlaczego?

Wydaje mi się, że raczej poszukiwane są osoby z pewnym doświadczeniem, nie tylko w branży Fintech. Rzeczywistość jest trudna zarówno dla programistów całkowicie bez doświadczenia oraz dla pracodawców. Młodzi programiści nie mają możliwości nabrania doświadczenia, a firmy nie mogą pozyskać doświadczonych programistów. Nowy pracownik, który nigdy nie pracował w środowisku komercyjnym musi bardzo wiele się nauczyć, jest sporą inwestycją z punktu widzenia firmy. Niestety, ta inwestycja jest ryzykowna. Statystyki pokazują, że duży odsetek programistów zmienia pierwsze miejsce pracy po roku czy dwóch latach.

Z drugiej strony często jest tak, że absolwenci już mają za sobą pewien okres praktyk w firmach i czas potrzebny na wdrożenie do projektu komercyjnego jest krótszy. Osobiście wierzę w model nauczania, w którym uczelnie kształcą w naukach podstawowych a praktykę konkretnych technologii pozostawiają studentom. Solidne podstawy z matematyki zawsze się przydadzą. Bazy danych X, systemu kontroli wersji Y czy zasad współpracy nad projektem można się nauczyć praktykując i studiując jednocześnie.

Czyli kto jest dla Was idealnym kandydatem?

Zaangażowany i zmotywowany pasjonat, lubiący wyzwania. Jestem odpowiedzialny za część techniczną rekrutacji i często przeprowadzam rozmowy kwalifikacyjne. Nie pytam o regułki czy znajomość konkretnych bibliotek programistycznych, to nie jest moim zdaniem najbardziej istotne. Oczywiście, znajomość technologii, których używamy jest cenna, ale raczej staram się wybadać jak kandydat radzi sobie z rozwiązywaniem łamigłówek. Interesuje mnie również, czy praca jest równocześnie pasją. Jeśli potrafisz logicznie myśleć, chcesz się rozwijać i pasjonujesz się technologią na pewno znajdziesz pracę jako specjalista IT.

Jak myślisz, o czym mówi się za mało w branży tradingu? Co chciałbyś przekazać zainteresowanym wejściem w tę branżę?

Ostatnio, dzięki popularyzacji kryptowalut mówi się bardzo dużo. Jeśli rozważasz branżę handlu algorytmicznego to szczerze zachęcam. Czeka na Ciebie ogromna szansa i jednocześnie wyzwanie jakim jest praca nad oprogramowaniem, od którego wymaga się bardzo wiele, które wyciska ostatnie poty z serwerów i Twojego intelektu.


Daniel Łaś. CTO w Empirica S.A. Aktywny zawodowo w branży IT od około 25 lat, pierwszy kod wyszedł  spod jego ręki prawie 35 lat temu (napisany w wieku 12 lat, w języku BASIC na komputerze ZX Spectrum+). Doświadczenie zdobywał głównie w małych i średnich firmach na niemal każdym stanowisku związanym z wytwarzaniem oprogramowania. Odpowiada za opracowanie i realizację strategii rozwoju technologicznego oraz budowanie i rozwój zespołów programistycznych, co tak naprawdę oznacza ciągłe wdrażanie nowych technologii i praktyk w bliskiej współpracy z inżynierami.

Zapraszamy do dyskusji

Patronujemy

 
 
More Stories
Poznajcie Needle, narzędzie do analizy aplikacji mobilnych iOS