Co oznacza bycie inżynierem w banku. Case mBanku
W ramach podcastu “Porozmawiajmy o IT” miałem okazję porozmawiać z Leszkiem Włodarskim z mBank S. A. o tym co oznacza bycie inżynierem w banku.
Posłuchaj naszej rozmowy w wersji audio 🎧 👇
Cześć! Mój dzisiejszy gość to IT Deputy Director w mBank S.A., doświadczony deweloper i architekt oprogramowania, lider zespołu i menedżer w mBanku, z którym zawodowo związany jest od kilkunastu lat. Specjalista takich technologii, jak .NET, C, C++ i jBasic. Moim i Waszym gościem jest Leszek Włodarski.
Leszku, bardzo mi miło gościć Cię w podcaście.
Cześć! Witam wszystkich.
Leszek z uwagi na swoje wieloletnie doświadczenie w banku z różnymi technologiami jest idealną osobą do rozmowy o tym, co to właściwie znaczy być inżynierem w banku. Każdy bank mimo pewnych podobieństw ma swoją specyfikę, więc w tej dzisiejszej rozmowie skupimy się głównie na case mBanku.
Ale zanim do tego przejdziemy, to mam w zwyczaju na początku pytać moich gości o to, czy słuchają podcastów, jeśli tak, to jakich najczęściej, więc jak to u Ciebie, Leszku, wygląda?
Ja tak naprawdę bardziej się koncentruję nie na IT, jeśli chodzi o podcasty. Z wielu powodów. Kiedyś próbowałem i nadal próbuję, szukam fajnego źródła. Kiedyś No kill switch Sebastiana Gębskiego, ale się skończył, jest na szczęście w formie pisanej, i to jest coś, co ratuje sytuację. Twój podcast jest fajną inspiracją do tego, gdzie zajrzeć, czego posłuchać, i to jest super. A tak, od czasów pandemii Raport o stanie świata, szczególnie, że ja cierpię na ten problem 24 godzin w trakcie doby. To ograniczenie powoduje, że mój czas na podcast jest głównie wtedy, kiedy idę pobiegać. A po jakimś czasie biegania percepcja i przyswajanie wiedzy są coraz gorsze, dlatego takie różne tematy w podcastach się pojawiają.
Fajnie, dzięki za te rekomendacje. Zanim przejdziemy do takiej bardziej merytorycznej rozmowy o tym, co to znaczy być inżynierem w banku, to warto, myślę, nakreślić pewien kontekst, pokazać trochę realia, w których będziemy się później poruszać, bo tak, jak już mówiłem we wstępie, każdy bank mimo podobieństw ma też swoją specyfikę. W naszej dzisiejszej rozmowie skupimy się głównie na mBanku, z którym masz wieloletnie doświadczenie. Więc prośba do Ciebie, Leszku, żebyś trochę opowiedział o mBanku i o tej części korporacyjnej, z którą jesteś związany, jak ta praca inżyniera wygląda w tej części.
mBank składa się z dwóch dużych części. Z części detalicznej, którą celowo ominę, i z części korporacyjnej, gdzie jest moje miejsce, czyli tej części banku, która opiekuje się dużymi firmami, małymi i tymi olbrzymimi. Jest to dosyć specyficzne miejsce, dlatego że ten profil klienta jest zupełnie inny niż w detalu. Są to aktywni użytkownicy bankowości, liczne transakcje zawierane na duże wolumeny, specyficzne, bardzo unikalne transakcje. Niby 30 tys. klientów, ale bardzo wartościowych, bardzo dużych.
To też duża odpowiedzialność za to, co się dzieje w biznesie, bo nasi klienci w dniu wypłaty przelewają olbrzymie kwoty dla swoich pracowników. Gdyby ten jeden przelew nie wyszedł, byłby płacz i zgrzytanie zębów, do czego nie chcemy doprowadzić. Dlatego po okresie pandemii jest to obszar, który zaczyna gwałtownie reagować na nowe możliwości albo powraca do swojej dawnej aktywności.
Więc tu się dużo dzieje. I jest to też miejsce, w którym mamy dużą aktywność regulatorów ustawodawcy, więc naprawdę od wielu lat się nie nudzimy. W sumie raz chyba się tylko nudziłem w tym banku, w 2007 r. Więc tak, korpo to jest to miejsce, w którym można robić różnice, i to jest bardzo fajne.
Czyli duży wpływ, duża odpowiedzialność, nastawienie na niezawodność, na bezpieczeństwo. Można powiedzieć, że dla takiego rasowego inżyniera to może być faktycznie świetny obszar, świetne środowisko do rozwoju, dlatego żeby mierzyć się z ciekawymi problemami, co też, mam nadzieję, wyjdzie w naszej rozmowie.
Jak już jesteśmy przy tych technologiach, to może pociągnijmy ten wątek. Bardzo często, kiedy rozmawiam z ludźmi, którzy nigdy nie mieli do czynienia z pracą w bankach, w większych instytucjach, pojawia się taka wątpliwość, czy tam faktycznie pracuje się z technologiami sprawdzonymi w boju, nieco może nawet podstarzałymi, czy też może jest to miejsce, gdzie faktycznie możemy sobie próbować różnych rzeczy. Jednym słowem mówiąc, czy praca w banku to praca ze sprawdzonymi rozwiązaniami, które się nie zmieniają latami, czy też jest to obszar, w którym te nowsze technologie są wykorzystywane? Gdybyś mógł nam naszkicować przekrój technologii, z którymi miałeś do czynienia, myślę, że to dałoby fajny obraz sytuacji.
Tak, technologii w bankach jest bardzo dużo i ważne, żeby słuchacz zrozumiał, dlaczego ich jest bardzo dużo. Zacznę od takich, które są naprawdę starożytne. Mamy w banku systemy centralne, to jest serce banku, mamy dwa takie serca. W części korporacyjnej to serce się opiera o taką platformę jBase, jBasic, jest to dosyć stare rozwiązanie, mało znane, unikalne. W części detalicznej mamy COBOL-a. I to faktycznie są takie platformy, których zmienność jest bardzo mała. Ale na COBOL-a każdy reaguje dosyć nerwowo, bo przecież dinozaury go wymyśliły.
W części korporacyjnej jest jBasic, to też jest technologia, która w 2003 r., gdy wdrażany był nasz system centralny, była być może state of the art, potem już było tylko gorzej, bo wychodziły kolejne nowe wersje, ale miały breaking changes, więc dosyć ciężko było zaktualizować cały system centralny. Nadal mało znana technologia, która jest mało znana do teraz.
Natomiast to nie jest tak, że tylko takie leciwe technologie są w banku. One są głównie dlatego, ze w banku nie nastawiamy się na technologię dla technologii. Robimy technologię po to, żeby bank mógł dobrze funkcjonować. I system centralny to są 3 mln linii kodu, które są dopracowane i dostosowane do tego, żeby działać na nasze potrzeby. To jest coś, co nas wyróżnia, coś, czego nie mają inne banki. To jest przystosowane do nas, więc pielęgnujemy to. To jest potężna wartość, która jest tak ważna, że tolerujemy tak stare platformy, o jakich opowiadałem.
Tylko to nie jest tak, że my z nimi zostaniemy do końca. To nie jest tak, że mBank będzie skansenem technologicznym, bo ma system centralny. My tutaj dużo robimy, żeby się modernizować, zmieniać te technologie. I to jest cała droga, którą pamiętam od początku, odkąd tutaj pracuję, zaczęło się od takiego błyskotliwego pomysłu: to może uratujemy sobie nasz świat za pomocą C++. Wtedy C++ to był state of the art, najważniejsza, najlepsza technologia na świecie. Tyle że to była porażka, bo mało kto rozumiał ten język programowania, mało kto się nim sprawnie posługiwał, nadal tak jest, że to jest mimo wszystko takie specjalistyczne rozwiązanie, nie każdy potrafi z niego korzystać. A my tu mówimy o dużym rozwiązaniu, które powinno być skalowalne, więc to nie może być C++. Bardzo łatwo zrobić sobie nim krzywdę.
Więc dalej wybraliśmy ścieżkę .NET i pamiętam, że jest on w banku od czasu chyba wersji 2.0, może wcześniej, kiedy uznaliśmy, że jest on wystarczająco dojrzały, żeby w niego zainwestować. I nadal z nim pracujemy. Sam z siebie pokazuje on, jak bardzo gwałtownie zmieniają się technologie. Poza tym COBOL-em i jBasiciem standard C++, który też miał wcześniej taką zmienność niewielką, co 5 lat nowy standard, to teraz faktycznie co roku coś nowego się pojawia. Prawdopodobnie community C++ odżyło troszeczkę albo znalazło swoją niszę w postaci rozwiązań mobilnych, ale tu się zaczyna już dużo dziać.
.NET po tej swoje początkowej fazie, gdzie te zmiany wersji, zmiany standardu były rzadkie, teraz ma mnogość swoich wersji, które powoli tracą ważność. Co roku nowa wersja, teraz .NET Core, to wszystko powoduje, że ciężko mówić o tym, że ktoś jest specjalistą w jakiejś technologii i nim zostanie. Jakbym był specjalistą C++ do końca swojego życia, to powoli już bym tracił miejsce pracy, bo ich nie ma już dużo wbrew pozorom.
Poza tymi technologiami, .NET akurat jest naszym mainstreamem w departamencie, który zajmuje się korpo, w niego najwięcej inwestujemy, ale lubimy różnorodność i dywersyfikacje. Też taki system napisany w Javie, nasze okno na świat, i o nim dużo nie opowiem, bo się na nim nie znam. Java to miejsce, w którym długo nie zostałem, natomiast mamy genialny zespół, który w genialny sposób posługuje się językiem, technologiami związanymi z Javą do tego, żeby nasze okno na świat, frontend, utrzymywać, rozbudowywać, pielęgnować. Mam nadzieję, że oni też kiedyś będą mogli opowiedzieć o swoich podbojach i sukcesach.
To, co można zauważyć, to kiedyś usłyszałem takie celne sformułowanie, Hadi Harry w jednym ze swoich wystąpień powiedział o tym, że IT to jest self sustaining industry. I to faktycznie trochę tak wygląda. Znajdujemy problem, technologię, która rozwiązuje ten problem, dalej robimy z tego szkolenia, certyfikacje, wdrażamy, znajdujemy kolejne problemy, a na nie kolejną technologię, która to rozwiązuje.
I miałem opowiedzieć o tym, dlaczego mamy w banku tak dużo technologii. Bo tu się dużo dzieje. I wdrażamy te technologie faktycznie, mamy ich całkiem sporo, rozwiązań, które bazują na starych frameworkach i nie jesteśmy w stanie w sposób ciągły aktualizować tych rozwiązań, mimo że w banku wyrobiliśmy już sobie taką kulturę dbania o dług technologiczny i naprawiania tego długu technologicznego, to są dziesiątki lat intensywnego rozwoju zespołu, który zaczął się od mniejszego, skromnego, a potem urósł do takiego już dużego, 170-osobowego.
Ale żeby zapamiętać to, co jest najważniejsze, mainstream u nas to jest .NET, nawet z tym sercem w jBasiciu, co do którego mamy ambitne plany i toczy się taki mocno innowacyjny projekt, to jest to .NET, to jest mainstream, ale tak po inżyniersku patrzymy na ten świat i raczej staramy się używać narzędzi zgodnie z ich przeznaczeniem i nie fiksować się na jednej technologii.
.NET po tej swoje początkowej fazie, gdzie te zmiany wersji, zmiany standardu były rzadkie, teraz ma mnogość swoich wersji, które powoli tracą ważność. Co roku nowa wersja, teraz .NET Core, to wszystko powoduje, że ciężko mówić o tym, że ktoś jest specjalistą w jakiejś technologii i nim zostanie. Jakbym był specjalistą C++ do końca swojego życia, to powoli już bym tracił miejsce pracy, bo ich nie ma już dużo wbrew pozorom.
Rozumiem, czyli taka mnogość i różnorodność technologii, ale jednak z tym akcentem, że liczy się przydatność, użyteczność, utylitaryzm tych rozwiązań — na koniec dnia to muszą być sprawdzone rozwiązania.
Myślę sobie, że niezależnie od tego, jakiej technologii byśmy nie wybrali, to jednak równie ważnym elementem całego tego równania są ludzie, którzy tę technologię wykorzystają i zbudują z tego coś, co sprawdza się w prawdziwym świecie. Myślę tutaj o inżynierach, którzy na co dzień trudzą się, żeby rozwijać tego typu systemy, ale też utrzymywać je — bo myślę, że tutaj też trzeba powiedzieć, że w dużym stopniu znaczy, że te systemy muszą być utrzymywane.
Więc chciałbym Cię zapytać, jak ty widzisz i oceniasz pracę inżynierów w mBanku. Z czym ona się wiąże?
Celnie to nazwałeś, być inżynierem w mBanku, bo my mamy tak naprawdę inżynierów. To nie jest zespół deweloperów .NET, nie jest to zespół deweloperów Java Script. To są inżynierowie. I tak staramy się kształtować ten świat.
To jest bardzo ciekawe w ogóle, od czasu, gdy wystartowałem z mBankiem, to było takie miejsce, w którym od zawsze mieliśmy space na rozważne i innowacyjne podejście do rozwiązywania problemów. I to jest właśnie takie inżynierskie podejście, w którym lubimy zmierzyć, lubimy podjąć decyzję na bazie faktów, a nie subiektywnych przeświadczeń, chociażby o tym, że jBasic to jest technologia nikomu nieznana. No, jest znana i dobrze się sprawdza w niektórych sytuacjach. Lubimy rozumieć, w jakich sytuacjach się sprawdza, i nie boimy się zmiany. Jak opowiadałem, ta zmiana towarzyszy nam od początku, jBasic, C++, C Sharp, po drodze pojawiło się jeszcze sporo innych technologii, które nam ułatwiają życie, więc tak, my mamy inżynierów i oni są bardzo ważnym elementem tej układanki.
Tak na marginesie mówiąc, to jest w ogóle ciekawe, jak słowa klucze kreują rzeczywistość w IT. Dawno temu mój szef poprosił mnie, żebym się zdefiniował, co bym chciał robić w banku albo jak bym chciał, żeby funkcjonował mój zespół, czy ma się zajmować. I wtedy rozpoczęła się moja przygoda z zespołem architektury. Takiej architektury deweloperskiej, która zajmuje się bibliotekami wspierającymi inne zespoły, frameworkami, środowiskami testowymi, automatyzacją. To było super doświadczenie, polecam każdemu taką przygodę. Ale to był moment, w którym słowo architektura było unikalne. Ono jeszcze nie eksplodowało do tego znaczenia, które jest teraz. I z tego się cieszyłem, to było takie miejsce, że faktycznie tych architektów było mało.
I jakiś rok, dwa lata później, na jakimś spotkaniu szef przedstawia zespół, jesteśmy z dostawcą zewnętrznym, i szef mówi tak: To jest architekt systemowy, to jest architekt danych, to jest architekt procesów. Architekt architekta architektem pogania. To był ten moment, w którym słowo architekt straciło jakiekolwiek znaczenie.
Tak samo stało się teraz może trochę ze słowem inżynier. Nie mów nikomu, jakiś czas temu na LinkedInie zasubskrybowałem sobie informacje o wszystkich ofertach pracy ze słowem kluczowym inżynier. I początki były takie, że raz na pół roku coś wpadło. A teraz jest tego zalew. Wszystko dlatego, że takie duże firmy, jak Microsoft, które od zawsze mówiły o swoich inżynierach, Google, Amazon i pewnie jeszcze inne, faktycznie podbiły znaczenie tego inżynieryjskiego podejścia do rzeczywistości. Bo ciężko w tym naszym świecie być obecnie specjalistą w jednej dziedzinie.
Teraz powiem zupełnie niesprawiedliwie, dawno temu, jak ktoś został kowalem, to był kowalem do końca życia. Kowal nadal musi się szkolić i uczyć, wiem to z pierwszej ręki, natomiast nadal jest kowalem. A u nad deweloper .NET za 5 czy 10 lat już pewnie nie będzie deweloperem .NET, tylko będzie zajmował się zupełnie inną technologią, bo nie będzie miał za bardzo wyjścia.
Więc tak, lubimy mierzyć, lubimy podejmować decyzje w oparciu o fakty, ale do tego jest potrzebny też menedżer inżynier, to nie jest tak, że każdy będzie w stanie podjąć dobre decyzje, bo one muszą być projektowe, czy mówiąc o ciągłości działania w banku, tak jak powiedziałeś, wysoka dostępność, wysoka jakość, ten menedżer też musi być trochę inżynierem, musi rozumieć to, czym zarządza. I jako inspiracja z jednego z Twoich podcastów, którego wysłuchałem, z Alkiem Gawrońskim, o jednostce 8200 Israela. Tam jest bardzo ciekawy sposób opisany, jak się szkoli takich wybitnych specjalistów. I oni pracują w takich sytuacjach konieczności i braku zasobów.
I my trochę tak pracujemy w mBanku, tzn. wiemy, co jest ważne, na kiedy, negocjujemy zakres prac i do tego też menedżer inżynier jest bardzo użyteczny, i nie ma tu tego przerostu formy nad treścią. To nie jest przeinwestowane miejsce, w którym mamy plus 20 ludzi tylko na wszelki wypadek. Tu zawsze pracy jest więcej niż ludzi, którzy mogą ją wykonać, ale to skutkuje tym, że to, co robimy, jest mocno przemyślane, jest ustrukturyzowane i buduje taką architekturę, z którą da się pracować. I to jest bardzo ważna cecha.
Więc bycie inżynierem to nie tylko deweloper programista, ale to też te kolejne warstwy: menedżerskie, team liderskie, które powodują, że można być inżynierem w banku i z godnością pracować, proponować rozwiązania i ktoś tego wysłucha i nawet to zrozumie, i nie skasuje dobrego pomysłu tylko dlatego, że nie spina mu się w Excelu.
I my trochę tak pracujemy w mBanku, tzn. wiemy, co jest ważne, na kiedy, negocjujemy zakres prac i do tego też menedżer inżynier jest bardzo użyteczny, i nie ma tu tego przerostu formy nad treścią. To nie jest przeinwestowane miejsce, w którym mamy plus 20 ludzi tylko na wszelki wypadek. Tu zawsze pracy jest więcej niż ludzi, którzy mogą ją wykonać, ale to skutkuje tym, że to, co robimy, jest mocno przemyślane, jest ustrukturyzowane i buduje taką architekturę, z którą da się pracować. I to jest bardzo ważna cecha.
👉 Czytaj dalej na: https://porozmawiajmyoit.pl/poit-176-co-oznacza-bycie-inzynierem-w-banku-case-mbanku/