Okiem programisty, Wywiady

Okiem programisty. Soft skille na wyższych stanowiskach to must have. Wywiad z Mateuszem Ostafilem

Mateusz Ostafil

Uczenie przyszłych programistów wymaga posiadania bardzo obszernej wiedzy i doświadczenia. Zdobywanie umiejętności na własną rękę może być wyjątkowo wyboistym i skomplikowanym procesem, który nie wyklucza jednak zostania mentorem dla innych. W rozmowie z Mateuszem Ostafilem rozmawialiśmy o jego drodze do zostania programistą bez wsparcia mentora oraz unikalnym podejściem do uczenia zarówno umysłów ścisłych, jak i tych specjalizujących się bardziej w soft skillach.

W jaki sposób zostałeś programistą?

Cieszę się, że zadajesz to pytanie, bo mam nadzieję, że moja historia zainspiruje/zmotywuje innych. Moja ścieżka do zostania programistą była dość długa, kręta i wyboista. Moje zainteresowanie komputerami zaczęło się już w podstawówce (lata 90te). Byłem zainteresowany grami komputerowymi i marzyłem, żeby kiedyś napisać swoją własną. Zacząłem bawić się pierwszymi programami do tworzenia stron internetowych (FrontPage, Dreamweaver — łezka w oku się kręci :D). Potem kupiłem pierwszą książkę o programowaniu.

Niestety nie miałem nikogo, kto poleciłby mi jakąś dobrą pozycję na początek, więc wziąłem w księgarni pierwszą lepszą. Nic z tego nie rozumiałem i uznałem, że po prostu jestem na to za głupi. W ten sposób po raz pierwszy porzuciłem wizję o zostaniu programistą. Później w gimnazjum temat trochę wrócił, bo zacząłem koleżankom pomagać przy blogach (to był wtedy szał :D), wrzucając muzyczkę w tle (stare dobre bgsound), albo podmieniając kursor myszki na jakiś cukierkowo animowany.

Uznałem, więc że pójdę do liceum na profil matematyczno-informatyczny. Nie dostałem się jednak i postanowiłem pójść na mat-fiz i ponownie porzuciłem początkowe marzenie. Wybierając studia, odrzuciłem informatykę, bo przecież było to dla mnie za trudne i wybrałem elektronikę i telekomunikację, która nie okazała się wcale łatwiejsza. Mieliśmy też przedmioty z programowania, dość dobrze mi szło i przede wszystkim podobało mi się to. Niestety dałem się ponownie zdemotywować i skupiłem się na technologii światłowodowej.

Na szczęście temat informatyki ponownie odżył, gdy zdecydowałem się wybrać na Erazmusa. Moja dziewczyna wybierała się na architekturę do Lizbony, więc chciałem się wybrać to tego samego miasta, ale wymiany na telekomunikację tam niestety nie było. Była za to szansa przeskoczyć tam na informatykę. Słysząc, historie o tym, że Erazmus to tylko impreza i zagranicznych zawsze przepuszczają, zdecydowałem się zaryzykować. Na moje przyszłe szczęście okazało się, że nie było to prawdą. Dzięki temu dość często zarywając nocki, szybko nadrobiłem braki, bardzo dużo się nauczyłem i poczułem się pewniej w programowaniu.

Po powrocie do Polski zacząłem pracę jako asystent w dziale IT w jednym z większych NGO. Nie była to praca stricte jako programista, ale mogłem wykorzystać nabyte w Portugalii umiejętności, żeby ułatwiać użytkownikom życie. Pisałem różne skrypty, mini aplikacje, aż w pewnym momencie samodzielnie napisałem oprogramowanie do wsparcia call center, które z tego, co wiem działa do dziś. Sukcesy na tym polu zachęciły mnie do rozpoczęcia kariery jako programista SQL w innej firmie. I tu rzecz chyba nietypowa — dzięki doświadczeniu zdobytemu na własną rękę zacząłem pracę z pominięciem pozycji juniora.

