inhire.ioBlogPraca w ITJak się pracuje, programuje i awansuje w Syncron – wywiad z Krzysztofem Dudzikiem

Jak się pracuje, programuje i awansuje w Syncron – wywiad z Krzysztofem Dudzikiem

Praca w IT
24/03/2021

Znajomość Javy jest oczywiście plusem, ale zdarzali nam się świetni pracownicy, którzy wcześniej pisali wyłącznie w C# czy Pythonie. Zresztą nie ma co daleko szukać, sam w poprzedniej firmie programowałem głównie w Perlu – mówi Krzysztof Dudzik, Engineering Lead w Syncron.

Opowiedz proszę o Syncron, kim jesteście, czym się zajmujecie?

Syncron jest szwedzką firmą z kilkoma biurami rozsianymi po całym świecie, z których to warszawskie jest największe – i to my w dużej mierze napędzamy rozwój głównego produktu, który tworzymy już od kilkunastu lat: Syncron Inventory.

Jest to aplikacja przeznaczona dla wielkich firm zmagających się z problemem optymalizacji łańcuchów dostaw i stanów magazynowych. W wielkim uproszczeniu wygląda to tak: klient przesyła nam szczegółowe informacje o swojej sieci magazynów, ich bieżącym stanie oraz popycie na poszczególne przedmioty. My przepuszczamy te dane przez liczne algorytmy, prognozujące zapotrzebowanie w przyszłości i w efekcie generujące sugestie zamówień na każdy kolejny dzień.

Firmy korzystające z aplikacji są bardzo różne i każda ma swoją specyfikę. Wiele z nich to potentaci w swoich branżach – każdemu z naszych pracowników zdarza się często przechodzić koło kombajnu, ciężarówki albo koparki, do których części zamienne musiały w którymś momencie zostać przeanalizowane przez Inventory.

Dlaczego warto z Wami pracować?

Przede wszystkim Syncron to miejsce, w którym pracownicy nieustannie mogą się uczyć, chociażby od siebie nawzajem. To widać choćby po tym, kto znajduje się na stanowiskach liderskich w dziale Engineering – są to naprawdę doświadczeni programiści, którzy często w naszej firmie są już od kilkunastu lat.

Rekrutujemy osoby na wszystkich poziomach, a wiele osób zostaje z nami na długo. Niezależnie od tego, do którego zespołu trafisz, możesz mieć pewność, że ktoś naprawdę kompetentny będzie dbał o Twój rozwój – i to nie tylko przez pierwsze miesiące, ale przez długie lata.

Pomagają w tym ogólnofirmowe procesy – zamiast tradycyjnej oceny okresowej każdy zastanawia się wspólnie z przełożonym, w jakim kierunku i w jaki sposób się rozwijać.

Mamy też dostęp do Udemy for Business – platformy, na której łatwo można znaleźć kursy online na bardzo rozmaite tematy, od mikroserwisów po zarządzanie projektami.

Drugi element, który powinien przemawiać do wielu developerów, to duży nacisk na jakość. W systemie takim jak Inventory nie możemy sobie pozwolić na fuszerkę – błąd w obliczeniach to potencjalne olbrzymie straty finansowe dla klienta.

Aplikacja ma około miliona linii kodu, a każdą kolejną klasę piszemy z myślą o tym, że za kilka lat sami będziemy musieli zrozumieć, co siedziało nam w głowach w trakcie implementacji.

Z tego względu robimy tysiące testów automatycznych, dających komfort przy częstych refaktoryzacjach. Stąd także wydzielony budżet czasowy poświęcony na rozwiązywanie problemów dokuczającym nam samym, np. długi czas kompilacji. I wreszcie, obowiązkowe code review, będące najlepszą okazją do wymiany wiedzy pomiędzy programistami.

Jak trafiłeś do Syncron?

To była ciekawa sytuacja. Mój dobry kolega, z którym pracowaliśmy w poprzedniej firmie, w 2016 roku jako pierwszy zdecydował się zmienić pracodawcę na Syncron. Po paru miesiącach był tak zachwycony różnicami, jakie spotkał po tej zmianie, że łatwo namówił mnie do tego samego. Po kolejnych kilku miesiącach dołączyło nas jeszcze dwóch.

Od tej pory minęły już ponad 4 lata, a wszyscy teraz współtworzymy Inventory. Ja sam na początku pracowałem jako programista w dość frontendowym zespole, co pozwoliło mi nawiązać kontakt z nowoczesnymi technologiami i przypomnieć sobie, jak fajne może być programowanie.

Traf chciał jednak, że po roku zaproponowano mi objęcie stanowiska lidera zespołu w zupełnie innej specjalizacji. A ponieważ nasi kierownicy na ludziach się znają, to zgodziłem się na zmianę – w końcu sami stwierdzili, że dam sobie radę. I rzeczywiście, dziś spełniam się w roli Engineering Leada, która łączy to, co dla mnie ciekawe, z tym, w czym chyba jestem niezły.

Po zmianie firmy byłem zdziwiony, jak wiele jest elementów, które mozolnie wdrażaliśmy u poprzedniego pracodawcy – a tutaj były naturalnym elementem codziennej pracy. Co jeszcze mnie zaskoczyło? Przede wszystkim to, że firma rozwijająca tę samą aplikację niemal od początku XXI wieku nie musi byś skansenem technologicznym.

Właśnie – w obszarze jakich technologii poruszacie się w Syncron?

