35 milionów linii kodu Microsoftu. Historia Kacpra Rzepeckiego

– Jednym z wielu benefitów bycia w Microsofcie jest właściwie nieograniczony dostęp do autorytetów z dziedziny IT. Masz pytanie odnośnie .Net? Idziesz na kawę z Andersem Hejlsbergiem – jednym z ojców C# i TypeScript – mówi Kacper Rzepecki, Group Engineering Manager w Microsoft. Kacper tak zaangażował się w rozwój firmy, że przekonał zarząd Microsoftu do otwarcia oddziału w Szanghaju.

Twoja ścieżka kariery jest imponująca, opowiedzmy ją proszę szczegółowo i po kolei. Zacznijmy od tego, że na Politechnice Poznańskiej znalazłeś ogłoszenie o pracę w Microsofcie. Co to było za stanowisko i jak przebiegał proces rekrutacji?

Było to stanowisko SDET – Software Development Engineer in Test – programisty zajmującego się pisaniem testów, a także narzędzi i frameworków wspierających ogólnie pojęty proces zapewniania jakości oprogramowania.

Sam proces rekrutacji był bardzo prosty – po wysłaniu CV dostałem zaproszenie na spotkanie na mojej uczelni. W ciągu trzech godzin przeszedłem rozmowy z trzema managerami, którzy przylecieli z Kopenhagi. Każda z tych rozmów miała podobny schemat: najpierw kilka pytań na rozgrzewkę (rozmowa odbywała się w j. angielskim) – „opowiedz o sobie”, „opowiedz o projekcie, który masz w CV” itp., następnie przejście do meritum, czyli rozwiązania problemu algorytmicznego, a później napisanie testów pokrywających ów problem. Przez ostatnie lata sam przeprowadziłem dziesiątki rekrutacji – i zawsze prezentuję kandydatom te same problemy, które musiałem rozwiązać 8 lat temu. Do dziś jestem zaskakiwany nowymi rozwiązaniami.

Jeszcze przed rozpoczęciem pracy odwiedziłeś stolicę Danii? Samodzielnie szukałeś mieszkania?

Gdy dostałem ofertę byłem pod tak dużym wrażeniem, że nawet nie przyszło mi to do głowy! Moja decyzja była poprzedzona kilkoma godzinami spędzonymi przed komputerem. To co znalazłem brzmiało interesująco; ojczyzna Carlsberga i Lego, najszczęśliwszy kraj na świecie, wszechobecność rowerów, nawet informacja o 60% stawce podatkowej mnie nie przestraszyła. Podejmowanie decyzji, gdy ma się 23 lata jest naprawdę proste! Oczywiście nie bez znaczenia było wsparcie moich wykładowców, którzy umożliwili mi półoficjalne studia zdalne – dzięki czemu równolegle z pierwszym rokiem pracy mogłem ukończyć studia magisterskie.

Całość przeprowadzki była bezstresowa. Mile zdziwiło mnie, że w Danii wszystkie dokumenty i formularze, które musiałem wypełnić były po angielsku i absolutnie każdy chętnie posługuje się tym językiem. Całość formalności zamknęła się w jednej wizycie w urzędzie, która zajęła może 30 minut. Przez pierwszy miesiąc miałem zapewnione tymczasowe zakwaterowanie w hotelu, natomiast w poszukiwaniu mieszkania pomagała mi agencja relokacyjna zapewniona przez MS.

Czym na początku zajmowałeś się w Microsofcie?

Do dziś pracuję nad tym samym produktem – aplikacją typu ERP – Microsoft Dynamics AX, która po przeniesieniu do chmury została przemianowana na Dynamics 365 for Finance and Operations. Jest to olbrzymi system – ok. 35 milionów linii kodu – używany przez największe firmy świata do zarządzania wszystkimi aspektami prowadzenia biznesu, czyli chociażby kadrami, sprzedażą, zaopatrzeniem, logistyką, finansami, marketingiem, produkcją itp.

Trudno pracować nad takim potężnym produktem?

Praca nad oprogramowaniem biznesowym jest bardzo trudna; po pierwsze wymaga nie tylko wiedzy z dziedziny IT, ale też dobrego zrozumienia jak wyglądają procesy biznesowe od podszewki – to było dla mnie największym wyzwaniem! Szokiem dla mnie było to, że na początku sam nie byłem w stanie zrozumieć specyfikacji czy problemów, które rozwiązywaliśmy – ponieważ te wymagały dogłębnej znajomości zagadnień z zakresu logistyki, księgowości czy ogólnie pojętego biznesu, podczas gdy ja dołączając do Microsoftu nie wiedziałem nawet jak po angielsku powiedzieć „faktura”.

Po drugie są to kontakty B2B i gdyby sprawy szły w złym kierunku, nasza firma musi liczyć się z reperkusjami prawnymi i wysokimi odszkodowaniami za przestój biznesu. Dzięki standardom jakości takie sytuacje na szczęście nie zdarzają się, jednakże każdy z nas ma świadomość odpowiedzialności jaka na nas spoczywa; niewinny błąd może spowodować, że na drugim końcu świata stanie cała fabryka, kasy fiskalne w sieci hipermarketów przestaną działać czy wielki koncern nie rozliczy się z podatków.

Na początku zajmowałem się testowaniem funkcjonalności z obszaru Supply Chain Management. Polegało to głównie na pisaniu scenariuszy testowych, testowaniu wydajności, analizie wyników, a także znajdowaniu luk w specyfikacji. Były to zajęcia, które sprawiały mi mnóstwo frajdy, a jednocześnie była to doskonała droga do zrozumienia wymagań naszych klientów.

Z ilu osób składał się zespół, w którym pracowałeś?

Zmieniało się to, ale na początku liczył około 10 osób, jednak przez ostatnie lata pracowałem zarówno w mniejszych, jak i większych zespołach. Mamy bardzo elastyczną strukturę i potrafimy zmieniać skład naszych teamów każdego dnia tak, żeby jak najlepiej dopasować zadania do pasji i umiejętności naszych programistów. Największe zespoły, w których dotąd działałem miały ok. 50 osób.

Dlaczego zainteresowałeś się innymi zagadnieniami niż programowanie? Jak przebiegał Twój rozwój w Microsofcie?

Gdy dołączyłem do Microsoftu uświadomiłem sobie, że bycie doskonałym inżynierem to nie tylko pisanie kodu w słuchawkach, a czasy, kiedy kilku inżynierów w garażu mogło zmienić branżę IT odeszły do lamusa. Dziś pracujemy nad systemami, które składają się z milionów linii kodu pisanymi przez setki programistów. Bardzo szybko zrozumiałem, że mogę być najlepszym inżynierem pod słońcem (do czego bardzo mi daleko), ale jeżeli nie będę w stanie przekonać innych zespołów do pomocy, to realizacja mojego projektu zostanie ograniczona 24-godzinną dobą.

Świeżo po studiach z współczuciem patrzyłem na wszelakiego typu managerów. Myślę, że wielu świeżo upieczonych inżynierów zna to uczucie – przecież nie po to zgłębialiśmy przez lata tajniki algorytmów i dziesiątków języków programowania, by to porzucić na rzecz nudnych spotkań i pisania setek maili.

Bardzo szybko moje podejście zmieniło się, gdy zobaczyłem, że moi managerowie w żadnej mierze nie przestali być doskonałymi inżynierami i poza dbaniem o cały zespół, sami biorą na siebie najtrudniejsze zadania, a spotkania i maile najeżone są technikaliami. Po około trzech latach w firmie sam zacząłem podążać tą drogą, zaczynając od pozycji Scrum Mastera, następnie poprzez pozycję project leada kończąc na pozycji managera.

W jaki sposób podnosiłeś swoje umiejętności miękkie i twarde?

Jednym z wielu benefitów bycia w Microsofcie jest właściwie nieograniczony dostęp do autorytetów z dziedziny IT. Masz pytanie odnośnie .Net? Idziesz na kawę z Andersem Hejlsbergiem – jednym z ojców C# i TypeScript. SQL sprawia Ci kłopoty? Mamy zespół kilkuset inżynierów, którzy stworzyli SQL Server od podstaw. Zastanawiasz się, dokąd zmierza świat komputerów? W tym samym budynku pracuje kilkudziesięciu badaczy pracujących nad komputerami kwantowymi. Myślę, że 90% mojego rozwoju jest zasługą moich kolegów i koleżanek – wiedzę w środowisku pełnym pasjonatów zdobywa się niemal przez osmozę.

