Kluczowe wybory w karierze programisty

Kluczowe wybory w karierze programisty

Zastanawiasz się nad karierą programisty, ponieważ wszyscy mówią, że to dobry zawód, wynagrodzenie jest bardzo atrakcyjne i można pograć w ping-ponga w pracy? A może już pracujesz i właśnie stoisz przed kolejnym ważnym wyborem jakim jest zmiana pracy lub technologii? Jeżeli tak, to ten artykuł wskaże Ci różne opcje, jakie masz do wyboru.

Podzielę się swoim doświadczeniem i przedstawię kilka pytań, na które warto znaleźć odpowiedź, szukając swojej drogi w świecie IT. Zaczynamy podróż!
Łukasz Pijanowski
Łukasz Pijanowski. Managing Architect w Netcompany, doświadczony programista i lider zespołu. Praktyk permanentnego samorozwoju i ulepszania swojego otoczenia. W Netcompany zajmuje się architekturą dużej platformy dla duńskich związków zawodowych. W przerwach rekrutuje, mentoruje lub prowadzi szkolenia wewnętrzne.


Jakie studia?

Pierwsze i najczęstsze pytanie dotyczy konieczności posiadania studiów informatycznych, by zostać programistą i programować zawodowo. Programowania można nauczyć się samodzielnie, korzystając z darmowej wiedzy czy płatnych kursów, natomiast wymaga to ogromnej samodyscypliny i dużej ilości pracy. Problemem jest jednak znalezienie pierwszej pracy w celu zdobycia doświadczenia. Wiele firm wymaga wyższego wykształcenia z kierunków informatycznych lub pokrewnych, by w ogóle zaprosić absolwenta na rozmowę. Jest to zrozumiałe, ponieważ niektórzy klienci wymagają wykwalifikowanych programistów już na etapie starania się o projekt podczas przetargów. W Netcompany uważamy, że studia IT to solidna baza wiedzy, na której można budować i rozwijać kompetencje techniczne.

Co dają studia? Wytwarzanie oprogramowania to nie tylko samo pisanie kodu. Renomowane uczelnie oprócz programowania uczą podstaw teoretycznych, zarządzania projektami oraz dają możliwości sprawdzenia się w pracy zespołowej w trakcie projektów akademickich.

Warto wykorzystać studia do zdobycia choćby minimalnego doświadczenia. Można to zrobić poprzez wakacyjne praktyki czy staże. Świetną okazją są także hackathony oraz konkursy organizowane przez różne firmy. Wystawienie zespołu ze znajomymi ze studiów to doskonały sposób, by dać się poznać i znaleźć swojego przyszłego pracodawcę.

Pierwsza praca?

Wybór pierwszej pracy jest jednym z najważniejszych momentów Twojej drogi. Pierwsza praca zbuduje w Twojej głowie obraz pracy w IT. Zapoznasz się z jej dobrymi i złymi stronami.

Jakimi kryteriami kierować się, by wybrać dobrze? W pierwszej pracy warto skupić się przede wszystkim na możliwościach nauki, jakie oferuje pracodawca. Idealne miejsce pracy umożliwia dostęp do mentorów, którzy chętnie dzielą się swoją wiedzą. Praca programisty to nieustająca nauka. Warto o tym pamiętać oraz zacząć w środowisku, gdzie zwraca się na to uwagę, a kierownictwo zachęca do ciągłego rozwoju swoich kompetencji. Gdy zbudujesz ten nawyk w pierwszej pracy, Twoja wartość rynkowa będzie rosła z każdą nabytą umiejętnością.

Szukanie wymarzonej firmy zacznij od stron firmowych. Wiele pracodawców prezentuje tam swoją filozofię pracy oraz wartości, którymi się kieruje. Czasami znajdziesz podręczniki pracownika (ang. employee handbooks), w których opisane są procesy w firmie. Jeżeli ktoś z Twoich znajomych pracuje w tej firmie, to warto zapytać o jego opinię, ale nie traktować jej jako wyroczni.

Po zapoznaniu się z informacjami o firmie warto poznać ludzi tam pracujących. Firmy często organizują techniczne wykłady, uczestniczą w targach pracy lub ich pracownicy występują jako prelegenci na konferencjach. To dobra okazja by porozmawiać osobiście. Jeżeli nie masz takiej możliwości pozostaje internet. Blogi firmowe, prywatne blogi pracowników, nagrania z konferencji czy profile w social mediach. Zbierając te informacje wyrobisz sobie swoją opinię o firmie i podejmiesz decyzję, czy jest to miejsce, w którym chcesz pracować.

Powyższy sposób analizy przyda Ci się przy każdej zmianie pracy, nie tylko przy wyborze tej pierwszej.

Komunikacja – tajna broń programisty