Bazy danych, o ile ciekawe, były dla mnie za bardzo oddalone od prawdziwych ludzi dlatego, zacząłem piąć się po stacku technologicznym w górę. W końcu zdecydowałem się pracować głównie z ludźmi i zostałem mentorem. Reasumując, chciałbym powiedzieć osobom, które zastanawiają się, czy się nadają do programowania: nie poddawajcie się i ciężko pracujcie 😉

Dlaczego lubisz uczyć innych? Czy jest coś wyjątkowego w Twoim sposobie nauczania?

Chyba dlatego, że sam lubię się uczyć nowych rzeczy, a uczenie innych wymaga sporo samokształcenia. Poza tym, przez całe życie brakowało mi mentora — kogoś, kto poradzi mi, w którym kierunku iść i potwierdzi, że się do tego nadaję. Dlatego uznałem, że chcę być kimś takim dla innych.

Tak, nieskromnie przyznam, że jest coś, co wyróżnia mój sposób nauczania. Ponieważ, według mnie, zawód programisty polega głównie na nieustannym doszkalaniu się i logicznym myśleniu, to nie skupiam się zbyt mocno na uczeniu danej technologii. Stosunkowo łatwo jest przygotować szkolenie, które np. pokaże składnię i funkcjonalności danego frameworka, bo będzie to właściwie ekstrakt z dokumentacji. Dużo trudniej jest nauczyć ludzi rozumieć daną technologię, wykorzystywać ją w praktyce i radzić sobie z jej dynamicznym rozwojem.

Staram się, żeby co najmniej 50% czasu na moich szkoleniach to była praktyka, ale nie w postaci przeklepywania przykładów. Zadaję kursantom zadania podobne do rzeczywistych wymagań użytkowników, potem robimy code review i wspólnie zastanawiamy się, jak dane rozwiązanie sprawdziłoby się w praktyce i co można by poprawić. Co do tematyki to obecnie zajmuję się front-end’em, bardziej szczegółowo Angularem a dokładnie szkoleniami z SAP Spartacus storefront.

W jaki sposób mogłaby wyglądać Twoja droga do miejsca w którym znajdujesz się dzisiaj, gdybyś od początku był pod opieką mentora?

Oj ciężko stwierdzić, zazwyczaj staram się nie zastanawiać, co by było, gdyby tylko rzeźbić przyszłość. Patrząc na moją historię, gdyby ktoś mnie dobrze poprowadził już za dzieciaka, to ja pierwszy bym stworzył Facebook’a, albo chociaż Naszą Klasę (hehehe…). A tak na poważnie, to dzięki mentorowi pewnie nie poddawałbym się tyle razy na mojej ścieżce kariery, zaoszczędziłbym kilka lat i pewnie byłbym teraz lepszym programistą.

Z drugiej strony, gdyby nie te doświadczenia upadku i powstawania nie byłbym tym, kim jestem teraz i nie pragnął zostać mentorem dla innych. Podczas swojej samodzielnej nauki wiele błądziłem i często się demotywowałem. Czuję, że miałem farta, że koniec końców wylądowałem w IT. Uważam, że z mentorem ten proces miałby większe prawdopodobieństwo sukcesu i byłby po prostu przyjemniejszy. Przez brak mentora zmarnowałem też sporo czasu na uczenie się niepotrzebnych rzeczy, ale tego akurat nie żałuję, bo lubię sam proces uczenia się, nawet jeżeli efekty nie są praktyczne. Tak podsumowując, których ludzie mentorowałem, w rok osiągali to, co mnie zajęło jakieś 10 lat.

Udało Ci się pomóc aż 150 osobom w zostaniu twórcami oprogramowania od zera. Jak doszedłeś do tego, że chcesz szkolić osoby, które do tej pory nie miały styczności z programowaniem? Czy coś szczególnie intryguje Cię w łączeniu osób ze środowiska z tymi spoza niego?

