Każda firma powinna inwestować w swój zespół. Historia Macieja Kopeć
– EPAM ma bardzo dobrze rozwinięty temat mentoringu. Z każdej dziedziny jest zespół ekspertów, którzy prowadzą mentoring. Przygotowują oni tematy, formę zajęć czy też problemy jakie są poruszane podczas zajęć – powiedział nam Maciej Kopeć, Lead Software Engineer w EPAM Systems (oddział w San Francisco). Jak ważne jest przekazywanie wiedzy pomiędzy pracownikami? O tym dowiecie się z naszej rozmowy.
Spis treści
Pamiętasz, co sprawiło, że pierwszy raz poczułeś, że chcesz zostać programistą?
Jestem ze „starej szkoły”. Programistą, chociaż wtedy nie wiedziałem, że tak to się nazywa, chciałem zostać gdy miałem jakieś 9-10 lat. Dokładniej mówiąc, gdy w moim domu pojawiła się Amiga 500. Wcześniej starszy brat przynosił Pegasusa czy Commodore, jednak to Amiga 500 pozwoliła mi na pisanie pierwszych programów. Bardzo prostych rzecz jasna, jednak programów.
Jak wyglądał wówczas dostęp do materiałów edukacyjnych? Były to wpisy użytkowników, czy pewnego rodzaju tutoriale/kursy?
Cóż były to czasy, gdy Internet nie był ogólnodostępny. Nie miałem Internetu w domu, więc wiedzę czerpałem głównie z książek oraz manuali. W późniejszym czasie oczywiście Internet stał się głównym źródłem informacji. Kanały na IRC o tematyce związanej z programowaniem oraz fora internetowe – to były moje główne źródła poza książkami. Tutoriale owszem były, jednak ich jakość była bardzo słaba. Większość materiałów była oczywiście po angielsku.
Dziś wygląda to zupełnie inaczej – czy forma jest bardziej przystępna, ale nadal główne czynniki zostały zachowane?
Zdecydowanie. Dziś postrzeganie programistów, tudzież “komputerowców” zmieniło się. Stereotypowy facet w kraciastej koszuli to już przeszłość. Zawód stał się bardziej przystępny z wielu względów – myślę, że jednym z powodów jest właśnie dostępność materiałów i przede wszystkim Internetu.
Jakość kursów, tutoriali oraz samej dokumentacji stoi na zdecydowanie wyższym poziomie. Tutoriale są przystępne, zrobione w ciekawej formie oraz przedstawiające problemy, które są ciekawe do rozwiązania. Do dziś wspominam, jak trudno mi było zrozumieć potrzebę programowania obiektowego. Wszystkie przykłady w książkach omawiały ten temat na przykładzie Animal, Cat and Dog. A ja nie mogłem zrozumieć po co mi to, skoro chcę połączyć się z bazą danych. Teraz mam wrażenie, że przykłady są dużo bardziej życiowe.
Jak wspominasz studia informatyczne na Politechnice Krakowskiej? Dziś także wybrałbyś ten kierunek?
Wspominam je bardzo dobrze, chociaż na pierwszym roku często zadawałem sobie pytanie: co ja tutaj robię? Prawdopodobnie tak jak wiele osób na moim kierunku. Ogromna ilość matematyki, fizyki, elektroniki i innych przedmiotów bezpośrednio mało związanych z programowaniem. Tak mi się przynajmniej na początku wydawało. A ja chciałem tylko tworzyć gry.
Wziąłeś udział w programie ITPro. Opowiedz na czym polegał. W trakcie studiów na Politechnice Krakowskiej dowiedziałem się o programie ITPro. Jest to program skierowany dla studentów ostatniego roku I stopnia kierunku Informatyka. Fińska uczelnia JAMK prowadzi ten program we współpracy z kilkoma uczelniami europejskimi, w tym z Politechniką Krakowską. W skrócie polega on na tym, że na trzecim roku wyjeżdża się na rok do Finlandii. Pisze się tam pracę inżynierską, którą na koniec trzeba obronić. W efekcie zdobywa się tytuł inżyniera z JAMK oraz z Politechniki Krakowskiej.
Pisanie pracy inżynierskiej w Finlandii wygląda trochę inaczej niż w Polsce. Otóż wymagany jest półroczny staż w firmie informatycznej. Na podstawie tej pracy pisze się pracę inżynierską. Mentor z firmy jest jednocześnie częścią komisji egzaminacyjnej.
Sama rekrutacja na program polega na zaprezentowaniu swoich umiejętności w trakcie rozmowy kwalifikacyjnej z przedstawicielami fińskiej uczelni.
Pracowałeś w Finlandii – czego nauczyłeś się w firmie, dla której przeprowadziłeś się?
Napisanie pracy inżynierskiej wiązało się z odbyciem stażu. Już przed wyjazdem wiedziałem, że jest taka firma w Jyväskyli (miasto do którego wyjechałem), która będzie otwierać placówkę w Polsce i w związku z tym z chęcią przyjmie na staż polskich studentów. Tak też trafiłem do firmy Descom, która specjalizowała się w rozwiązaniach e-commerce.
Prawdę powiedziawszy to tam tak naprawdę nauczyłem się programować w Javie. Wcześniej to nie był zdecydowanie mój język programowania, chociaż miałem za sobą napisanych parę aplikacji na Androida. Był to też mój pierwszy raz, gdy pracowałem w międzynarodowym środowisku.
W pracy dla Descom pierwszy raz doświadczyłeś pracy na skalę enterprise. Jakiego rodzaju to była zmiana dla Ciebie? Czego Cię to nauczyło?
Praca w Descomie nie była moją pierwszą pracą w zawodzie. Jednak była to moja pierwsza praca w tak dużej firmie. Nie była to co prawda korporacja, jednak pierwszy raz miałem okazję pracować przy projektach dla największych firm w Europie i na świecie.
Pracowałem głównie z technologiami IBMu (WebSphere Application Server i WebSphere Commerce), co miało swoje dobre i złe strony. Dobrą było na pewno doświadczenie pracy z rozwiązaniami, które “zawsze działają”. Integracja wielu systemów ze sobą bez tworzenia monolitu wiele mnie nauczyło, jeżeli chodzi o samo programowanie. Zauważyłem, że coraz więcej czasu spędzam nad samym myśleniem nad rozwiązaniem, analizowaniem problemu niż nad samą implementacją.
Gorszą stroną było to, że już wtedy technologie te były stare. Java 6, EJB 2.1 czy Strutsy. Wszędzie XMLe, Stuby i inne twory, o których wolałbym zapomnieć. Z perspektywy czasu trochę inaczej na to patrzę, ponieważ dzięki tym “starociom” nauczyłem się jak te technologie działają od podszewki. Tak więc teraz jak pracuje np. ze Springiem, to te “magiczne” adnotacje wcale nie są dla mnie magiczne, ponieważ wiem, co się pod spodem dzieje.
Ile lat spędziłeś w tej firmie i co się w niej zmieniło za twoich czasów?
W Desomie pracowałem trochę ponad 3 lata. Zmieniło się w niej sporo, zaczynając od otworzenia nowych siedzib w Polsce i Szwecji po rozwój w smart commerce i łączenie się z innymi firmami. Z mojej perspektywy cały czas się szkoliłem. Usystematyzowałem również swoją więdzę z Javy poprzez podejście do egzaminów Oracle oraz specjalistycznych egzaminów IBMu związanymi z produktami z ich portfolio.
Co było później? Dlaczego przeniosłeś się do Wrocławia?
Do Wrocławia przeprowadziłem się ponieważ po moim stażu w Finlandii, Descom zaproponował mi pracę w nowo powstającym oddziale we Wrocławiu. Zaczynaliśmy tak naprawdę we dwójkę. Dosłownie chwilę później dołączyło do nas kolejnych dwóch deweloperów. Po kilku miesiącach zaczęły dołączać kolejne osoby.
Po kilku latach postanowiłeś zmienić pracę. Potrzebowałeś nowego projektu czy inne czynniki wpłynęły na tę decyzję?
Muszę powiedzieć, że dostawałem wiele propozycji pracy. Jednak żadna jakoś mnie specjalnie nie zaciekawiła. Dopiero propozycja pracy w Capgemini była czymś nowym. O dziwo nie chodziło nawet o sam projekt, czy też technologie, a o możliwość nauki języka niemieckiego. Wiele osób jak to słyszy nie może tego zrozumieć, jednak dla mnie możliwość pracy na co dzień w obcym języku jest czymś innym niż nauka obcego języka na kursie. A ja bardzo chciałem nauczyć się drugiego języka.
Po intensywnym kursie języka niemieckiego dołączyłem do zespołu, który budował rozwiązanie dla jednego z czołowych mediów w Niemczech. Tam też poniekąd wróciłem do korzeni, bo pracowałem jako fullstack developer tworząc aplikacje w Angularze.
Kolejny projekt z kolei był totalnie inny, gdyż była to aplikacja dla niemieckiego operatora opłat drogowych. Tutaj mierzyłem się z całkowicie innymi problemami, związanymi głównie z przetwarzaniem ogromnej ilości danych na bardzo niskim poziomie.
Miałem świetny zespół oraz świetne projekty w Capgemini. Udało mi się szybko nadrobić technologiczne nowinki w porównaniu z pracą w poprzednich projektach.
Czego nauczyłeś się w kolejnej firmie – Axxiome?
Po skończeniu drugiego projektu w Capgemini zdecydowałem się na kolejną zmianę. Chciałem spróbować sił jako freelancer. Szybko znalazłem ofertę pracy w Axxiome w bardzo ciekawej branży jaką jest ogólnie rozumiana bankowość.
W Axxiome tworzyliśmy własne oprogramowanie dla banków. Jako senior developer pracowałem w zespole, gdzie tworzyliśmy framework z którego korzystały inne zespoły w firmie. Było to bardzo ciekawe doświadczenie, gdyż nie korzystaliśmy z żadnego frameworku tylko z czystej Javy EE. Liczba bibliotek jakich używaliśmy w projekcie też była mocno ograniczona. Także bardzo dużo rzeczy pisaliśmy sami od podstaw. Dużym wyzwaniem było przemyślenie modelu ogólnie rozumianego bezpieczeństwa oraz skalowalności aplikacji.
Dochodzimy do momentu otrzymania propozycji pracy w EPAM. Opowiedz o okolicznościach.
Mam taką zasadę, że nie zmieniam pracy w trakcie trwania projektu. W przypadku pracy w Axxiome musiałem złamać tę zasadę ponieważ po kilku miesiącach pracy w Axxiome dostałem propozycje pracy z amerykańskiego oddziału firmy EPAM.
Po rozmowie kwalifikacyjnej dostałem konkretny plan jak ta przeprowadzka miałaby wyglądać. Jest kilka wiz, z których można skorzystać, wiążą się one z innymi wymaganiami, ograniczeniami i benefitami. Za pierwszym razem firma wystąpiła o wizę typu H1B – jest to wiza pracownicza dla pracowników z wiedzą specjalistyczną. Jednak tutaj obowiązuje loteria. Nie miałem szczęścia w losowaniu.
Myślałem wtedy, że to tyle jeżeli chodzi o “american dream”. Nie miałem aż takiego zaparcia, aby czekać na kolejną loterie. Jednak firma zaproponowała mi dołączenie do polskiego oddziału EPAM, aby po roku móc dostać wizę L1B – jest to wiza dla firm do relokacji pracowników wewnątrz firmy.
Zrządzeniem losu, EPAM ma oddział między innymi we Wrocławiu. Przez ok półtora roku pracowałem w projekcie dla UBS. Po raz kolejny mogłem sprawdzić się w roli fullstack developera. Tym razem na warsztat wpadł React. Tam też dostałem możliwość pracy jako team lead, rozwiązując nie tylko problemy techniczne, ale też problemy zespołu nie zawsze związane stricte z technologią.
W jaki sposób obliczyłeś, czy opłaca Ci się przeprowadzić do Stanów Zjednoczonych?
Razem z żoną zdecydowaliśmy o wyjeździe i było to dla nas oczywiste, że jedziemy przede wszystkim zwiedzać i poznawać inny świat. Mam kilku znajomych, którzy mieszkają w Stanach więc mogłem się zorientować jak mniej więcej szacują się koszta życia w San Francisco. Przydatne były też strony internetowe nomadlist.com oraz numbeo.com.
Czym zajmujesz się dzisiaj?
Pracuje na stanowisku Lead Software Engineer i jestem odpowiedzialny za prowadzenie jednego z zespołów deweloperskich. Zakres moich obowiązków jest dość szeroki, od projektowania, przeprowadzania code review po programowanie. Jestem też odpowiedzialny za przygotowywanie dokumentacji technicznej. Dużym wyzwaniem w obecnym projekcie jest poprawa istniejącego kodu. Jesteśmy w trakcie migracji starego monolitycznego rozwiązania opartego na JBossie na mikroserwisy.
Jak firma dba o Twój rozwój?
EPAM oferuje naprawdę szeroki wachlarz narzędzi do rozwoju. Mamy dostęp do LinkedIn Learning, ale też własny portal z całą masą kursów z różnych dziedzin, także z managerskimi. Mamy też program mentoringu z konkretnych technologii z określoną agendą. Organizowane są również szkolenia wewnątrz firmy oraz dostarczane przez zewnętrznych dostawców. Jest w czym wybierać.
LinkedIn Learning – brzmi ciekawie. Z jakich kursów już skorzystałeś i czy polecasz tę platformę?
LinkedIn Learning to platforma wcześniej znana pod nazwą Lynda.com. Platforma jest naprawdę świetna. Jest cała masa różnego rodzaju kursów nie tylko z programowania, ale też np. z zarządzania projektami czy też zarządzaniem zespołem. Można też sobie ustawić indywidualne cele i tak na przykład aplikacja będzie przypominać raz dziennie, aby spędzić ustalony wcześniej czas na naukę. Jeżeli ktoś potrzebuje takich bodźców to zdecydowanie fajna funkcjonalność. Ostatni kurs jaki ukończyłem był związany z konteneryzacją aplikacji i faktycznie pomogło mi to później z wyzwaniami w moim projekcie.
Uważasz, że pracownicy każdej firmy w IT powinni mieć dostęp do tego typu platform?
Zdecydowanie jest to pomocne narzędzie i pomaga w nauce nowych rzeczy czy też usystematyzowaniu posiadanej wiedzy. Czy w każdej firmie powinien być dostęp do takich platform? Zapewne zależy to od możliwości firmy, jednak każda powinna inwestować w swój zespół. Takie platformy to na pewno dobry start, jednak moim zdaniem bardziej wartościowym rozwiązaniem jest mentoring. Sam zawsze szukam kogoś, kto wie ode mnie więcej, dzięki czemu mogę się od niego nauczyć. Moim zdaniem nie ma lepszego sposobu nauki niż poprzez dzielenie się własnymi doświadczeniami. Koniec końców, praca programisty to teraz praca zespołowa.
Zatrzymajmy się jeszcze na chwilę przy mentoringu. W jaki sposób w EPAM przekazuje się wiedzę współpracownikom?
EPAM ma bardzo dobrze rozwinięty temat mentoringu. Z każdej dziedziny jest zespół ekspertów, którzy prowadzą mentoring. Przygotowują oni tematy, formę zajęć czy też problemy jakie są poruszane podczas zajęć. Forma i zakres zależy tak naprawdę od dziedziny. Może to przybrać formę warsztatów w grupie albo mentoringu indywidualnego. Czasami jest to pewna forma hybrydy – wstęp jako warsztaty, później zajęcia indywidualne z mentorem.
Sam miałem przyjemność być mentorem dla kilku kolegów. Zawsze była to dla mnie wielka przygoda i zaszczyt, że mogłem komuś pomóc w jego rozwoju. Za każdym razem był to też niesamowity bodziec dla mojego własnego rozwoju. Jest to rodzaj synergii, w którym każda ze stron coś zyskuje.
Jakie masz plany na przyszłość?
Zwiedzać Stany. Poprzez sytuacje z koronawirusem musieliśmy wstrzymać nasze plany więc na razie czekamy aż sytuacja się uspokoi. A co dalej? Czas pokaże.
Na koniec, czy jest coś co dzisiaj zaskakuje Cię w programowaniu? A może doszedłeś do etapu, w którym wszystko jest proste?
Niestety coraz mniej rzeczy mnie zaskakuje lub jest jakimś wyzwaniem, dlatego też tak bardzo podoba mi się praca z zadaniami bardziej związanymi z frontendem. Angular czy też React zdecydowanie dostarczają sporo wyzwań, a sam Javascript bywa zdecydowanie zaskakujący.
Nie powiedziałbym jednak, że wszystko jest proste. Pamiętajmy, że dostarczanie wysokiej klasy rozwiązań IT to nie tylko samo oprogramowanie, ale też jego jakość, łatwość utrzymania, wydajność czy możliwość rozbudowy. A w tym temacie ostatnio dużo się dzieje, konteneryzacja, cloud computing, IoT… jest czego się uczyć.
Maciej Kopeć. Lead Software Engineer w EPAM Systems. Programista nie tylko z zawodu, ale przede wszystkim z zamiłowania. Rozwiązywanie skomplikowanych problemów traktuje jako hobby. W pogoni za nowymi wyzwaniami gotów do przeprowadzki na drugi koniec świata. Fullstack deweloper z doświadczeniem z kilku branży oraz krajów, obecnie pracujący w San Francisco. Entuzjasta zasad DRY oraz KISS.