Ku zaskoczeniu wielu osób, tworzenie oprogramowania to głównie praca z ludźmi. Istnieje stereotyp, że osoba po studiach informatycznych zna algorytmy, pisze kody, ale nie musi rozmawiać z ludźmi.

Owszem, małą i prostą aplikację można napisać w pojedynkę. Przy większych systemach zaczyna się trudna sztuka komunikacji. Zbieranie wymagań, ustalanie terminów, projektowanie czy dogadywanie szczegółów technicznych to wszystko jest komunikacja. Dodatkowo jest jeszcze ten mityczny klient, który co chwilę zadaje pytania i zmienia wymagania.

Nauka skutecznej komunikacji jest jedną z tajnych broni programisty. To doskonała inwestycja, która wyróżni Cię ponad przeciętność. Gdy od nowo napotkanej osoby usłyszysz, że to niemożliwe, że jesteś „informatykiem”, ponieważ tak dobrze się z Tobą rozmawia, to znaczy, że tajna broń jest skuteczna.

Jak się nauczyć komunikacji? Materiałów na ten temat jest mnóstwo, czy w postaci książek, artykułów w sieci czy nagrań na YouTube. Niektóre firmy szkolą swoim pracowników z komunikacji w ramach planu szkoleń. Nie unikaj tych szkoleń! Nauka skutecznej komunikacji może dać Ci zdecydowanie więcej niż nauka kolejnego frameworka JavaScript. Framework przeminie, a z ludźmi nadal będziesz się komunikować. Od czego zacząć? Przede wszystkim pamiętaj, że komunikacja ma znaczenie, zacznij zwracać uwagę na sposób, w jaki się komunikujesz i przyglądaj się, jak ludzie dookoła reagują na różne style komunikacji.

W Netcompany każdy pracownik przechodzi przez wiele szkoleń rozwijających umiejętności miękkie, komunikacyjne. Rozumiemy, jak ważną sztuką są negocjacje i odpowiednie zaprezentowanie naszych rozwiązań klientowi, warto więc pracować również nad umiejętnościami prezentacji.

Czy wszyscy znają angielski?

Drugą tajną bronią jest język angielski. Mówimy o prawdziwie komunikatywnym poziomie B2 (poziom matury rozszerzonej). Samo czytanie dokumentacji po angielsku nie wystarczy. Twoje umiejętności i powinny być na tyle rozwinięte, by rozmowa po angielsku z współpracownikiem z innego kraju nie wywoływała u Ciebie odruchu obronnego. W środowisku międzynarodowym słaby angielski będzie jak udział w wyścigu z zaciągniętym hamulcem ręcznym. Gdy koledzy z zespołu swobodnie rozmawiają z klientem czy kierownikiem projektu, a Ty boisz się odezwać, bo czujesz się niepewnie ze swoim angielskim, to z góry skazujesz się na bycie w drugiej linii. Szkoda, by Twoje umiejętności techniczne i pomysły się przez to marnowały!

Prawdziwie komunikatywny angielski to umiejętność, która pozostanie z Tobą przez całą karierę. Tak jak w przypadku nauki komunikacji, jest to dobrze zainwestowany czas. W Netcompany realizujemy projekty dla klientów z Europy Północnej i Zachodniej w zespołach międzynarodowych, więc płynna znajomość języka angielskiego jest niezbędnym minimum, żeby pracować efektywnie.

Dojrzała zmiany pracy

Raz na jakiś czas przychodzi moment zmiany pracy i warto się przygotować do tego ruchu. Potraktuj zmianę pracy jak projekt. Najpierw przygotuj listę wymagań, które nowa praca powinna spełniać. Następnie zrób listę powodów, przez które chcesz zmienić pracę. Po przygotowaniu tej list warto przyjrzeć się jej krytycznie. Prawdopodobnie część pozycji z tej listy można poprawić u swojego obecnego pracodawcy. Żadna firma nie lubi tracić pracowników, więc warto wykazać się dojrzałością i porozmawiać z przełożonym o swoich oczekiwaniach. Nie powinno się zakładać, że coś, co jest oczywiste dla Ciebie, jest oczywiste także dla Twojego przełożonego. W wielu przypadkach istnieje możliwość poprawy praktycznie od zaraz. W najgorszym przypadku usłyszysz, że się nie uda. Będziesz wtedy dokładnie w tym samym punkcie co przed rozmową, a dodatkowo utwierdzisz się w przekonaniu, że jest to właściwy czas na zmianę.

Jak doświadczony programista wybiera firmę?

Jak dobrze wybrać pracodawcę? Ja zaczynam od trzech prostych pytań (kolejność przypadkowa):

  • Z kim będę pracował?
  • Co będę robił?
  • Jakie jest wynagrodzenie?