Poza zdobywaniem wiedzy i doświadczenia przy pracy nad codziennymi zadaniami istnieje wiele inicjatyw wymierzonych w inkubowanie nowych pomysłów. Jedną z moich ulubionych są laboratoria MS Garage. Są to imponujące centra rozsiane po naszych oddziałach na całym świecie; wyposażone w sprzęt do druku 3d, obrabiarki CNC, wycinarki laserowe, komponenty elektroniczne, lutownice, narzędzia wszelkiego typu, drony, płytki prototypowe, mikroskopy… długo by wymieniać. Nie mają one żadnego przeznaczenia biznesowego – są oddane w pełni w ręce pracowników, którzy mogą realizować tam własne projekty.

Od druku 3d własnych otwieraczy do piwa przez budowę kopalni BitCoinów, po prototypy nowych urządzeń. Jestem również wielkim fanem Hackathonu – trzydniowego festynu, podczas którego każdy inżynier Microsoftu może pracować nad swoim projektem marzeń i zachęcić innych do dołączenia. Wiele z tych projektów przerodziło się w startupy czy projekty oficjalnie rozwijane przez naszą firmę.

Oczywiście mamy zapewnione multum szkoleń i warsztatów, a także wsparcie dalszej edukacji, chociażby studia MBA.

Jeśli chodzi o budowanie kariery korzystam z pomocy mentorów – relacji z liderami innych organizacji, nie związanymi z moją codzienną pracą (chodzi o to, żeby codzienne zadania nie przesłoniły meritum). W ramach takiej relacji dyskutujemy o długofalowych planach i rozwoju – jest to świetny sposób na dostanie świeżej perspektywy „z zewnątrz”, a także okazja do wymiany doświadczeń i kontaktów w całym świecie IT.

“W Microsofcie byłem świadkiem dużych zmian – poczynając od połączenia dyscyplin testerów i developerów w jedną” – napisałeś w rozmowie przed wywiadem. Jak odbywało się to połączenie?

Podział na testerów i devów jest wciąż dość popularny w wielu firmach. Idea jest całkiem słuszna – wprowadzenie systemu kontroli i zapewniania jakości, w którym osoby odpowiedzialne nie odczuwałyby konfliktu interesów pomiędzy jakością a agresywnymi deadlineami. W praktyce system taki miał więcej wad niż zalet; w ekstremalnych przypadkach powodowało to, że SDE którzy tworzyli kod czasem zapominali o zaimplementowaniu go w architekturze, która umożliwiałaby łatwe przetestowanie. SDET czasem zapominali, że również są programistami i nic nie stoi na przeszkodzie, żeby niektóre niedociągnięcia naprawiali sami. Inżynierowie z obydwu dyscyplin wynajdywali na nowo narzędzia do rozwiązywania tych samych problemów. Słyszałem o sytuacjach wręcz absurdalnych; chociażby sytuacji, gdy kod produkcyjny i testowy były napisane w innych językach. Również z punktu widzenia zarządzaniem zespołem model taki jest mniej elastyczny niż jedna, uniwersalna dyscyplina.

Wprowadzenie tej zmiany zaczęło się od wprowadzenia nowego tytułu: Unified Engineer. Pomimo, iż sam tytuł nie przetrwał próby czasu, to spełnił swoją rolę – był to bardzo widoczny sposób pokazania, że nowe obowiązki i umiejętności muszą nabyć wszyscy – zarówno testerzy, jak i deweloperzy.

Kolejne kilka tygodni były wypełnione bardzo agresywnym rozpoznawaniem co „druga strona ma do zaoferowania”. Najwięcej wyniosłem po prostu siadając do klawiatury z jednym z naszych najbardziej doświadczonych devów i robiąc pair-programming, w którym pisałem kod produkcyjny, podczas gdy mój partner pisał kod testowy. Po kilku dniach obydwoje mieliśmy bardzo dobry ogląd naszych bolączek.

Rola organizacji w tej zmianie ograniczała się do wsparcia inżynierów przy znalezieniu odpowiedniego bilansu pomiędzy jakością, a tempem dostarczania nowych funkcjonalności, cała reszta potoczyła się w naturalny sposób – każdy instynktownie czuł, że to jest dobry ruch.

Z perspektywy czasu uważasz to za dobry ruch?

Tak! Jak z każdą inwestycją staraliśmy się przeanalizować jej mierzalne efekty – okazało się, że w przeciągu kilku tygodni nasza wydajność wzrosła (po krótkotrwałym spadku gdy nawzajem musieliśmy przyswoić sobie wiedzę „drugiej strony”), przy jednoczesnym wzroście jakości i polepszeniu pokrycia testami. Po sześciu latach nikt nawet nie wspomina o powrocie do starego modelu.

