Kim jest senior developer?

Ciekawe pytanie, prawda? Niby wszyscy potrafią na nie odpowiedzieć. Senior developer to 3 lata doświadczenia komercyjnego i dobra znajomość springa. Taki obraz wyłania się z ogłoszeń o pracę. Jednak nie o to chodzi.

Senior developer/starszy programista powinien spełniać pewne warunki w trzech obszarach.

Wiedza i doświadczenie

Najbardziej oczywisty obszar obejmuje tak zwane umiejętności twarde. O ile wiedza techniczna jest cechą, która powinna charakteryzować każdego programistę, to starszy programista posiada też wiedzę z innych obszarów. Po pierwsze ma wiedzę ogólną na temat branży. Nie tylko wie jakich narzędzi należy używać, ale też wie, jakie są obecne trendy, co przyniesie nam najbliższa przyszłość czy też gdzie szukać rozwiązań. Wiedza to też znajomość narzędzi, oprogramowania, sprzętu w zakresie pozwalającym na przykładowo wyceny.
Po drugie wiedza domenowa, co wynika z doświadczenia. Ta wiedza pozwala na rozmowę z biznesem w znacznie elastyczniejszy sposób. Pozwala też w pewnym zakresie pozbyć się translacji dokonywanej przez analityków, a w przypadku wykorzystania narzędzi w rodzaju event stormingu na zadawanie dodatkowych pytań.
Wiedza połączona z doświadczeniem pozwoli na szybsze tworzenie oprogramowania, ponieważ w takim układzie starszy programista nie traci czasu na dopytywanie o podstawy.
Wiedza i doświadczenie pozwalają też na świadome łamanie reguł. Co do zasady osoba, która zaczyna pracę jako programista, ma ogólne pojęcie o zasadach SOLID, wzorcach projektowych czy metodykach w rodzaju TDD. Jednak nie zawsze jest to wystarczające. Umiejętność świadomego łamania tych reguł oznacza, że potrafimy uzasadnić, dlaczego je złamaliśmy oraz w jaki sposób można poprawić kod, gdy przyczyna stanie się nieaktualna. Najlepszym przykładem jest odpuszczenie części testów jednostkowych w celu wyrobienia się w czasie z projektem. Po udanym wdrożeniu możemy wrócić do naszego kodu i stworzyć odpowiedni zestaw testowy (zapewne integracyjny), który w kolejnym kroku pozwoli na refaktoryzację i stworzenie odpowiednich testów jednostkowych.
By osiągnąć ten moment, musimy mieć kompetencje w kolejnym obszarze.

Biegłość w tworzeniu kodu

Mała rzecz a cieszy. Znajomość IDE to podstawa. Senior developer to osoba, która zna swoje narzędzia na wylot. Tutaj nie ma miejsca na zastanawianie się, jaki jest skrót klawiaturowy, bo ten jest już wdrukowany w nasze mięśnie.
Tak samo z dodatkowymi narzędziami. IDE jest naprawdę zintegrowanym środowiskiem, co oznacza, że potrafimy dobrać sobie odpowiednie wtyczki tak, by poradzić sobie z praktycznie każdym zadaniem. Z własnych obserwacji – wiele razy spotykałem się z ludźmi, którzy mieli pootwierane kilka różnych edytorów. Coś do Javy, coś do SQLa, do tego terminal. Po co, skoro w IDE można mieć te wszystkie elementy dostarczone w spójny sposób? Biegłość w pisaniu kodu pozwala na skupieniu się na rzeczach istotnych i ważnych.
Starszego programistę będzie dodatkowo cechować jeszcze jedna umiejętność. Umiejętność radzenia sobie bez narzędzi. Nie zawsze mamy do dyspozycji mocny komputer z zainstalowanymi naszymi zabawkami. Czasami jest to jakaś konsola zdalna z zainstalowanymi vi i „gołym” kompilatorem. Tu właśnie doświadczenie pozwala na pracę i dostarczanie kodu, pomimo trudności. Co więcej, w takim przypadku senior developer potrafi jasno określić, czego potrzebuje, a to łączy się z kolejnym obszarem.