Jeżeli na wszystkie trzy pytania mam satysfakcjonującą odpowiedź, to znaczy, że firma jest świetnie do mnie dopasowana i możemy podpisywać umowę.

Jeśli tylko jedna odpowiedź na powyższe pytania jest zadowalająca, to firma odpada w preselekcji. Są firmy, które mogą oferować bardzo dobre stawki kosztem nudnego, mało rozwojowego projektu oraz wśród ludzi, którzy wydają się tam pracować za karę. Oczywiście, każdy musi sam określić, co dla niego ciekawe i rozwojowe.

Wnikliwa analiza zaczyna się, gdy firmy uzyskują dwa punkty na trzy. Każdy w tym momencie musi sam odpowiedzieć sobie co jest jego najważniejszym priorytetem.  Ważne by zrobić to świadomie, by później nie mieć wyrzutów do samego siebie czy poczucia, że zostało się oszukanym.

Taką analizę warto przeprowadzać okresowo nawet w stosunku do firmy, w której się obecnie pracuje. Z czasem nasze priorytety się zmieniają. My też mogliśmy się zmienić i w tej chwili potrzebujemy czegoś innego. Przykładowo, interesujący i dobrze prowadzony projekt stoczył się w kierunku ciągłego łatania błędów i pracy w weekendy. A może od kilku lat nie miałeś podwyżki, gdy rynek oferuje znacząco wyższe stawki? To tylko przykłady rzeczy, które mogły się zmienić. W trakcie analizy na pewno znajdziesz ich więcej.

Czy technologia ma znaczenie?

Jeśli zastanawiamy się nad zmianą firmy, to powinniśmy przemyśleć kwestię, czy jeśli coś działa, to warto to zmieniać. Jeżeli obecna firma nam odpowiada, to zamiast szukać nowej, można poszukać zmiany w ramach obecnej. Najlepszym sposobem będzie zmiana projektu. Jeżeli chcemy nauczyć się czegoś zupełnie innego, złapać inną perspektywę, to warto poszukać projektu o odmiennej technologii niż Twoja główna specjalność. Bądź jednak ostrożny. Częsta zmiana projektów w zupełnie innych technologiach może dać mylne przeświadczenie, że jesteś ekspertem, gdy tak naprawdę będziesz zaawansowanym początkującym w każdej z nich.

Raz na jakiś czas warto zrobić retrospekcję, zastanowić się, na ile opanowaliśmy te technologie i czy mamy „przewagę konkurencyjną” naszą mocną stronę przy kompletowaniu nowego zespołu. Tu nie ma drogi na skróty aby się czegoś dobrze nauczyć, trzeba poświęcić na to czas. Nie zaniedbujmy znajomości podstaw. One są niezależne od technologii. Przykładowo: rozumiejąc, jak działa protokół HTTP, będziemy w stanie zrozumieć większość frameworków front-endowych.

Pamiętaj, że świat IT ma niezliczoną ilość technologii i nie uda się nauczyć ich wszystkich. Proponuję dogłębne poznanie zasad i konwencji kilku głównych technologii oraz szerszą, lecz płytszą znajomość innych. Taka wiedza pozwoli nam rozwiązywać trudne problemy i jednocześnie być na tyle wszechstronnym, by realizować projekty w technologiach, które nie są naszą specjalnością.

Kiedy będę architektem?

Pytanie to zadaje sobie wielu programistów. Czy architektem stajemy się naturalnie z czasem czy może trzeba się tego nauczyć? Niestety, tak jak piłkarz automatycznie nie staje się trenerem, tak programista nie staje się naturalnie architektem. Kilka tricków i rozwiązań taktycznych nie wystarczy, by poprowadzić drużynę do zwycięstwa. Czego zatem potrzeba?

Po opanowaniu wielu samodzielnych technologii czas na umiejscowienie ich jako część czegoś większego. W pracy architekta znaczenie ma rozumienie zasad i konwencji, zależności między technologiami, ich wad i zalet. Choć nie ma rozwiązań idealnych, to rolą architekta jest wybrać te najbardziej optymalne do danego problemu przy danym stanie wiedzy. Droga do dobrego architekta to praktyka i zdobycie kolekcji doświadczeń. Oprócz praktycznego doświadczenia architekt powinien być w stanie spojrzeć na projekt jako całość, sumę różnych składowych, gdzie każda realizuje inną funkcjonalność i czasami (w architekturze mikro usług) jest napisana w innej technologii. Ostatnia kwestia to ludzie – praca architekta to w dużej części praca z ludźmi i należy pamiętać o trudach z tym związanych.

Tak jak w przypadku nauki technologii, tu także nie ma drogi na skróty. Metodyczne studiowanie wiedzy i istniejących rozwiązań to narzędzie architektów. Często popełniamy grzech wymyślania koła od nowa, bo nie mamy wiedzy, jak to robiono przed nami. Warto czerpać z doświadczenia innych, bo wiele problemów nie jest aż takich unikatowych, jak się wydaje.

