O czym trzeba pamiętać, chcąc opanować Pythona? Rozmowa z Mikołajem Lewandowskim

infoshare python python academy Mar 11, 2021

Programista, team leader i trener programowania. Entuzjasta Software Craftsmanship i pragmatycznego podejścia do rozwijania systemów. Wierzy w ideę Civic Tech i to, że technologia może zmienić świat. Biegacz, rowerzysta, czasami podróżnik.
Mikołaj jest także trenerem i mentorem osób chcących wejść do świata IT, ucząc ich od postaw programowania w Python.

W dzisiejszym wywiadzie rozmawiamy z nim o tym, na co warto zwracać uwagę na początku planowania swojej kariery i co było punktem zwrotnym na jego ścieżce rozwoju w IT. Dowiemy się jakie znane globalne aplikacje są tworzone w Python, czy studia są niezbędne, aby zacząć programować oraz to jakie realne wartości można wyciągnąć z jego szkoleń online. Zapraszamy do lektury!

iSA: Od ponad 10 lat jesteś związany z branżą IT, jak wyglądała Twoja ścieżka kariery? Od czego zacząłeś, co było punktem zwrotnym i jak znalazłeś się w tym miejscu, gdzie jesteś aktualnie?

Mikołaj Lewandowski: Pierwszą pracę jako programista rozpocząłem na początku drugiego roku studiów. Na początku pracowałem przy prostych aplikacjach w kilkuosobowym zespole. To była nieduża firma, nie było tam bardzo jasno określonego podziału na role projektowe czy nawet front-end / back-end developerów. Jak coś potrzebowaliśmy to często musieliśmy po prostu rozkminić temat, samemu "zrobić, żeby działało". Miałem dzięki temu możliwość poznawania wielu różnych obszarów branży, uczenia się wszystkiego w praktyce.
Z mojej perspektywy był to bardzo efektywny okres, aczkolwiek wiązało się to ze sporym stresem.

W późniejszym czasie zostałem liderem już większego zespołu. Miałem sporo kontaktu z klientami, oprócz kodowania analizowałem i projektowałem rozwiązania. Dzięki temu widziałem, jakie są zarówno dobre jak i złe skutki podjętych wcześniej decyzji. Nauczyłem się wiele o technologii, ale też jak ważna jest organizacja pracy, jak działa zespół.

W ostatnich latach, w STXie, miałem okazję pracować przy wielu różnych projektach. Zarówno pod względem skali jak i tematyki. W międzyczasie prowadziłem różne warsztaty, zostałem też trenerem w infoShare Academy. Moja droga to raczej ciągły proces. Proces, w którym cały czas staram się rozwijać, praktycznie non stop zdobywam nowe doświadczenia, cały czas patrzę do przodu.

iSA: Jakie Twoim zdaniem wartości daje światu programowanie?

Mikołaj Lewandowski: Może to trochę naiwne, ale wierzę, że technologia może zmienić świat. W pozytywnym tego słowa znaczeniu. Przykłady są niezliczone. Dzięki wideokonferencjom możemy współdziałać pomimo ograniczeń - czy to z powodu odległości, czy obecnej pandemii.

Aplikacje takie jak Facebook czy YouTube mają ogromny wpływ na nasze społeczeństwo. Ale i dużo prostsze rozwiązania posiadają ogromną moc. Coś tak prozaicznego jak formularz do składania wniosków online pozwala zaoszczędzić setki, tysiące godzin pracy. I kilogramy papieru :)
To jest niesamowite uczucie, gdy użytkownik naszej aplikacji mówi, jak bardzo mu ona pomaga. Że dzięki niej odzyskał cenny czas, uzyskał zupełnie nowe spojrzenie albo możliwości.

iSA: W infoShare Academy stworzyłeś już kilka wartościowych kursów, a już niedługo będzie dostępne Twoje kolejne szkolenie z tematyki Python. Czym kierowałeś się, tworząc agendę kursu?

Mikołaj Lewandowski: W dużym skrócie - do agendy trafiły wszystkie zaawansowane zagadnienia, które dotyczą bezpośrednio Pythona lub warsztatu programistycznego i w mojej opinii mogą być oczekiwane przez wymagającego pracodawcę od początkującego programisty. PythON: Wtajemniczenie jest samodzielnym kursem, ale również i elementem programu PythON: Academy - drogi do Python Developera. Omawiane zagadnienia zostały podzielone pomiędzy kursami w ten sposób, że do PythON: Wtajemniczenie trafiły tematy zaawansowane, takie jak np. współbieżność, asynchroniczność i testy jednostkowe, które mogą być wartościowe nawet dla osób, które programują nie od wczoraj ;)

iSA: Czy po Twoim kursie będzie można wykonać samodzielnie prostą aplikację? Jeśli tak, jakiego typu może to być oprogramowanie?

Mikołaj Lewandowski: Jak najbardziej! Już po kursie PythON: Początek będziemy w stanie napisać proste aplikacje, zaś kurs PythON: Wtajemniczenie pozwoli nam wejść na kolejny poziom zaawansowania i budować bardziej skomplikowane programy.