Umiejętności organizacyjne

Zespół cech, których spodziewamy się u menadżera, a nie u programisty. Jednak chodzi mi tu o umiejętność organizowania sobie i innym pracy w taki sposób, by była wydajna. Nie oznacza to, że starszy programista będzie dobrym menadżerem. Musi jednak umieć przekazywać swoje racje reszcie zespołu, proponować i argumentować rozwiązania oraz przekazywać swoją wiedzę w uporządkowany sposób. Jeżeli taka osoba będzie współpracować z juniorem, to będzie musiała tak podzielić zadania, by obie strony były wstanie je zrealizować, a jednocześnie czegoś się nauczyć.
Pod tym pojęciem kryje się jeszcze jedna umiejętność – radzenie sobie w korpodżungli. Pójść zapytać, podręczyć osobę odpowiedzialną, albo odpowiednio ustawić listę CC w mailu z ponagleniem i nie bać się zawracania dupy osobom odpowiedzialnym za daną rzeczy (jeżeli rzeczywiście tego wymaga sytuacja). Czyli coś, czego brakuje młodym pracownikom.

Podsumowanie

Starszy programista ma wiedzę, umiejętności i doświadczenie, które w połączeniu z rzemieślniczą biegłością w wykorzystaniu narzędzi pozwalają mu pracować na 110% bez zbędnego przepracowywania się. Jednocześnie umie ogarniać nie tylko techniczne sprawy, ale też rozmawiać z klientami oraz z innymi działami w firmie by praca była płynna i nie stawała się koszmarem.
Jak to osiągnąć? Wiedza to samokształcenie, czytanie, kursy, szkolenia, konferencje, JUGi. Doświadczenie przychodzi z czasem. Biegłość to znowuż ćwiczenia (kata!) i powtarzanie pewnych czynności, aż wejdą w nawyk. Umiejętności organizacyjne zazwyczaj wynikają z doświadczenia oraz tego, jak dobrze dogadujemy się z konkretnymi ludźmi. Choć tutaj ważny jest też element przekazywania wiedzy.

3 myśli na temat “Kim jest senior developer?

  1. Senior to przereklamowane pojęcie.

    Senior w odróżnieniu od Deva jest znacznie częściej rozpraszany. Senior nie ma warunków, by lepiej programować (rzadko ktoś go opieprzy), poza tym na jego głowie jest więcej spraw zarówno technicznych jak i organizacyjnych, i weź tu się skup. Senior ma większą odpowiedzialność i przez co unika ryzyka, zmian. Często jest tak, że jeśli senior zasiada do kodu to na ogół robi rzeczy po łebkach lub niewłaściwie, ale najgorsze w tym wszystkim jest on tego nie jest świadom, bo przecież jest seniorem.

    Z takimi osobami najtrudniej się dyskutuje, bo często senior ma plecy (większe zaufanie po stronie biznesu).

    Jeśli ktoś uważa się za seniora to IMO znak, że zapuścił korzenie w firmie i przestał się technicznie rozwijać.

  2. Często największy problem seniora to więcej obowiązków zupełnie niezwiązanych z popchnięciem projektu do przodu. Jednak „starszy” to wiadomo, bardziej doświadczony z dużym bagażem wiedzy, więc wyrobi się w krótszym czasie. Jednak co się nawkurza, bo miał zacząć o 9, a jest 14 a on dalej siedzi nad pierdołami to jego 😉

  3. programuje od 9 lat, nie uważam się za seniora, dla mnie to pojęcie bardziej „sprzedażowe” 🙂 ogólnie pasuje do tego o czym napisałeś, z jednym wyjątkiem – ja wolę osobne okno do sql. Czy robiłem w bazach Oracle czy MSSQL to zamiast Intelij używam dedykowanych narzędzi do SQL, bo mają takie zabawki których Intelij nie posiada. popytaj ludzi, którzy tylko w SQL pracują, może Ci podpowiedzą kilka ciekawostek. chyba, że masz takie szczęście że w Twoich projektach nie trafiają się procedury sqla 🙂

Napisz odpowiedź

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax