Od Juniora do Seniora. Odpowiadamy na pytania społeczności cz.2
Wracamy do Was z kolejną dawką wartościowej wiedzy od zaprzyjaźnionych seniorów. W poprzedniej części poruszyliśmy kwestię zostania seniorem, praktycznej znajomości algorytmów oraz etap, kiedy przestaje się określać juniorem. W tym artykule także uzyskaliśmy odpowiedzi seniorów na pytania juniorów, które znaleźliśmy w sieci.
Odpowiedzi na pytania społeczności udzielili:
- Andrzej Wojtyś. Lead Backend Developer w Lamia Oy. Swoją pasję do IT odkrył w gimnazjum, zaczynając od tworzenia prostych stron internetowych. W pracy specjalizuje się w Backendzie, ale zajmuje się również DevOps oraz architekturą oprogramowania. Prywatnie, mąż i ojciec oraz pasjonat jazdy na rowerze i gry na komputerze.
- Jakub Stompor. Senior Frontend Developer w T-Mobile. Ukończył studia wyższe na kierunku informatyka na Politechnice Świętokrzyskiej w Kielcach z tytułem magistra inżyniera oraz studia podyplomowe na kierunku e-marketing w Krakowie. Posiada wieloletnie doświadczenie w tworzeniu złożonych aplikacji dla dużych korporacji. W pracy głównie specjalizuje się w Frontendzie lecz nieobce mu są również backend i devops.
- Przemysław Rogowski. Senior Scala Developer w firmie Adevinta. Ukończył magistra matematyki na uniwersytecie im. Adama Mickiewicza w Poznaniu. Pasjonat programowania z wieloletnim doświadczeniem przy pracy nad międzynarodowymi projektami. Od pięciu lat mieszka w słonecznej Barcelonie. Miłośnik fantastyki i gier fabularnych. Stara się nie brać życia zbyt poważnie.
- Marcin Skrzypek. Lider techniczny w BGK. Ekspert IT z kilkunastoletnim doświadczeniem w wielu rolach (programista, lider techniczny, architekt, manager) zdobywanym w pracy dla dużych korporacji. Swoje doświadczenie zdobywał m.in. w branży: ubezpieczeniowej, medycznej i bankowości. Głównie zajmuje się programowaniem i projektowaniem architektury systemów korporacyjnych oraz zarządzaniem zespołami developerskimi.
Spis treści
7. Kiedy ktoś jest seniorem, regularem, juniorem? Co to oznacza w praktyce codziennej programisty? Jaka wiedza/obowiązki/oczekiwania „od góry” i do „góry”? (Aleksander Dudek)
Andrzej Wojtyś, Lead Backend Developer w Lamia Oy:
W głównej mierze, ogólne zrozumienie tych ról będzie podobne w każdej firmie, aczkolwiek poszczególne firmy mogą mieć dodatkowe wymagania by osiągnąć konkretny poziom, jak odpowiednia wiedza w danej technologii (jeżeli firma szuka specjalisty od konkretnej rzeczy), albo wręcz przeciwnie, znajomość wielu różnych technologii wraz z mocną wiedzą teoretyczną.
Juniorem jest osoba, która zna podstawy, dobre praktyki oraz jest chętna do rozwoju. Mile widziane, gdy taka osoba zadaje pytania oraz stara się rozmawiać i słuchać na tematy techniczne, gdyż to pokazuje, że jej faktycznie zależy. Od takiej osoby wymaga się, by była w stanie rozwiązać proste zadania, związane z tym, co obecnie już umieją, ewentualnie bardziej skomplikowane z drobną pomocą kogoś bardziej zaawansowanego.
Midem jest osoba, od której wymaga się samodzielności w działaniu oraz bycia w stanie rozwiązać zaawansowane zadania, aczkolwiek rozwiązanie nie musi być „najlepsze”. Mid powinien być w stanie samemu poprowadzić mniejszy projekt od zera aż do deploymentu na produkcję. Jego wiedza musi być w związku z tym znacznie większa (oraz pokrywać więcej niż tylko konkretny język programowania).
Sądzę, że największa różnorodność, co do wymagań jest na pozycji seniora. Jest to spowodowane tym, że często jest on również podzielony na osobną pozycję lidera. W tym wypadku, to lider otrzymuje większe wymagania co do umiejętności miękkich, w celu umiejętności mentoringu oraz zarządzania zespołem. Aczkolwiek, z podziałem czy bez, senior musi być jak komandos, którego można wrzucić w dowolny projekt z dowolną technologią i sobie poradzi w relatywnie niedługim okresie czasu. Musi mieć olbrzymią wiedzę oraz jest mile widziane jeżeli się nią dzieli.
Jakub Stompor, Senior Frontend Developer w T-Mobile:
Odpowiadając na pytanie. Junior Developer to osoba, która rozumie podstawowe zasady tworzenia oprogramowania niezależnie od używanych technologii. Rozumie teorie i dobre praktyki w wytwarzaniu kodu, co pozwala mu rozwiązywać proste zadania. Jak dla mnie junior to też osoba, która powinna być żądna wiedzy, posiadać chęć do rozwijania swoich umiejętności, a także bacznie patrząca na pracę swoich bardziej doświadczonych kolegów potrafiąca wyciągać wnioski z ich pracy oraz zachowań pracy w zespole.
Mid Developer to osoba, która potrafi rozwiązywać bardziej złożone problemy programistyczne. Rozumie podstawowe algorytmy, wzorce projektowe i wie jak używać ich w realnych projektach. Ma bardziej wyszukaną wiedzę na temat tego jak wiele korzyści dla projektu przyniesie zastosowanie dobrych praktyk programistycznych. Według mnie jego wiedza powinna ocierać się również o devops. Powinien wiedzieć z czego składa się prosty proces CI/CD i dlaczego jest to istotne. Jest to również osoba, która rozumie biznes i potrafi z nim rozmawiać. Co do pracy w zespole Mid Developer chętnie dzieli się swą wiedzą i doświadczeniami w innych projektach. Uczęszcza na spotkania, gildie (jeśli takie istnieją) i chętnie rozmawia z innymi osobami na temat nowinek, ulepszania aktualnych rozwiązań.
Senior Developer według mnie powinien być nie tylko osobą stricte techniczną. Bardzo ważne o ile nie najważniejsze są umiejętności miękkie, zaangażowanie w pracę innych oraz bycie pewnego rodzaju wzorem do naśladowania przez innych developerów. Osoba na tym stanowisku podąża za nowinkami technologicznymi i wie z czego korzystać, a z czego nie jeśli chodzi o technologie używane w konkretnym projekcie. Powinna również dbać o pracę innych, uczyć ich dobrych praktyk wyznaczać kierunek, w którym powinien podążać zespół. I tak taka osoba powinna być pewnego rodzaju komandosem lecz nie do przesady.
8. Doświadczenia z wyceniania zleceń – wszelakich. Kiedy liczyć od godziny, jak szacować ilość godzin, jak przekonywać klienta że kwota X jest odpowiednia za dany produkt. (Dawid Lipiński)
Andrzej Wojtyś, Lead Backend Developer w Lamia Oy:
Tak na dobrą sprawę, każda wycena sprowadza się do obliczenia ilości godzin potrzebnych na każdy fragment projektu. Dzięki temu, jesteśmy w stanie ocenić, ile projekt zajmie czasu, oraz, czy w ogóle jesteśmy w stanie go wykonać w założonym budżecie (w przypadku fixed-price lub ograniczonego budżetu).
Co do przekonywania klientów, z mojego doświadczenia, oni z reguły lubią szczerość i rozbicie wycen najbardziej jak się da. To znaczy, jeżeli projekt zawiera wiele komponentów/części, każdy z nich powinien być wyceniony osobno. Powinieneś również umieć uargumentować, czemu coś zajmie tyle czasu na ile wyceniasz, gdyż w ten sposób pokażesz profesjonalizm, pozyskasz zaufanie oraz rozwiejesz wątpliwości klienta co do tego, czy wycena nie jest po prostu losową liczbą.
9. Może jakieś porady jak wkroczyć do pracy zawodowej jako programista, mając już porządną wiedzę, ale bez doświadczenia komercyjnego i jednocześnie w momencie, gdy nie można sobie pozwolić na staż/praktyki lub nisko płatne stanowisko juniorskie (właśnie ze względów finansowych)? (Jakub Hebel)
Andrzej Wojtyś, Lead Backend Developer w Lamia Oy:
W takim wypadku, podstawą będzie stworzenie swojego własnego portfolio w postaci projektów open-source, które można pokazać potencjalnemu pracodawcy. Bardziej skomplikowany projekt = większa szansa na pozytywny rezultat (gdyż osoba przeglądająca będzie miała większy wgląd we faktyczne umiejętności kandydata).
Poza tym, warto zbudować listę kontaktów. Na Linkedin można znaleźć wielu rekruterów, którzy mają po kilka ofert i będą w stanie dobrać idealną dla Ciebie. Również udzielanie się na forach/grupach branżowych może być cenne, ze względu na rozszerzanie własnych horyzontów, jak również na to, że być może jakiś headhunter Cię dostrzeże. Podobne efekty można również osiągnąć poprzez partycypację w warsztatach oraz konferencjach branżowych, jeżeli jest się aktywnym w trakcie sesji networkingowych.
Jakub Stompor, Senior Frontend Developer w T-Mobile:
Według mnie osoba w takim położenie powinna przede wszystkim zadbać o swój image w sieci oraz poszerzać grono kontaktów na różnych serwisach branżowych. Powinna uczestniczyć we wszelakiego rodzaju dyskusjach na serwisach internetowych poruszających tematykę programowania. Rozwijać swoje własne proste projekty do portfolio, aby mieć się czym później pochwalić podczas ewentualnej rozmowy kwalifikacyjnej. Liczy się efekt skali i to co się robi poza tym, że ma się tylko nabytą wiedzę. Po prostu ktoś prędzej czy później taką osobę dostrzeże. Następnie należy wysyłać swoje CV na wybrane przez siebie oferty pracy lub informować swoją sieć kontaktów o chęci podjęcia nowych wyzwań zawodowych co według mnie po skutkuje przyjęciem do nowej pracy.
10. Jak wystartować na juniora po kilkukrotnym rozbiciu się o ścianę zwaną „doświadczenie komercyjne”? Staży jak na lekarstwo, a bez w/w ciężko nawet na rozmowę się dostać.
Przemysław Rogowski, Scala Developera w Adevinta:
Polecam zainwestować w siebie. Taka inwestycja nigdy nie będzie stratna i zostanie z Tobą na zawsze. Przy dużej ilości osób, które aplikują na daną pozycję, twoje CV musi posiadać coś, co przyciągnie uwagę rekrutera. Jeśli nie możesz tego osiągnąć za pomocą doświadczenia zawodowego, to musisz poszukać innej drogi. Rzeczy, które przychodzą mi do głowy to kursy i własne projekty, z nastawieniem bardziej na projekty. Posiadanie w CV informacji o własnej aplikacji w App Store, udzielaniu się w bibliotekach open source, stworzeniu własnego otwartego API czy posiadanie małego portfolio stron webowych powinno ci bardzo ułatwić znalezienie pracy.
Inna opcja to wzięcie udziału w kursie, w którym organizatorzy współpracują z pracodawcami. Bardzo często na koniec kursu organizuje się targi pracy, i wiele osób znajduje na nich zatrudnienie. Tego typu kurs ma na celu wcześniejsze wdrożenie osoby w technologię, przez co pracodawca ma ułatwioną sytuację przy początkującym pracowniku.
11. Co warto robić dodatkowo, aby być bardziej „atrakcyjnym? Jakieś strony gdzie można brać udział w projektach w celu poszerzenia swojego CV?
Przemysław Rogowski, Scala Developera w Adevinta:
Najlepszą stroną jaka przychodzi mi do głowy jest github. Jest tam bardzo wiele projektów open source z bardzo różnych technologii. Zawsze można skontaktować się z właścicielem projektu i przedstawić mu propozycję, że oferujemy pomoc w programowaniu w zamian za odrobinę mentoringu. Można zdobyć w ten sposób bardzo dużo doświadczenia oraz istotny wpis do CV.
12. Rynek pracy. Czy warto składać aplikacje na ogłoszenia wymagające doświadczenia (np. rocznego), nie posiadając owego licząc na odzew?
Marcin Skrzypek, Tech Lead w BGK:
Podając wymagany okres doświadczenia, pracodawca ma na myśli poziom kompetencji jaki kandydat powinien posiadać na danym stanowisku, w jego firmie. Jeśli nie mamy wymaganego doświadczenia komercyjnego (tzn. nie pracowaliśmy przez ten okres na danym stanowisku w innej firmie), ale mamy kompetencje (nabyte np. w tworzeniu projektów prywatnych) odnośnie danej technologii, spróbujmy to jasno wykazać w przesłanej aplikacji (np. w CV).
Jeśli osoba przeglądająca aplikację uzna, że to doświadczenie jest interesujące, na pewno zechce się z nami spotkać. Nawet w przypadku gdy rozmowa nie pójdzie po naszej myśli, nic nie tracimy. Jesteśmy w tym samym miejscu (zawodowo), w którym byliśmy przed rozmową, ale zdecydowanie bogatsi o nowe doświadczenie, listę tematów, które powinniśmy nadrobić by lepiej wypaść na kolejnej rozmowie.
Jeśli natomiast pracodawca jasno pisze, że wymaga danego doświadczenia, a my nie robiliśmy jeszcze żadnego projektu w wymaganej technologii (nawet prywatnie), chcemy się dopiero jej uczyć, może warto najpierw nadrobić te braki we własnym zakresie, choćby po to, by pewniej czuć się na ewentualnym spotkaniu weryfikującym umiejętności.
Więcej o tegorocznej edycji akcji Od Juniora do Seniora dowiecie się z tego artykułu. Nadal szukamy m.in. chętnych do udziału w bezpłatnych spotkaniach z seniorami.