Przykładem takich programów może być aplikacja wyznaczająca trasę, którą należy pokonać, żeby dostać się z jednego punktu miasta do drugiego, z uwzględnieniem rzeczywistych rozkładów komunikacji miejskiej. Możemy napisać program, który pomoże nam w liczeniu miesięcznych wydatków, cyklicznie sprawdza informacje na jakiejś stronie internetowej, albo wykona złożone operacje na danych z arkusza kalkulacyjnego.

Dzięki zaawansowanym tematom takim jak programowanie współbieżne czy też wzorce projektowe będziemy w stanie napisać bardziej złożone i optymalne programy. Tak naprawdę ogranicza nas tylko wyobraźnia :)

iSA: Co jest najłatwiejsze do opanowania w Pythonie, a co najtrudniejsze?

Mikołaj Lewandowski: Python jest językiem mocno intuicyjnym. Według mnie stosunkowo łatwo jest opanować jego składnie. Tym, co zazwyczaj stanowi wyzwanie dla początkujących osób, jest poznanie różnego rodzaju wzorców programistycznych, idiomów języka oraz technik z obszaru inżynierii oprogramowania - czyli sposobów na to by nasz kod nie tylko działał, ale był zrozumiały, łatwy do modyfikacji i poprawy - np. gdy wykryjemy w nim błąd.

iSA: Jakie umiejętności są niezbędne w pracy z Pythonem i jaką role Twoim zdaniem odgrywa w nim znajomość matematyki?

Mikołaj Lewandowski: Pewien podstawowy zestaw umiejętności jest wspólny ogólnie dla zawodu programisty, niezależnie od technologii, w której będziemy pracować. Należą do nich umiejętność analitycznego myślenia, cierpliwość, czytanie ze zrozumieniem oraz podstawy języka angielskiego. Oczywiście nasze zdolności analizowania problemów programistycznych będą też rosły wraz z naszym doświadczeniem. Bardziej specyficzne umiejętności przydadzą się nam w zależności od problemu, który będziemy rozwiązywać i branży, w której chcemy pracować.
Np. innych umiejętności będzie wymagało oprogramowanie analizujące dane ekonomiczne, sterujące odkurzaczem czy też gra komputerowa.

Wiele razy spotkałem się z pytaniem, czy znajomość matematyki jest niezbędna do programowania. Oczywiście matematyka uczy nas również analitycznego myślenia, ale poza niektórymi specyficznymi dziedzinami (jak np. symulatory lotów czy gry komputerowe) fizyka i zaawansowana matematyka nie są konieczne do tego, by tworzyć świetne programy. Może nam się natomiast przydać jeżeli chcemy rozwijać się w kierunku machine learning albo analizy danych.

iSA: Jak szybko jest możliwe, aby osoba zaczynająca się uczyć programowania w Python, stała się Midem, a następnie Seniorem i od czego to zależy? Jak wygląda ścieżka kariery takiego dewelopera i jakie jest najwyższe stanowisko w firmie, które można zająć?

Mikołaj Lewandowski: Jest to temat rzeka, ponieważ w każdej firmie ścieżka rozwoju wygląda inaczej, każdy z nas też ma różne cele w życiu i inaczej do takiego rozwoju podchodzi. Co może być zaskakujące to również fakt, że firmy różnie definiują, co oznacza Junior/Mid/Senior.

Bardzo uogólniając i biorąc średnio przypadek, możemy sobie spróbować zdefiniować ścieżkę rozwoju następująco.

Zaczynamy od totalnego początku. Uczymy się składni języka, tego czym jest programowanie, poznajemy zasady inżynierii oprogramowania. Uczymy się podstaw web developmentu albo machine learning - w zależności od tego, w jakim kierunku chcemy iść. W momencie kiedy znamy już tak naprawdę całą składnię języka, dostępne narzędzia, potrafimy już programować (oczywiście na podstawowym poziomie), ale brakuje nam jeszcze doświadczenia komercyjnego, jesteśmy na poziomie Juniora.

Dojście do tego poziomu i znalezienie pierwszej pracy jest zazwyczaj najtrudniejsze. Jeżeli uczymy się programowania bardzo regularnie (np. w ramach PythON: Academy), ale równolegle z inną pracą może nam zająć to około roku. Pracując jako Junior, będziemy potrzebowali około roku do dwóch lat, żeby przejść na poziom Mida, czyli programisty, który jest już bardzo samodzielny i efektywnie realizuje powierzone mu zadania.

Przejście na poziom Seniora to przeciętnie kolejne trzy - pięć lat. Dobry Senior potrafi wybierać optymalne rozwiązania techniczne, projektować architekturę systemów dopasowaną do potrzeb biznesu, wspomagać innych członków zespołu i rozwiązywać bardzo trudne problemy. Dalszy rozwój zazwyczaj obejmuje pozycje takie jak Technical Leader czy też Ekspert/Principal/Architekt.
Zakres obowiązków jest tu mocno elastyczny. Dotyczy prowadzenia projektów, mentorowania innych, projektowania skomplikowanych rozwiązań i konsultowania najtrudniejszych tematów.