Przez ostatni rok pracowałeś nad projektem otwarcia biura Microsoftu w Szanghaju. Od czego zacząłeś pracę nad tym projektem?

Pomysł pojawił się w mojej głowie jako odpowiedź na doraźne problemy z jakimi się spotykaliśmy. Po pierwsze konieczność wspierania naszych klientów we wszystkich strefach czasowych czasem wymagała pracy po godzinach czy wręcz w środku nocy. Oczywiście było to rekompensowane przez dodatki do wypłat i dodatkowe dni wolne, lecz mimo to budziło to zrozumiały dyskomfort wśród inżynierów.

Po drugie obecność dużego centrum R&D w centrum finansowym Azji pokazuje nasze zaangażowanie w rejonie APAC. Już w tej chwili prowadzimy rozmowy nad bliższą współpracą ze strategicznymi klientami regionu, dla których obecność zespołu czy biura Microsoftu, z którym mogą bezpośrednio współpracować jest warunkiem koniecznym nawiązania bliższych relacji.

Po trzecie region APAC, a w szczególności rynek chiński cechuje się szczególnymi wymaganiami od produktu ERP; wszechobecność płatności mobilnych, integracja z największymi lokalnymi platformami IT typu WeChat czy AliBaba, szczególne wymagania dotyczące suwerenności danych (Azure Mooncake).

Od czego zacząłem? Oczywiście od rozmów z najbliższymi; rodziną i przyjaciółmi. Gdy dostałem zielone światło na tym polu, przedstawiłem mój pomysł mojemu managerowi. Mówiłem może przez 10 minut, po czym usłyszałem „To ma sens. Czego potrzebujesz?”.

Jak Microsoft wspierał Cię w tym działaniu i co Twoim zdaniem przeważyło nad tym, by zgodził się na otwarcie nowego oddziału?

Dostałem pełne wsparcie ze strony Microsoftu już na bardzo wczesnym etapie – gdy jeszcze sam nie wiedziałem czy to dobry pomysł. Wsparcie to miało głównie postać mentoringu, doradztwa i otwartych drzwi do każdego kto mógłby rozjaśnić moje wątpliwości i pomóc podjąć mi właściwą decyzję; poczynając od zarządu MS w Chinach, działów HR na całym świecie, osób prowadzących podobne projekty w przeszłości, na personelu placówek dyplomatycznych czy doradcach podatkowych kończąc. Oczywiście dostałem również wolną rękę, jeśli chodzi o podróże służbowe – wielokrotnie odwiedzałem Szanghaj zanim podjąłem ostateczną decyzję. Szanghaj nie był też jedynym miejscem, które braliśmy pod uwagę.

Nigdy nie miałem poczucia, że moim zadaniem jest bycie adwokatem tego pomysłu. Ostatecznie to ja musiałem rozważyć wszystkie „za” i „przeciw”, aby podjąć właściwą decyzje, a firma polegała głównie na moim osądzie. Ostatecznie rozrachunek był bardzo prosty – to jest ruch, który jest dobry dla naszych klientów, użytkowników, a także dla naszych inżynierów, więc jest to inwestycja warta ryzyka i wysiłku. A że to wspaniałe przeżycie przy okazji? Tym lepiej!

Ile osób zamierzacie zatrudnić i kogo szukacie?

W tej chwili chciałbym, aby zespół w Szanghaju urósł do ok. 70 osób. Poszukujemy głównie programistów, ale mamy również otwarte pozycje na stanowiskach managerskich. Jeśli dla którejś z naszych czytelniczek lub czytelników Szanghaj brzmi jak ciekawa przygoda na najbliższe lata, zapraszam do kontaktu: kacper@microsoft.com.


Kacper Rzepecki. Group Engineering Manager w Microsoft.Absolwent Wydziału Informatyki Politechniki Poznańskiej. Ekspert w dziedzinie aplikacji biznesowych. Od 8 lat rozwija najbardziej złożone systemy IT świata. Od kilku tygodni mieszka w Szanghaju, gdzie tworzy nowe możliwości rozwoju dla Microsoftu.

Patronujemy

 
 
Polecamy
Programiście trudno znaleźć pracę w Japonii. Historia Grzegorza Chuchro