Jeśli chodzi o sam kod, to przede wszystkim jest to Java, przy czym kluczowymi “dodatkami” są Spring i Hibernate. Co najważniejsze, obecnie używamy wersji 11, a już dawno temu (jeszcze przed moim przyjściem do firmy) kod został masowo zaadaptowany do wszystkich dobrodziejstw Javy 8+.

We wrześniu 2021 wyjdzie kolejna wersja LTS (Java 17) i już teraz zaczynamy się zastanawiać, kiedy zarezerwować czas na zaktualizowanie do niej Inventory.

Inny ważny temat to technologie chmurowe. Od kilku lat całość naszej infrastruktury jest hostowana w AWS. Głównymi elementami systemu są obecnie kontener dockerowy z aplikacją w Spring Boot oraz baza PostgreSQL na RDS.

Wiele jednak się zmieniło w ostatnich latach i wiele jeszcze się zmieni. Nowe funkcje często implementujemy jako mikroserwisy dookoła głównej monolitycznej aplikacji, wykorzystując technologie serverless takie jak AWS Lambda, Fargate czy SQS.

Nie będę udawać, że technologicznie nie ma już nic do zarzucenia. Frontendowo mamy jeszcze sporo lekcji do odrobienia – od czasu, kiedy do tworzenia UI wybrano JSF, zmienił się nie tylko krajobraz frameworków, ale przede wszystkim filozofia tworzenia aplikacji webowych.

Dziś wzorzec MVC odchodzi do lamusa, dlatego czeka nas konieczność dostosowania się do zmian w tym zakresie. Niektóre elementy interfejsu są już oparte na Angularze i wykorzystują GraphQL-owe API, jednak do ukończenia transformacji UI sporo nam jeszcze potrzeba.

Poza klockami, z których budujemy aplikacje, są też inne technologie – te, które pozwalają nam efektywnie tworzyć kolejne zmiany. To oczywiście system CI (Jenkins), dobre narzędzie do code review (Gerrit), jak i standardowe narzędzia: Jira, Confluence oraz cały pakiet Microsoft.

Czytaj także – Kobiety w IT z perspektywy T-Mobile

Jak wygląda rekrutacja do Syncron? Jakie kompetencje i umiejętności cenicie najbardziej?

Skupiamy się nie na konkretnych technologiach, ale przede wszystkim na umiejętności rozwiązywania problemów. W procesie rekrutacyjnym dla deweloperów kluczowe są trzy krótkie rozmowy techniczne – każda przeprowadzona przez inną osobę i skupiona na innych tematach.

Szukamy kandydatów wszechstronnych, po których widać otwarty umysł i chęć do nauki nowych zagadnień. Tutaj nie ma kompromisów – możesz być świetnym ekspertem od Hibernate’a albo AWS, ale bez poświęcenia sporej ilości czasu na zrozumienie aspektów biznesowych będzie ci trudno się odnaleźć w Syncron.

Znajomość Javy jest oczywiście plusem, ale zdarzali nam się świetni pracownicy, którzy wcześniej pisali wyłącznie w C# czy Pythonie. Zresztą nie ma co daleko szukać – sam w poprzedniej firmie programowałem głównie w Perlu.

Teraz rekrutujemy w pełni online, co postawiło przed nami trochę wyzwań. Mimo to postanowiliśmy zachować ważny element naszych rozmów z kandydatami – kodowanie na żywo.

W biurze wykorzystywaliśmy laptop podpięty do rzutnika, teraz zamiast tego mamy CodePair HackerRanka. Poza samym rozwiązaniem zadania istotna jest też rozmowa na jego temat. Programista w Syncron musi umieć dyskutować o swoim kodzie, porównywać różne rozwiązania, krytycznie podchodzić do już istniejącego kodu – żadna linijka Inventory nie została przecież napisana przez nadczłowieka.

Po rozmowach oceniamy nie tylko biegłość w używaniu IDE i sprawność algorytmiczną, ale też umiejętności interpersonalne. Zależy nam na tym, żeby nowe osoby do firmy trafiały na długo – tym ważniejsze jest, żeby dobrze się nam dogadywało.

Jeśli miałbyś udzielić jednej rady, jeśli chodzi o rozwój i karierę nowicjuszom z szeroko rozumianego IT byłoby to…?

Podkreślę to, co jest najważniejsze dla mnie samego – otwarty umysł i chęć nauki w najróżniejszych dziedzinach, nawet pozornie niezwiązanych z kodowaniem.

Programista to zawód podobny do prawnika czy lekarza – przez całe życie trzeba nadążać za trendami i nowinkami. Dużo dalej i szybciej zajdą też ci, którzy postawią na zdobywanie umiejętności miękkich, takich jak organizacja czasu, efektywna komunikacja, dawanie i przyjmowanie konstruktywnych informacji zwrotnych.

Posłużę się analogią, która może trafić do programisty – moim zdaniem kiedy zastanawiasz się, w naukę czego zainwestować czas, zazwyczaj warto skorzystać z algorytmu BFS, a nie DFS. Kiedy masz ogólne pojęcie o wielu różnych tematach, łatwiej przyjdzie ci zmierzyć się z nauką czegoś kompletnie nowego. Niwelujesz też ryzyko tego, że Twoja specjalizacja stanie się w którymś momencie nieaktualna.

To prawda, że popyt na specjalistów od COBOL-a wciąż istnieje – ale czy warto zamykać sobie większość dróg pojawiających się w przyszłości? Ucz się wszystkiego, co wpadnie ci w ręce, słuchaj, dyskutuj z ludźmi o innych poglądach – zarówno w IT, jak i wszędzie indziej!

Sprawdź aktualne oferty pracy w Syncron https://inhire.io/pracodawca/syncron-poland/oferty-pracy