iSA: Przy jakiego rodzaju aplikacjach mamy możliwość pracować, znając Pythona?

Mikołaj Lewandowski: Python jest językiem bardzo uniwersalnym. Najszerzej stosowany jest do tworzenia webowych aplikacji "biznesowych", machine learning oraz w analizie danych. Tak więc pracując jako programistka, programista Pythona mamy największą szansę trafić na bardzo zróżnicowane projekty biznesowe.
Będą to aplikacje np. pozwalające na wynajem mieszkań, zamówienie jedzenia, zarządzające wypłatami pracowników, wspierające pracę lekarzy czy łączące ze sobą miłośników tego samego sportu itd. Tutaj różnorodność jest ogromna. Projekty z obszaru machine learning i analizy danych są również bardzo różnorodne, ponieważ obecnie rozwiązania tego typu posiadają wartościowe zastosowania w praktycznie każdym typie projektów

iSA: Czy możesz podać przykłady znanych programów, które zostały stworzone w Pythonie?

Mikołaj Lewandowski: Pierwsze z brzegu to np. Dropbox i Instagram. Pythona bardzo intensywnie wykorzystuje również Netflix, jest obecny w YouTube, używa go Facebook, Spotify, Pinterest, Uber.

iSA: Ukończyłeś Politechnikę Gdańską na kierunku Informatyki. Czy Twoim zdaniem studia informatyczne dają wystarczającą wiedzę i aby wejść do branży IT? Czy kursy Twoim zdaniem są dobrym uzupełnieniem wiedzy z uczelni? Jakie Twoim zdaniem są największe różnice tego typu form nauki?

Mikołaj Lewandowski: Studia są dobrym sposobem zdobycia wiedzy, chociaż z pewnością niejedynym i nieoptymalnym czasowo. Trzeba mieć na uwadze, że w ciągu pięciu lat studiów informatycznych realizuje się kilka tysięcy godzin wykładów i laboratoriów a o wiele więcej w ramach pracy własnej i realizacji wymaganych projektów. Studiując, bardzo dużą część pracy musimy wykonać samodzielnie.

Według mnie realizując dobry kurs, jesteśmy w stanie w dużo krótszym okresie nabyć niezbędne umiejętności. Dla osoby studiującej bardziej zaawansowane kursy mogą być również dobrym uzupełnieniem materiału o elementy typowo praktyczne. Główne różnice między studiami a kursem wynikają z faktu, że studiujemy sami, a dobry kurs będzie nastawiony na nauczenie nas, a nie tylko wskazanie obszaru, który powinniśmy poznać. Będą tam również aktualne przykłady i objaśnienia przygotowane przez praktyków, na co dzień zajmujących się kodem, a wiedza będzie bardziej skondensowana pod kątem celu, który chcemy osiągnąć.

iSA: Jak powinien Twoim zdaniem wyglądać idealny proces rekrutacji programisty Python? Na co powinno się zwracać uwagę i jaką wiedzę lub umiejętności powinno się weryfikować w trakcie interview?

Mikołaj Lewandowski: Według mnie dobrze jest weryfikować umiejętności, które realnie są wykorzystywane w codziennej pracy. Jestem sceptycznie nastawiony do zestawów "punktowych" pytań. Zamiast pytać na rozmowie, do czego służy argument -k w pytest'cie można poprosić o napisanie i uruchomienie testu jednostkowego. Według mnie obowiązkowy zestaw zadań na rozmowie rekrutacyjnej obejmuje zadania programistyczne sprawdzające swobodę implementacji algorytmów i posługiwania się składnią Pythona, pisanie testów jednostkowych, poprawne wykonanie Code Review.

iSA: Co byś radził przyszłym programistom, którzy chcą dopiero wejść do branży IT lub znaleźć lepszą pracę?

Mikołaj Lewandowski: Zacznijcie spokojnie. Najpierw, upewnijcie się, że programowanie to właśnie to. Napiszcie swoje pierwsze programy i jeżeli poczujecie dreszcz emocji, spokojnie ruszajcie dalej. Zaplanujcie swoją drogę. Możecie wybrać kompletne szkolenie (jak np. PythON: Academy) albo samodzielnie uczyć się z książek, różnych kursów, materiałów na blogach.

Szukajcie rozwiązań trudnych problemów - w artykułach, na forach, grupach. Zawsze staracie się zrozumieć jak działa to co napisaliście, czy można zrobić to inaczej, dlaczego w ten sposób? Gdy opanujecie poziom Juniora, rozsyłajcie CV.

Podczas całej Waszej drogi po prostu dobrze się bawcie! Nigdy nie traćcie entuzjazmu i radości tworzenia, jaką daje programowanie!

 

Pozostań w kontakcie z nowościami i aktualizacjami!

Dołącz do naszej listy mailingowej, aby otrzymywać najnowsze wiadomości i informacje o nowych kursach od naszego zespołu.
Nie martw się, Twoje informacje nie zostaną udostępnione.

Nienawidzimy spamu. Nigdy nie sprzedamy twoich informacji z jakiegokolwiek powodu.