HRakterna środa — po czym poznać Senior Developera
Jest taka anegdota, że zadając pytanie Seniorowi: “Jak oceniasz swoje umiejętności w programowaniu w skali od 1 do 10?”, otrzymasz odpowiedź: “Gdzieś w okolicach 4, w porywach do 5”. Na to samo pytanie Junior odpowie: “8/10.” I coś w tym jest, że specjaliści, którzy niejeden kod zepsuli i naprawili mają dużą świadomość swoich umiejętności, ale i tego, jak wiele jeszcze muszą się nauczyć. Podejście “wiem, ile nie wiem” nie zależy od wieku, ale jest funkcją lat doświadczenia w programowaniu i złożoności rozwiązanych problemów.
Justyna Mirska. Współwłaścicielka firmy rekrutacyjnej Plenti. Realizuje projekty od etapu tworzenia oddziału – Site Manager, Lead Developer, po rozwój istniejących zespołów (development, QA, wsparcie techniczne, bezpieczeństwo). Prowadziła zespoły konsultantów ds. rekrutacji, Account Managerów, oraz pełniła rolę HR Business Partnera dla zespołów programistycznych i testerskich. Od zawsze zainteresowana rynkiem pracy, współpracą biznesu, edukacji i samorządu. Jedna z pomysłodawczyń projektu Kobiety w IT.
Małgorzata Kaczmarek. Współwłaścicielka firmy rekrutacyjnej Plenti. Od ponad 6 lat związana z branżą IT. Rekrutowała i budowała zespoły IT, następnie pełniąc dla nich funkcję HR Business Partnera. Posiada doświadczenie we współpracy z firmami R&D, ITO, BPO, MŚP w tym start-upami. Zawodowo interesuje się Employer Brandingiem, również w obszarze rekrutacji. Jest fanką modelu candidate experience czyli przyjaznej rekrutacji. W wolnym czasie uwielbia podróże po Ameryce Północnej oraz piłkę nożną.
First things first, czyli o latach doświadczenia właśnie
Mimo, iż same lata doświadczenia nie wystarczą, żeby nazwać kogoś Starszym Programistą, większość Menedżerów i Senior Developerów będzie określać solidną wiedzę i doświadczenie na poziomie 6-8 lat. To niższy rejestr, niż np. w Wielkiej Brytanii, czy w Stanach — tam czas, który chcąc nie chcąc, zadba o jakość doświadczenia określa się na poziomie 10 lat. Skąd ta różnica? Wynika z rozwoju branży w Polsce, stosunkowo młodej, w której nasycenie stanowiskami seniorskimi jest zdecydowanie niższe, niż zagranicą.
Niemniej, liczba wyzwań podejmowanych nawet w tym krótszym czasie i skutki wdrożenia swoich lub czyichś rozwiązań, stanowią silną bazę doświadczonego programisty.
Znajomość pełnego cyklu rozwoju oprogramowania
Senior Developer powinien brać udział w tworzeniu oprogramowania end-to-end w kilku różnych projektach. Praca nad zbieraniem wymagań, kontakt z klientem/użytkownikiem końcowym, projektowanie aplikacji, testowanie i wdrożenie dostarczają zupełnie innych wyzwań i perspektyw, niż praca stricte związana z kodowaniem. Istnieje nawet rozróżnienie na poziomie języka: koder vs. programista (Coder vs. Developer). To drugie określenie wskazuje na doświadczenie w zróżnicowanych środowiskach, przekrojową wiedzę, szerszy zestaw umiejętności, które łatwiej adaptować w różnych projektach, ale i na specjalistów, którzy posiadają doświadczenie w obszarze jednej technologii — ich wiedza jest imponująco głęboka.
Jakość doświadczenia prowadzi do samodzielności i zaufania ze strony zespołu i lidera, który ma komfort odpuszczenia sobie mikrozarządzania na poziomie technicznym (czego zresztą Senior naprawdę nie znosi).
Umiejętności techniczne i ciągłe ostrzenie piły
Senior Developer brzmi dumnie, ale to też ciężka praca nad swoim rozwojem. Oprócz biegłości w programowaniu w jednym/kilku językach i znajomości potrzebnych narzędzi Senior Developer zadaje pytania o naturę rzeczy. “Dlaczego” i “jak” — dotyczące technologii (Dlaczego ten framework powstał? Jak te technologie są połączone?) Może też wykorzystać wiedzę o strukturach danych i algorytmach w usprawnianiu działania aplikacji (rekurencja!). Senior trzyma rękę na pulsie technologii, a nieumiejętność odpowiedzi na techniczne pytanie traktuje jak wyzwanie i pretekst do researchu.
Mentoring
Dzielenie się wiedzą to jedna z ważnych umiejętności Seniorów (jak i potrzebna do tego cierpliwość). Baza wiedzy, którą dysponuje jest ogromnie przydatna i powoduje, że inni szukają u niego wskazówek w skomplikowanych problemach programistycznych i cenią sobie jego zdanie. Jest to podstawa do budowania społeczności developerów, inspirowania innych — wewnętrznie w firmie, jak również poza nią — na meetupach czy konferencjach.
Umiejętności przywódcze
Od przekazywania wiedzy innym, do koordynacji ich pracy, czy wyznaczania kierunku rozwoju projektu jest naturalnie blisko. Jest to jednak umiejętność niezbędna dla tych, dla których następnym krokiem w karierze będzie zarządzanie. Jeśli natomiast Senior fascynuje się nadal głównie zadaniami technicznymi i dalekie jest mu podejście “bycie (senior) developerem jest poczekalnią do bycia menedżerem” rozwija swoją wiedzę ekspercką. Niemniej umiejętność prezentowania swoich umiejętności, a nawet “sprzedaży” ich np. podczas warsztatu, konferencji, czy rozmowy kwalifikacyjnej może świadczyć o poziomie profesjonalizmu.
Współpraca
Senior Developer pracował już na wielu projektach i wie, że nie da się wszystkiego zrobić w pojedynkę. Posiada doświadczenie techniczne i umie pracować w strukturze. Potrafi zatem docenić pracę zespołową, dzielenie się zadaniami, ma szacunek również do innych stanowisk — nie tylko czysto technicznych (PM, BA, QA, UX itp.). Tym samym również docenia współpracę z biznesem, potrafi pokazać i dostarczyć wartość oprogramowania jako produktu, jest nastawiony na oczekiwania klienta — zadaje sobie pytania typu “Co można jeszcze zrobić w procesie, żeby dostarczyć lepszy produkt?”. Dba o ekosystem rozwoju oprogramowania — a szukając rozwiązań „broni” projektu przed zepsuciem kodu, tj. czasem naciskami biznesu, żeby zrobić coś mniej poprawnie, ale np. szybciej.
Warto zastanowić się nad swoim etapem rozwoju, a w zdobyciu celu zostania Senior Developerem może pomóc poniższa checklista. Na pewno pomoże zorientować się czy wszystkie umiejętności są już na miejscu, czy warto wyznaczyć cele i nad czymś popracować (np. od Nowego Roku):
- liczba lat doświadczenia;
- liczba i jakość rozwiązanych problemów programistycznych;
- zakres wiedzy dotyczącej technologii i moje podejście (Dlaczego i Jak);
- zakres wiedzy abstrakcyjnej, np. algorytmy, struktury danych;
- miejsce w zespole i dzielenie się wiedzą;
- nastawienie na pracę z klientem/ użytkownikiem końcowym;
- “ostrzenie piły”’ — artykuły, blogi, fora, konferencje;
- prezentacja/ sprzedaż swoich umiejętności;
- budowanie społeczności developerów;
- kolejny krok w karierze: ścieżka menedżerska vs. ekspercka.
Zdjęcie główne artykułu pochodzi z stocksnap.io.
Komentarze