Ponownie odniosę się do mojej historii, sam miałem problem, żeby wejść w programowanie i najbardziej brakowało mi kogoś, kto pomoże mi wykonać pierwszy krok. Jest w tym coś fascynującego jak pokazywanie ludziom nowego świata. Pracowałem z ludźmi, którzy na początku słabo posługiwali się klawiaturą, a po pół roku już sypali programistycznymi żartami :D. To, co jeszcze mi się podoba w łączeniu ludzi spoza środowiska IT to to, że często mają wiedzę biznesową z różnych dziedzin i dzięki programowaniu mogą otworzyć swój potencjał i tworzyć niesamowite rzeczy.

Programowanie to narzędzie, którego brakowało im do realizacji swoich pomysłów, a czasem nawet marzeń o aplikacji rozwiązującej problemy w ich branży. Co więcej, tacy ludzie, którzy mają wiedzę z dziedzin spoza programowania, mają dodatkową wartość na rynku pracy. Osoby, które, zanim zabrały się za programowanie, zajmowały się finansami, były bardzo chętnie zatrudniane przez banki, a ludzie z branży budowniczej przez firmy produkujące oprogramowanie do projektowania budynków.

Z mojej perspektywy ludzie, którzy pracowali wcześniej poza IT są często bardziej zorganizowani i mniej narzekają. My w IT jesteśmy trochę rozpieszczeni i nie mając doświadczenia w pracy, poza tą branżą nie doceniamy tego, co mamy. Sam wiele nauczyłem się od ludzi, których uczyłem programować.

Jakie są różnice w szkoleniu i samym podejściu do osób zaznajomionych z programowaniem oraz do tych, które nie mają żadnego doświadczenia w tej kwestii?

Jeden i drugi przypadek ma swoje wyzwania. Osobom zaznajomionym z programowaniem teoretycznie nie trzeba tłumaczyć podstaw, ale z drugiej strony nie wie się jakie te podstawy są. Ucząc osoby bez żadnego doświadczenia, trzeba mieć na uwadze, że mogą mieć też problemy z podstawową obsługą komputera, z drugiej zaś strony komponowanie materiałów szkoleniowych od zera będzie trochę łatwiejsze.

Niedawno koleżanka spytała mnie, czy potrafię ocenić, czy nadaje się na programistkę. Robiłem takie rzeczy w mojej pracy, ale szczerze przyznaję, że taka wstępna ocena jest średnio skuteczna. Spotkałem w swojej karierze ludzi, którym początkowo dawałem marne szanse, ale po kilku miesiącach nauki nagle coś im przeskakiwało w głowie i okazywali się świetnymi programistami. Miałem też takich, którzy na wstępie byli bardzo obiecujący, ale później okazywali się za mało systematyczni i nie osiągali celu.

Biorąc to wszystko pod uwagę, ocenę tego, czy ktoś się nadaje, zostawiam danej osobie — polecam jej różne gry z programowaniem za pomocą bloczków i inne podstawowe materiały i proszę, żeby zastanowiła się, czy sprawiło jej to satysfakcję i dobrą zabawę. Uważam, że jedynie czerpanie radości z programowania pozwala zostać programistą. Wiadomo, że aspekt finansowy też jest motywujący, ale nie na tyle i nie w taki sposób, żeby człowiek był w stanie pochłonąć tyle wymaganej wiedzy.

Czy Twoim zdaniem (i biorąc pod uwagę Twoje doświadczenia z prowadzenia szkoleń) każdy ma szansę na zostanie programistą? Czy istnieją jakieś szczególne cechy i umiejętności charakterystyczne dla humanistów, które są również cenione w programowaniu?

Uważam, że tak, każdy ma szansę, ale nie każdemu się to będzie na tyle podobało, żeby wytrwać. Oczywiście zdarzają się przypadki brzegowe, które, mimo że bardzo chcą, to z niewyjaśnionych przyczyn sobie nie radzą, ale to raczej mniejszość.

