Cezary Walenciuk zawodo zajmuje się programowaniem od 9 lat. Lubi uczyć innych, dlatego również prowadzi bloga, głównie na tematy związane z C#, jak również inne tematy około programistyczne. Obok programowania kolejną pasją Cezarego jest również przemawianie, często występuje przed publicznością na programistycznych konferencjach.
Z tego wywiadu dowiesz się między innymi:
- Jak zostać programistą .NET?
- Jakie są wady i zalety pracy programisty?
- Czy obecnie trudno jest znaleźć pracy na stanowisku młodszy programista?
- Jaką ścieżkę wybrać na początek?
- Jakie najczęstsze błędy popełniają kandydaci?
Kazimierz Szpin: Cześć Cezary, to jest dla mnie wielka przyjemność, że zgodziłeś się na wywiad. Jestem przekonany, że przyniesie on dużo wartości naszym czytelnikom. Starałem się w kilku zdaniach przedstawić Cię moim czytelnikom, podejrzewam, że większość osób zna Cię z Twojego bloga, ale wiem, że nie jest to jedyne miejsce, gdzie można Cię znaleźć. Powiedz, proszę gdzie obecnie można Cię śledzić w internecie.
Cezary Walenciuk: Prowadzę fan page Jak Programować? oraz jestem aktywny na Twitterze WalenciukC. Planuje też być aktywny na Instagramie cezarywalenciuk . Marketing programisty wymaga teraz bycia aktywnym w wielu miejscach.
Kazimierz: Większość czytelników bloga, to osoby, które dopiero zaczynają naukę programowania, szukają swojej pierwszej pracy na stanowisku programisty. Czy mógłbyś opowiedzieć, jak zaczęła się Twoja przygoda z programowaniem?
Cezary: Moja przygoda z programowaniem zaczęła się od marzenia, które miałem już od dzieciństwa. Byłem zafascynowany starymi grami oraz komputerami AMIGA, które w Polsce były bardzo popularne w latach 90. Chciałem się nauczyć tworzyć oprogramowanie na takie komputery.
Niestety swoje pierwsze kroki w programowaniu stawiałem dopiero na studiach, pisząc proste programy w języku PASCAL. Z jednej strony wydawało się to stratą czasu z drugiej była to wtedy jedyna forma zdobywania wiedzy. Cieszę się, że przynajmniej jeden wykładowca w uczelni bardziej przykładał się do nauki studentów. Inny wykładowca dawał kartkę z kodem do przepisania i na podstawie szybkości wystawiał ocenę. Nasza grupka fanów programowania, która chciała się uczyć po godzinach programowania na uczelni, liczyła tylko 4 osoby. W małych miastach nie ma grup dotNET, JavaScript i tak dalej. To przerażające, ale nawet dziś możesz ukończyć studia, nie ucząc się nic na temat programowania. Pamiętam, jak miałem problem, ze zrozumieniem podstaw programowania. Byłem wtedy na siebie wściekły, że skoro zawsze to chciałem to robić to, dlaczego nie zacząłem wcześniej np. świeżo po maturze. Z drugiej jednak strony, nawet gdybym zaczął wcześniej, to kto by mi pomógł. Pierwsze kroki są zawsze trudne. Pamiętam, jak musiałem spędzić jeden dzień z kartką papieru, aby zrozumieć, jak działają pętle. Kupiłem masę książek, które mi nie pomogły. Irytacja, strach, brak wiary w siebie, ciągła nie pewność czy nawet zostanę programistą.
Dodatkowo miałem problemy z umiejętnościami miękkimi, które później jak się okazało, też są ważne w zawodzie programisty. Cieszę się, że jestem jedną z tych osób, które może teraz ułatwić życie nowej generacji programistów, robiąc darmowe webinary i cykle na blogu. Studia dały mi paru wspaniałych przyjaciół. Jednym z nich był Jakub, który rok wcześniej wyjechał do Warszawy w poszukiwaniu pracy. To on mnie zmotywował, aby po studiach spróbować przynajmniej przyjść na rozmowę kwalifikacyjną. Moja pierwsza rozmowa kwalifikacyjna wykazała, że przez te 3,5 roku studiów nie wiele się nauczyłem. Wkurzyłem się i postanowiłem na poważnie nauczyć się C#, pisząc równocześnie przy tym bloga pomimo dysleksji. Tego bloga mam do dziś. Trzy miesiące później Jakub ponownie się do mnie odezwał i miałem wątpliwości. Myślałem, że jeszcze będę musiał się uczyć przez 2 lata, zrobić magistra i dopiero wtedy szukać pracy. U Jakuba natomiast zwolniło się miejsce na stancji i wydawało się, że moment prawdy już nadszedł, albo teraz znajdę pracę, albo nigdy. Miałem na to miesiąc. Po 17 rozmowach o pracę udało mi się i tak zaczął się mój nowy etap w życiu.
Kazimierz: Wiadomo, że praca programisty ma dużo zalet, ale też wad. Czy z perspektywy czasu uważasz, że warto zostać programistą? Jakie są największe plusy pracy programisty? Czy są jakieś minusy tej pracy, o których często nie zdają sobie sprawy osoby, które chcą zostać programistami?
Cezary: O minusach to jak uwielbiam mówić. Kiedyś na któreś mojej prelekcji mówiłem, że zawód programisty stał się tak atrakcyjny, że teraz rodzice chcieliby, by ich synowie czy córki zostali programistami zamiast lekarzami, czy prawnikami. Po co nam kucharze, fryzjerzy oni niech też będą programistami. O minusach warto pamiętać, bo ostatecznie w tej dyskusji czy każdy może zostać programistą, pojawią się różne odpowiedzi. Gdy zaczynałem programować w pracy, nawet ja zauważyłem, że dużo programistów robi sobie furtki. Nawet ja zacząłem je robić. Furtki w stylu, jeśli programowanie mi się znudzi lub mnie wypali, to co mogę jeszcze robić w swoim życiu. Oszczędzać pieniądze na wypadek, gdyby chciał zrobić sobie przerwę w karierze. Największy minus programowania to monotonność i wysiłek umysłowy, który trzeba włożyć w swoją pracę. Jest to recepta na wypalenie, a często w środowiskach programistycznych mówi się o tworzeniu oprogramowania w 24 godziny na energetykach. Tylko nikt nie mówi o kosztach psychicznych, jakie potem następują. Ja kiedyś pracowałem przez 3 miesiące od 7 rano do 20 i mimo iż dzięki temu dostawałem dużo pieniędzy, to nie wiem, czy było warto. Teraz dostaje, te same pieniądze pracując mniej.
Wypalenie to wstydliwy temat i mnie to nie dziwi. Ja w trakcie zmiany pracy byłem psychicznie wyczerpany i miałem tydzień, by odpocząć i zacząć nowy rozdział w życiu. Swojemu następnemu pracodawcy nie chciałbym się chwalić, że w ostatniej pracy byłem tak wyczerpany negatywną atmosferą w pracy, że miałem nerwobóle na całym ciele. Wypalenie też nie jest jedno razowe. Ono może się pojawiać i znikać i trwać od 3 miesięcy do 2 lat.
Monotonność też nie pomaga, bo nikt nie piszę aplikacji w najnowszych frameworkach. Najczęściej w pracy będziesz pielęgnował starą aplikację, która ma już 20 lat lub więcej. To też tworzy problem w szukaniu pracy, bo w CV chciałbyś napisać, że znasz te nowe trendy, które się pojawiły. Jak już mówimy o najnowszych trendach programistycznych, to też tak nie będzie, że raz się nauczysz programowania i masz spokój. To, co wiesz teraz, za 3 lata może być nieaktualne. W pracy więc siedzisz nad starym programem, a do nowej pracy będziesz musiał się uczyć po godzinach nowych trendów.
Praca programisty nie kończy się na tych 8 godzinach. To jest ciężka rozmowa, jeśli masz partnera czy rodzinę. Trzeba uświadamiać swoich bliskich, że twoja praca to też nauka po godzinach, by nie być w tyle. Myślę, że jest to też powód, dla którego programiści lubią pracę zdalną, bo przez te 8 godzin oprócz zadań mogą z czystym sumieniem też się uczyć. Bez inwigilacji i proxy bezpieczeństwa. Żaden pracodawca nie będzie dbał o twój rozwój. To jest twój problem.
Zapomnij o tych filmikach, gdzie niby możesz w trakcie pracy grać w piłkarzyki i mieć owocowe środy. Praca programisty bynajmniej nie jest taka łatwa.
Oczywiście, że mimo to warto zostać programistą z moje perspektywy. Tylko też programowanie dla mnie to coś więcej niż pieniądze. To frajda z tworzenia, którą ciężko mi jest opisać. Zalety warto szukać, bo bez nich szybko się poddasz, nawet ucząc się programować, a co dopiero pracować.
Kazimierz: Także jak widać z Twojego doświadczenia, praca programisty to nie tylko sielanka, ta praca ma też swoje minusy. Obecnie dużo osób narzeka, że jest ciężko znaleźć pierwszą pracę jako młodszy programista, wymagania są bardzo duże, jest sporo kandydatów na każde stanowisko. Czy mógłbyś powiedzieć, jak to wygląda z Twojej perspektywy? Czy uważasz, że faktycznie obecnie jest ciężko zostać programistą? Jak to wyglądało wcześniej w czasach gdy Ty szukałeś swojej pierwszej pracy?
Cezary: Zauważyłem, że na pewno jest ciężej znaleźć pracę teraz niż w 2011 roku na podstawie rozmów z wieloma osobami. Nawet marketing programisty się zmienił. Teraz nie wystarczy założyć bloga, aby się wyróżnić. Mnie to pomogło bardzo w 2011 roku. Teraz to by było za mało. To jest coś, co nawet mnie gryzie, gdy wydaje pieniądze na reklamy na Facebooku, a w międzyczasie dostaje zaproszenie na wyzwanie 30 historyjek o programowaniu na Instagramie. Trzeba być aktywnym w social media i kreować swoją osobę. Myślę, że problem leży teraz w fakcie, że jest przesyt początkujących programistów. Sytuacja obecna na świecie też nie pomaga i firmy będą chciały programistów, którzy są już w obiegu. Nowych projektów też będzie mniej.
Nowy świeży programista to duże ryzyko dla firmy. Jeśli nie masz dowodów o swojej użyteczności to logicznie, że nikt Ciebie nie zatrudni. Jeśli firma ma do wyboru kogoś z 3-miesięcznym doświadczeniem w pracy i kogoś z zerowym to wiadomo, kogo wybierze. To absurd, ale 3-miesięczne doświadczenie w jakieś firmie garażowej w twoim CV może być ważniejsze niż tytuł magistra inżyniera informatyki, nad którym pracowałeś 5 lat.
Nie będzie łatwo. Kto wie, może złote eldorado programistyczne powoli się kończy i zaczyna na początek uderzać w początkujących programistów. Ja jako senior oszczędzam pieniądze w banku, aby być gotowy na czarne scenariusze.
Co może zrobić początkujący programista? Na pewno warto robić cokolwiek i się nie podawać. To, co mnie nauczył rok 2011 to nie wiedza, a determinacja i spryt dała mi ostatecznie pracę. Trzeba próbować i nie patrzeć na liczbę nie powodzeń. Na początku wystarczy ci jedna praca, a potem mając nawet 3-miesięczne doświadczenie, będzie Ci dużo łatwiej znaleźć następną pracę.
Kazimierz: Ok, czyli na pewno jest trudniej, ale nie warto się poddawać. Osoba, która chce zacząć programować, na początek musi wybrać jaki język programowania. Większość z nich potrafi nawet przez kilka tygodni, a nawet miesięcy szukać odpowiedniego języka na start. Jak uważasz, czy to jest bardzo istotne, w którym języku zaczniemy pisać? Od jakiego języka Twoim zdaniem warto zacząć? Czym kierować się przy wyborze?
Cezary: Język programowania najlepiej wybrać na podstawie swoich preferencji, a później tylko trzeba zweryfikować czy dany język programowania da nam pracę. Poza tym, jak teraz o tym pomyślę, to moim pierwszym językiem programowania był PASCAL, którego obecnie się nie używa. Najważniejsze jest oczywiście to, że jak nauczysz się jednego języka, to nauka następnego przychodzi łatwiej. Ja w swojej karierze musiałem nauczyć się także: Javy, Objective-C, JavaScript.
Ja bym oczywiście zaczął od C#. Chociaż Python z analizą danych też jest ciekawą gorącą bułeczką.
Kazimierz: A czy w roku 2020 Twoim zdaniem nadal warto uczyć się C#?
Cezary: Oczywiście. W Polsce jest mnóstwo ofert pracy, a przyszłość platformy .NET wygląda lepiej niż kiedykolwiek. W C# można tworzyć strony internetowe. Z Blazor i WebAssembly można nawet robić logikę front-endową z C#. Z C# możesz tworzyć aplikację mobilne na Android i iOS.
WPF i Windows Forms, czyli aplikację desktopowe nadal żyją w wielu korporacjach. Ja nadal nie mogę przeżyć faktu, że ktoś mnie zapytał, czy mogę napisać aplikację kiosk w WPF do jakiegoś urzędu.
Kazimierz: Tak jak mówisz osoby, które chcą programować w C#, mają mnóstwo ścieżek do wyboru. Mogą zostać programistami aplikacji desktopowych, webowych, mobilnych. Którą ścieżkę obecnie Twoim zdaniem warto wybrać? Czym się sugerować przy wyborze? Czy wybór ścieżki ma duże znaczenie?
Cezary: Ja wybrałem ścieżkę ASP.NET, czyli tworzenie stron internetowych. Nie przeraził mnie fakt, że przy okazji muszę znać CSS i JavaScript. Gdyby miał argumentować, dlaczego ASP.NET zamiast innych frameworków to ilość ofert pracy. Chociaż wiem, że WPF i Windows Forms nadal żyją, to ofert z tymi technologiami jest dużo mniej.
Warto też poczytać o Azure, gdyż prawdopodobnie nie długo aplikację w ASP.NET będą żyć w chmurze Azure.
Kazimierz: Super, załóżmy, że przeanalizowaliśmy wszystkie plusy i minusy i wiemy już, że na pewno chcemy zostać programistą .NET, wybraliśmy konkretną ścieżkę, co dalej? Jak najlepiej uczyć się programowania?
Cezary: Najlepiej postawić sobie prosty cel.
Kazimierz: Jakie tematy muszę poznać, aby zostać młodszym programistą .NET? Czego obecnie wymagają pracodawcy od młodszego programisty .NET? Nad nauką jakich tematów powinienem spędzić więcej czasu?
Cezary: Od młodszego programisty bym wymagał znajomość szczegółów składni języka C#. Wiesz co to Indexer? Znajomość zapytań SQL też jest ważna, mimo iż może nie mieć to związku ze stanowiskiem pracy. Ja, bym też popracował nad umiejętnościami miękkimi, czyli nad tym jak najlepiej się zaprezentować i jak przekaż informację innym ludziom. Ja w swojej karierze przekonałem się wiele razy, że to jest w sumie ważniejsze niż programowanie. Powiedziałbym coś więcej, ale myślę, że jeśli ktoś wymaga więcej od młodszego programisty, to takie stanowisko nie jest dla młodszego programisty, tylko tak się nazywa. To może być problem, bo wymagania na programistę .NET mogą być różne w zależności, w jakim frameworku będziesz pisał.
Kazimierz: Ok, czyli musimy również pamiętać o rozwijaniu umiejętności miękkich. Czyli spędziliśmy kilka miesięcy na nauce, piszemy już własne projekty, mamy już sporo wiedzy, staramy się również rozwijać umiejętności miekkie, ale nie wiemy, czy już nadajemy się na młodszego programistę. Jak sprawdzić, czy mamy wystarczającą wiedzę, aby nim zostać?
Cezary: Możesz zrobić prelekcje na dany temat. Jednak jest lepszy miernik umiejętności, Trzeba przyjść na rozmowę o pracę. To najlepsza weryfikacja naszych postępów.
Kazimierz: Jakich pytań na rozmowach kwalifikacyjnych może się spodziewać kandydat na stanowisko młodszego programisty .NET? Jak się przygotować do takiej rozmowy kwalifikacyjnej?
Cezary: Nic tak nie przygotuje cię na rozmowę kwalifikacyjną, jak poprzednia rozmowa kwalifikacyjna. Najlepiej uruchomić swoją epicką muzyczkę i stanem umysłu totalnego wypasu zacząć rozmawiać. Co ma być, to będzie. Coś nie wyjdzie. Analizujesz to, co robiłeś źle i nie popełniasz tego błędu już nigdy więcej. Stres będzie twoim wrogiem i musisz nauczyć się z nim żyć. O tym, jak sobie z nim radzić możesz przeczytać, ale nie doświadczyć.
Kazimierz: Jakie Twoim zdaniem są najczęstsze błędy, jakie popełniają kandydaci na stanowiska młodszych programistów?
Cezary: Mówienie za małej albo za dużej kwoty. 3000 zł netto powinno być okej na początek w Warszawie. W innym mieście może mniej. Ja tę kwotę mówiłem w 2011 roku i nie biorę pod uwagę inflacji. Oczywiście nie dostałem 3000 zł na początek, tylko 2600 zł, ale pracodawca widział, że się cenie.
Najlepiej by było nie mówić w ogóle o pieniądzach, ale nie wiem, czy na rozmowie będziesz miał wygodę bawienia się z pracodawcą w grę "kto powie kwotę pierwszy".
Nie bój się popełnić błędów na rozmowie. Tak jak mówiłem wcześniej. Na następnej pójdzie Ci lepiej.
Kazimierz: Dziękuje bardzo za wywiad i podzielenie się Twoimi doświadczeniami.
Cezary: Cieszę się. Mam nadzieje, że ten wywiad komuś pomógł.
A Twoim zdaniem, jakie są najważniejsze umiejętności, by zostać Programistą .NET? Podziel się swoją odpowiedzią w komentarzu :)
Poprzedni artykuł - Jaki Język Programowania Wybrać? Konkretna Odpowiedź.
Następny artykuł - Jak Wygląda Rozmowa Kwalifikacyjna Na Stanowisko Młodszego Programisty .NET?.