Zarządzać czy nie zarządzać?

W pewnym momencie doświadczony programista stanie przed decyzją, czy chce zostać liderem i zarządzać pracą innych. Może zostanie o to poproszony, a może tak po prostu wyjdzie. Zarządzenie może oznaczać rolę lidera technicznego czy całkowitą zmianę ścieżki w kierunku kierownika zespołu/projektu.

Warto pomyśleć nad tą decyzją. Szeroko rozumiane zarządzanie to nie jest jedyny możliwy krok w rozwoju programisty, choć w niektórych firmach jest traktowany jak jedyny sposób na podwyżkę powyżej pewnego poziomu. Zarządzanie ludźmi to zmiana swojego profilu i warto mieć tego świadomość.

Dobrym pomysłem jest dopytanie kolegów na podobnych stanowiskach, na czym dokładnie polega ich praca, jaką satysfakcję im daje i co jest w niej najtrudniejsze. Internet też może pomóc – szukajmy relacji ludzi, którzy przeszli tę ścieżkę i dzielą się swoim doświadczeniem. Zmiana stanowiska samodzielnego twórcy (ang. individual contributor) na lidera wymaga zmiany sposobu myślenia i odpowiedniego ustalenia priorytetów. Dobry lider myśli przede wszystkim w kontekście zespołu i projektu. Musi posiadać umiejętności miękkie, ponieważ bycie liderem to przede wszystkim praca z ludźmi. Ciężko ją dobrze wykonywać, gdy nie przepada się za ludźmi czy komunikuje w sposób nieskuteczny. Mimo wielu doskonałych narzędzi do zarządzania projektem/zespołem to osobisty kontakt nadal pozostaje nie do przecenienia.

W mojej ocenie do zarządzania innymi trzeba dojrzeć. Mieć poukładany swój świat, by nie burzyć świata innych. Niektórym uda się to zrobić wcześnie, w okolicach 30-stki, a niektórzy nawet i do emerytury nie będę na to gotowi. Mają do tego pełne prawo i dobrze, by firmy nie starały się przemienić ich w osoby zarządzające na siłę.

Na co uważać?

Na koniec jeszcze kilka słów ostrzeżenia, na co warto zwracać szczególną uwagę.

  • Bezkres wiedzy.
    Nasza branża to ciągła nauka, ale także bezkres wiedzy. Na początku artykułu zwracałem uwagę na wyrobienie w sobie nawyku ciągłego uczenia w kontekście swojego rozwoju. Z drugiej strony należy pamiętać, że nie jesteśmy w stanie nauczyć się wszystkiego i zawsze znajdzie się ktoś, kto zna technologie, których my nie znamy. Porównujmy się tylko ze sobą zachowamy w ten sposób spokój umysłu.
  • Optymistyczne szacowanie.
    W przypadku szacowania zadań programiści to optymiści. A zadania jak na złość zabierają więcej czasu niż początkowo planowano. Różne są tego powody i wiele artykułów powstało na ten temat. Zaznaczę może jedynie, że zwykle wydają się łatwiejsze, jeżeli nie wykonaliśmy podstawowej analizy czy rozłożenia na czynności składowe. Nie wstydźmy się przyznać, że czegoś nie wiemy i uwzględnić to w szacowaniu, dodając odpowiedni bufor. Szacowanie wydaje się szybkie i łatwe, ale to tylko pozory, więc nie daj się zmylić, gdy zostaniesz poproszony o oszacowanie czasu na realizację zadań.

Czy to już wszystko?

Mój artykuł na pewno nie daje wszystkich odpowiedzi potrzebnych programiście podczas jego kariery. Mam jednak nadzieję, że te, na które odpowiedziałem będą  pomocne. Zaprezentowane opinie wynikają z mojej obserwacji z kilkunastu lat pracy. Pamiętaj jednak, że opinie są subiektywne, więc przefiltruj to, co przeczytałeś, przez swoją wizję siebie, swoją wiedzę i swoją obecną sytuację. Tak jak nie ma złotej technologii do wszystkich przypadków, tak samo nie ma jedynej słusznej drogi dla programisty. Życzę Ci samych dobrych wyborów w Twojej karierze!

Więcej informacji o Netcompany, a także nasze oferty pracy, znajdziesz na:

www.netcompany.com/pl/kariera

https://www.linkedin.com/company/netcompany-a-s/

https://www.facebook.com/netcompanypl

https://www.instagram.com/netcompanypoland/


Zapraszamy do dyskusji

Patronujemy

 
 
More Stories
Jak Adobe zmieni Magento? Już we wrześniu największa konferencja Magento w Polsce!