Pozwolę sobie również powiedzieć, że nie przepadam za podziałem na humanistów i ścisłowców. Humanizm postrzegam raczej w sposób renesansowy i gdyby Leonardo DaVinci żył teraz to pewnie byłby programistą ;). No ale do rzeczy, zakładam, że pytanie dotyczy tzw. soft skilli albo po prostu umiejętności interpersonalnych, więc — tak.

Umiejętności te są coraz bardziej potrzebne wśród programistów, a na wyższych stanowiska to już jest must have. Technologia idzie to przodu i programowanie de facto staje się coraz prostsze. To, co jest trudne to dogadywanie się w zespole, negocjacje z biznesem, rozumienie wartości biznesowej itp.

Co rozumiesz przez bycie technology agnostic? Jaki ma to wpływ na Twoją pracę, kierunki rozwoju?

To, że nie zamykam się na jedną technologię, pozwala mi traktować umiejętność programowania jako uniwersalną, a poszczególne języki czy frameworki tylko jako narzędzia. Dzięki temu potrafię szybko przystosować się do dynamicznie zmieniającego się rynku.

Jestem często zaangażowany w rekrutację i niestety spotkałem się kilka razy ze smutnym zjawiskiem wtórnego analfabetyzmu programistycznego. Rekrutowałem ludzi z nawet z ponad 5-letnim doświadczeniem, ale byli oni tak zasiedziali w jednej technologii i systemie pracy, że aby rozpocząć pracę w innej firmie musieliby zaczynać od poziomu juniora. Niestety rynek IT pod tym względem jest brutalny, można mieć X lat doświadczenia w pewnej technologii, ale jeżeli ta technologia wypadnie z rynku, to my razem z nią. Jedyną szansą na poradzenie sobie z tym to według mnie podejście otwarte na inne technologie — jeżeli rozwiązuję jakiś problem za pomocą technologii X zastanawiam się, jak można by to zrobić za pomocą technologii Y i jaka byłaby różnica.

Jest taka zasada w tworzeniu oprogramowania, żeby poszczególne elementy systemu były jak najbardziej niezależne. W teorii pozwala to na podzielenie pracy pomiędzy wąsko wyspecjalizowanych ludzi odpowiedzialnych tylko za poszczególne elementy systemu. W praktyce jednak okazuje się, że najwięcej problemów przysparza łączenie elementów ze sobą, co często wymaga wyjścia poza swoją strefę komfortu i poznania innej technologii, z którą mamy się zintegrować. Niestety zauważam, że zadania tego typu są traktowane przez zespoły jak gorący ziemniak. Ja na szczęście lubię ziemniaki 😀


Mateusz Ostafil. Ewangelista technologii, szkoleniowiec, mentor, lider w Divante. Uważam się za przeciętnego programistę, jednak wyróżniam się w dzieleniu się wiedzą. Pomogłem ~150 osobom stać się programistami od podstaw. Teraz uczę bardziej zaawansowanych programistów jak budować front-end dla e-commerce przy użyciu Angular i SAP Spartacus Storefront. Lubię mówić o sobie, że jestem agnostykiem technologicznym. W trakcie mojej kariery zawodowej pracowałem trochę z elektroniką, potem przeszedłem do pisania zapytań SQL i budowania hurtowni danych. Następnie przeszedłem na wyższy poziom, od back-end do front-end. Obecnie pracuję z Angularem, ale interesują mnie też inne frameworki. Aktualnie moim głównym zainteresowaniem cieszy się JS i performance.

Redaktor współpracująca

Od trzech lat pracuje jako copywriterka, aktualnie zajmuje się tworzeniem treści dla branży IT oraz militarnej. Miłośniczka robienia szczegółowego researchu.

Podobne artykuły

[wpdevart_facebook_comment curent_url="https://geek.justjoin.it/okiem-programisty-soft-skille-na-wyzszych-stanowiskach-to-must-have-wywiad-z-mateuszem-ostafilem/" order_type="social" width="100%" count_of_comments="8" ]