Jak rozwijać się tak, by czuć się spełnionym? Rozwój programisty
Rozwój programisty – wyrażenie, które pojawia się nader często w branżowych publikacjach, blogach, czy też w sferze podcastów. Pytanie, które od razu przychodzi na myśl to, czy aby na pewno wszyscy rozumiemy, co się pod nim kryje? Czy rozwijamy się tylko w obszarze komercyjnym, z którym na co dzień mamy do czynienia, czy też poświęcamy wolny czas na dalszy rozwój? W jaki sposób wybrać ścieżkę kariery tak, aby w ostatecznym rozrachunku poczuć się spełnionym i nie wypalić?
Maciej Jędrzejewski. Senior Software Engineer/Product Owner w Online Group. Programista u schyłku kariery i menedżer projektów, specjalizujący się w trudnych przypadkach. W wolnych chwilach prelegent, autor programistycznych kursów i warsztatów. Prowadzący i jutjuber English IT Today!, czyli kanału poświęconęgo doskonaleniu języka angielskiego wśród ludzi związanych z IT.
Podstawowym źródłem naszego rozwoju jest praca. Oczywista oczywistość. Każdego dnia piszemy nowe linie kodu, analizujemy wymagania, na podstawie których wyliczamy estymacje, współpracujemy z innymi – deweloperami, testerami, managerami, czy analitykami. Pytanie, czy aby na pewno takie działanie wystarczy nam do tego, żeby w przyszłości stać się wartościowymi programistami? Odpowiedź nie jest jednoznaczna – i tak, i nie.
Spis treści
Start kariery
Na początku kariery stajemy przed dosyć złożonym wyborem – którą ścieżką podążyć? Czy próbować sił jako typowy front/backendowiec, a może iść w kierunku full stacka. Tak naprawdę nieważne co wybierzemy, a to gdzie trafimy – i nie chodzi tu o firmę, ale przede wszystkim to, jaki zespół weźmie nas pod swoje skrzydła. To właśnie pierwsze miesiące w nowej pracy będą decydujące w kontekście Twojego rozwoju. Im mocniejszy zespół, tym lepiej, ponieważ nabierzesz wymaganej wprawy i dobrych nawyków.
Rozpoczynając będziesz miał wrażenie, jakby ktoś wkładał Ci do głowy wiedzę wiadrami. Każdy dzień będzie swego rodzaju przygodą – serwisy, kolejki, testy, bazy danych, interfejsy i inne będą doskonalić stan Twojej wiedzy. Code review na początku będzie Twoim wrogiem – w końcu ile razy można poprawiać to samo – ale po latach docenisz je, jako jeden z wiodących czynników. Codziennie będziesz budził się z myślą, jak wykorzystać nowo poznaną bibliotekę, czy framework. Żyć, nie umierać.
Post junior – mid, senior
Pięknie. Po okresie ciężkiej pracy dotarłeś do etapu, w którym zaczynasz rozumieć o co w tym wszystkim chodzi. Według krzywej uczenia jesteś gdzieś na szczycie, wszystko wydaje się takie proste. Rozwiązujesz coraz bardziej skomplikowane procesy, zaczynasz uczyć innych. W Twoim życiu pojawia się rutyna. Co jakiś okres trafia się skomplikowany problem, jednak przez większość czasu po prostu się nudzisz. Tutaj pojawia się kolejny wybór – albo dalej ciągniesz ten wózek i zarabiasz bardzo przyzwoite pieniądze, ale zaliczasz powolny spadek przez powtarzającą się pracę, albo stawiasz następny krok. Jeżeli zdecydujesz się na drugą opcję, to od tego momentu Twoja kariera może podążyć jedną z wielu opisanych ścieżek.
Architekt
Bardzo ważnym aspektem w przypadku tej roli jest szerokie spojrzenie. Lubisz rozwiązywać skomplikowane problemy architektury, struktur, analizujesz możliwości systemu? Na co dzień jesteś technicznym guru, który jest w stanie znaleźć rozwiązanie na większość występujących komplikacji, a do tego niezbyt chętnie patrzysz w kierunku bycia managerem? To rola dla Ciebie. Wiąże się co prawda z mniejszym natężeniem samego programowania, ale jest ono nadal obecne w otaczającej Cię rzeczywistości.
Team/Technical Leader
Nadszedł czas, kiedy jesteś jednym z najbardziej doświadczonych członków zespołu i do tego wykazujesz potencjał do zarządzania zespołem i rozwiązywania problemów natury zarówno ludzkiej i technicznej. Inni programiści chętnie słuchają tego, co masz do powiedzenia lub bardzo często masz bezpośredni wpływ na to, jak będzie wyglądać rozwiązanie lub jaki stack technologiczny wybieracie? W takim razie ta rola jest dla Ciebie stworzona – będzie to takie połączenie pomiędzy architektem, managerem i analitykiem.
Project Manager
Spotkania z klientami, zbieranie wymagań, pisanie dokumentacji, planowanie czasu i zasobów, trzymanie się terminów, zarządzanie zespołem ludzi tak, żeby każdy z przyjemnością był jego częścią – jeżeli odpowiedziałeś twierdząco na powyższe, to jest to z pewnością warta rozważenia rola. Oczywiście w tym przypadku wiąże się to z definitywnym opuszczeniem świata kodu i jego architektury. Tutaj kluczowym elementem jest przede wszystkim relacja z klientem i umiejętność podejmowania wiążących decyzji, zazwyczaj pod presją czasu (i budżetu).
Analityk biznesowy/systemowy
Jak sama nazwa wskazuje, wybór wiąże się przede wszystkim z analizą. Czy to biznesową, czy to z systemową, to już zależy od kontekstu. Analityk biznesowy będzie spotykał się na co dzień z klientem, zbierał od niego wymagania funkcjonalne, przelewał je na papier i powtarzał iteracje tak, żeby to czego klient chce, nie rozjechało się z tym co dostanie. Generalnie jest to bardzo ważna rola, niestety często pomijana w firmach. Praca analityka systemowego będzie dosyć podobna, natomiast tutaj nacisk pojawi się na wymagania niefunkcjonalne, co bardzo często przekłada się na bezpośrednią pracę z działem IT u klienta.
Każda z opisanych powyżej ścieżek jest bardzo dobrym wyborem, który zależy tylko od Ciebie. Ważnym jest, żeby znaleźć swój ogród i rozwijać swój warsztat.
“Robienie tego, co się w życiu kocha jest jedyną ścieżką do osiągnięcia sukcesu. Jeżeli jeszcze jej nie odnalazłeś, szukaj dalej. Nie zatrzymuj się” – Steve Jobs.
Warto jednak tutaj zaznaczyć, że to nie wszystko. Co z dodatkowym rozwojem, idącym równolegle do codziennej pracy? Jakie masz możliwości?
Blog
Tego medium nie trzeba nikomu przedstawiać. O czym pisać? Tak naprawdę o wszystkim, co związane jest mniej więcej z wykonywanym zajęciem – od problemów napotkanych w projekcie, po ich rozwiązania, wzorce projektowe, metody zarządzania zasobami. Co ważne, to żeby być w miarę regularnym i unikać na samym początku pisania na okrągło, ponieważ doprowadzi to do tzw. „zmęczenia” materiału i niestety szybko się wypalisz – dwa, trzy posty miesięcznie zupełnie wystarczą. Boisz się hejterów? Nie masz czego – może z 10% wszystkich Twoich czytelników będzie próbowało napisać Ci coś bardzo nieprzyjemnego. Pamiętaj, że istnieje też takie pojęcie jak konstruktywna krytyka i dzięki niej wejdziesz na wyższy poziom.
Vlog
To samo co wyżej. I łatwiej – nie musisz myśleć o interpunkcji, ortografii i innych tego typu błędach – i trudniej – ile razy można nagrywać i montować to samo wideo? Miejsc, w których możesz nagrywać jest cała masa – od YouTube, przez Vimeo, po Snapchat.
Wystąpienia
Żyjemy w czasach, w których istnieje ogrom grup związanych ze światem IT. Zazwyczaj spotkania odbywają się raz w miesiącu, żeby posłuchać kilku prelegentów opowiadających o konkretnym temacie. Warto spróbować również swoich sił – najpierw wybrać się na takie spotkanie w roli biernego słuchacza, zobaczyć jak to wygląda w praktyce, a następnie złapać kontakt z prowadzącymi daną grupę. Kiedy w końcu poczujesz gotowość, przygotuj temat i zapisz się na konkretny termin – takie działanie zmobilizuje Cię do konkretnego działania. Nie bój się community, nikt Cię tam nie ugryzie (przynajmniej mnie jeszcze nikt)!
„Bo bez bojaźni nie rządzono jeszcze żadnym ludem i bez lęku nie będzie się także i w przyszłości żadnym ludem rządzić” – Mika Waltari.
Szkolenia
A może poprowadzić szkolenie? Tutaj przede wszystkim trzeba posiadać bardzo dużą wiedzę w konkretnym temacie. Przygotowanie szkoleń lub warsztatów łączy się z bardzo wyczerpującym czasem. Wszystko musi być dopięte na ostatni guzik, zanim wyjdziesz ze szkoleniem na zewnątrz. Oprócz strony merytorycznej, musisz mieć gotowe materiały i program. Jeżeli sprzedasz coś, co jeszcze nie istnieje, postawisz się w bardzo nieprzyjemnej i stresującej sytuacji – zaufaj, termin będzie Cię ścigał. Gdzie szukać klientów? Na pewno na kanałach tj. Facebook, Twitter, blog, do tego również z poleceń – może akurat ktoś z Twoich znajomych pracujących w innej firmie, będzie chętny na takie szkolenie? Przed godziną zero warto też przećwiczyć samo szkolenie np. wewnątrz własnej firmy.
Kursy
Kolejny krok zwiększający szansę na sukces to tworzenie kursów online. Do wyboru mamy dwie ścieżki – darmową i komercyjną. Oczywiście najlepiej będzie zacząć od tej pierwszej, a dopiero w momencie, gdy masz pewność, że to trudne wyzwanie jest tym, co chcesz robić – przejść do następnego poziomu wtajemniczenia. Jaki temat wybrać? Z własnego doświadczenia polecam kompleksowe zagadnienia na konkretnych przykładach:
- machine learning,
- unit testing,
- planowanie projektu,
- zarządzanie zasobami,
- itd.
Nagranie powinno trwać 4-8h (lub więcej), ponieważ jest to czas w zupełności wystarczający na wytłumaczenie danego tematu. Na początku możesz oczywiście zacząć od krótszego, np. godzinnego – w Internecie jest wiele takich nagrań, które świetnie wprowadzają do kompleksowych zagadnień. Co najważniejsze, podczas takiego kursu powinieneś pamiętać o:
- planie ramowym – co chcesz powiedzieć, kiedy i w jaki sposób,
- planie szczegółowym – o czym konkretnie chcesz powiedzieć, najlepiej w formie kilku zdaniowych notatek,
- dobrym mikrofonie – słuchawki dla call center z kierunkowym mikrofonem i wyciszeniem sprawdzą się świetnie,
- programie do nagrywania – istnieją bardzo dobre, darmowe rozwiązania.
Uzbrojony w taki zestaw, jesteś gotowy do nagrywania.
Inne
Jeżeli czujesz się na siłach możesz też spróbować napisać własną książkę, artykuł, czy poprowadzić audycję ze swoim gościem. Jak widzisz, alternatyw jest mnóstwo, wystarczy tylko po nie sięgnąć.
„Sukces to nie kwestia wrodzonego talentu, błyskotliwej inteligencji ani szczęścia. Sukcesy odnoszą ludzie przekonani o tym, że wciąż mogą się wiele nauczyć” – Carol Dweck.
Zdjęcie główne artykułu pochodzi z unsplash.com.