co powinien umieć junior developer

POIT #003: Co powinien umieć junior developer?

Witamy w trzecim odcinku podcastu „Porozmawiajmy o IT”. Tytuł odcinka to „Co powinien umieć junior developer?”

Lista umiejętności, które według nas powinien posiąść początkujący programista to:

  1. Nie techniczne
    1. Język angielski
    2. Ambicja
    3. „I don’t know approach”
    4. Chęć i wola uczenia się
    5. Zrozumienie i dopasowanie do kultury firmy
    6. Umiejętność pozyskiwania informacji i wiedzy
  2. Techniczne
    1. Język programowania
      1. Syntax
      2. Zasady OOP i SOLID
      3. Praktyczne uczenie się języka
    2. Frameworki i biblioteki
    3. Bazy danych
    4. Unit testing
  3. Narzędzia
    1. Git
    2. Deployment
    3. Tools to project management

Subskrypcja podcastu:

Pozostańmy w kontakcie:

 

Muzyka użyta w podcaście: „Endless Inspiration” Alex Stoner  (posłuchaj)

Transkrypcja podcastu

To jest trzeci odcinek podcastu Porozmawiajmy o IT. Dziś przedstawiamy Wam co w mojej opinii powinien umieć junior developer.

W tej audycji witają cię Krzysztof i Jacek. W naszym podcaście rozmawiam ze sobą i z naszymi gośćmi o branży informatycznej. Przedstawiamy trendy zjawiska i opinie. Staramy się przybliżyć tę branże tym których w niej na co dzień nie ma jak również zaciekawić stałych bywalców. Pozostań z nami! A teraz zapraszamy już na kolejny odcinek.

Dzień dobry cześć! Słuchajcie no strasznie długa przerwa nam zrobiła w wypuszczaniu kolejnych odcinków tego podcastu. Ostatni odcinek właśnie przed chwilą sprawdziłem publikowany na początku sierpnia czyli to będzie półroczna przerwa. Ale mamy 2018 rok. Jest postanowienie żeby się poprawić i żeby wypuszczać te odcinki w miarę regularnie zwłaszcza że widzimy zapotrzebowanie na tego typu podcast. No i sami też chcielibyśmy się podzielić swoimi opiniami. Przejdźmy więc do rzeczy. Trzeci odcinek podcastu Porozmawiajmy o IT. I moja opinia na temat co tak naprawdę powinien umieć junior developer nim podejmie pracę lub też na początku na początku swojej kariery.

Odpowiedzmy sobie zatem na pytanie kim jest junior deweloper albo właściwie co to znaczy być junior deweloperem. W klasycznym takim HRowym podejściu deweloper to jest osoba, która na stanowisku pracuje powiedzmy gdzieś do roku maksymalnie dwóch czyli tak de facto w tym podejściu to czas pracy na stanowisku określa pozycję czy też miano junior dewelopera. Wydaje mi się że to jest błędne podejście bo tak naprawdę to nie czas pracy określa czy powinien określać to czy dany programista jest junior deweloperem ale jego umiejętności są wyznacznikiem tego faktu. Zatem junior deweloper to jest osoba czy też powinniśmy tak definiować właśnie junior dewelopera jako osobę która nabyła określone umiejętności. Trzeba tutaj dodać że branża informatyczna przeżywa obecnie boom. Ten wzrost właśnie powoduje że jest bardzo duże zapotrzebowanie na programistów. Siłą rzeczy więc mamy coraz więcej junior deweloperów na rynku i oczywiście to bardzo dobrze. Trzeba jednak powiedzieć że dwojakiego rodzaju jest źródło pochodzenia tych deweloperów, osób które chcą wejść w branżę IT. Chcą zostać programistami. Pierwsze takie klasyczne źródło to jest oczywiście to są młodzi ludzie którzy skończyli studia. Osoby które nierzadko rozpoczynają dopiero swoją karierę to jest ich pierwsza praca w życiu. Drugie źródło, druga droga wejścia do tej branży to są osoby które się przebranżawiają, które przechodzą z innych branż ponieważ gdzieś tam usłyszały o tym że warto jest zostać programistą. I zwłaszcza ci drudzy są obecnie coraz częstszym nabytkiem branży IT. Dużo się o tym mówi coraz więcej jest różnych szkół programowania, bootcampów z których korzystają osoby zmieniające właśnie branżę.

Jednak niezależnie od tego czy skończyłeś studia i to jest twoja pierwsza praca jako junior developer czy też może już wcześniej pracowałeś w zupełnie innej branży. Zestaw umiejętności które musisz posiadać rozpoczynając pracę będąc junior deweloperem jest taki sam. W tym podcaście chcę teraz przedstawić listę umiejętności która według mnie jest bardzo przydatna i ułatwi tobie wejście w nową pracę ułatwi życie tobie i twojemu pracodawcy. Moją listę umiejętności podzeiliłem na trzy kategorie: umiejętności techniczne techniczne i narzędzia. Także zaczynamy. Zacznę może dosyć nietypowo ale od umiejętności nie technicznych. I może tutaj być trochę zdziwienie bo wydaje się że junior developer zwłaszcza powinien być wyposażony w różne umiejętności twarde techniczne tak żeby poradzić sobie z problemami które pracodawca przed nim postawi. Tym czasem wydaje mi się że o ile umiejętności twarde to jest oczywiście bardzo ważna rzecz wręcz niezbędna. O tyle umiejętności nietechniczne, miękkie są równie ważne i niezbędne w dalszej karierze. Musimy pamiętać że praca programisty to nie tylko stukanie w klawiaturę i pisanie kodu ale również współpraca z pozostałymi członkami zespołu. To również zwłaszcza w przypadku junior deweloperów rozwój, chęć rozwoju i poszerzania swoich umiejętności. Tutaj właśnie wszystkie te umiejętności miękkie które teraz przedstawię są niezwykle istotne stąd też nie możemy ich pamiętać. Punkt pierwszy umiejętności nietechnicznych to język angielski. Tutaj nie będę za bardzo odkrywczy. Jest to najważniejszy język dla programisty nie tylko z uwagi na to że większość dokumentacji jest w języku angielskim ale również pewne standardy pisania kodu na przykład używania nazw dla zmiennych dla funkcji metod itd. Do tego wykorzystuje się język angielski. Kiedy ja zaczynałem swoją karierę jako programista PHP dawno dawno temu to używaliśmy języka polskiego żeby na przykład nazywać zmienne ale obecnie oczywiście już dawno odeszło. Język angielski jest na tyle wszechobecny że nie tylko służy do poznawania nowych rzeczy do uczenia ale również w praktyce do np. komunikacji z klientami którzy bardzo często są klientami anglojęzycznymi. Punkt drugi na liście to ambicja. Nie chcemy przecież być junior deweloperami przez lata. Traktujemy to jako pewien start rozpoczęcia naszej kariery bycia ambitnym jest niezbędne żeby jak najszybciej przejść na kolejny etap i tutaj polecał bym na przykład takie rzeczy jak uczestniczenie w rozwiązywaniu trudniejszych problemów czy angażowanie się w różne inicjatywy wewnątrz firmy. Na pewno wykazanie się ambicją przyspieszy nasz awans. Punkt trzeci na liście to nie bać się mówienia nie wiem. Czyli pytanie o radę informacje starszych kolegów. Każdemu przychodzi to bardzo trudno. Przyznawanie się do swojej niewiedzy ale junior deweloperom powinno to uchodzić na sucho ponieważ są oni na takim etapie swojej kariery, w którym priorytetem jest rozwój. Nie da się rozwijać pracując tylko samemu z kodem trzeba się przyznać do swojej niewiedzy i jest to normalne zachowanie. Jeśli junior deweloper pyta się swego starszego kolegi jak ma poradzić z pewnym problemem to najczęściej spotyka się z przychylnością ze strony tej drugiej osoby ponieważ to druga osoba w jej oczach została uznana jako ekspert jako ktoś kto ma wiedzę i z chęcią się nią podzieli.

Piąta umiejętność nietechniczna którą junior developer powinien wykazywać od samego początku to chęć i wola uczenia się. Wydaje się to dosyć oczywiste że rolą junior dewelopera jest poznawanie nowych rzeczy, wchłanianie nowych informacji ale z moich obserwacji bardzo często wynika coś takiego że junior deweloperem można być po pięciu nawet dziesięciu latach kariery ponieważ zagubiło się gdzieś tam chęć do nauki do uczenia się nowych rzeczy przyswajania nowych informacji. Branża IT jest oczywiście na tyle specyficzna że ten postęp jest bardzo szybki i konieczność podążania za nowymi trendami, framework, językami jest wręcz na poziomie dziennym. Junior deweloperzy mają dość często przeświadczenie o swojej wiedzy. Kończąc bądź też liczne szkoły programowania czy bootcampy w dzisiejszych czasach ma się wrażenie że skupiło się całą wiedzę potrzebną do pracy praktycznej co oczywiście nie jest prawdą. Początkowy okres w pracy bardzo szybko udowadnia że trzeba poszerzyć swoją wiedzę i tę umiejętność gromadzenia nowych informacji i przyswajania wypróbowania ich w praktyce staje się niezwykle istotna. 5. Umiejętność to chęć dopasowania i zrozumienie kultury firmy i żyjemy w takich czasach w branży IT kiedy popyt jest niezwykle duży kiedy często słyszy się o tym że nowe osoby rozpoczynające pracę i nie dlatego że mają bardzo wysokie oczekiwania że są dosyć aroganccy w stosunku do swojego pracodawcy jeśli chodzi o wymagania finansowe. Tymczasem ten element zrozumienia że musimy się dostosować do tego jakie standardy panują w firmie jest niezwykle istotny. Inaczej nie zagrzejemy w tej firmie miejsca. Będzie to strata dla nas i dla pracodawcy. I tak naprawdę wcale nie będziemy się rozwijać i szósta ostatnia umiejętność nietechniczna to umiejętność uczenia się czyli wiedza w jaki sposób skutecznie i szybko pozyskiwać nowe informacje jak się szybko uczyć. I to po częsci nawiązuje do tej czwartej umiejętności kiedy mówiłem o chęci i woli uczenia się. Oczywiście sama chęć czy sama wola nie wystarczą. Musimy wiedzieć w jaki sposób szukać informacji, gdzie są najlepsze źródła, w jaki sposób te informacje przyswoić. Umiejętność szybkiego uczenia się tutaj kluczowa. Podsumowując sześć umiejętności nietechnicznych które junior developer powinien sobie przyswoić na początku swej kariery lub wręcz posiadać już wcześniej to: język angielski. 2. Ambicja trzecie nie banie się mówienia nie wiem, czwarte chęć i wola uczenia się, piąte zrozumienie i dopasowanie do kultury firmy, sześć: wiedza gdzie szukać informacji i nowych umiejętności. I to name zamyka te umiejętności nietechniczne a teraz przejdźmy do umiejętności technicznych. Zatem wmiejętności techniczne. Tutaj oczywiście dużo zależy od konkretnej technologii. z którą macie zamiar działać ale staram się nie więcej zebrać takie bardzo ogólne rzeczy które sprawdzą się niezależnie od tego czy to będzie PHP czy Assembler. Tak, zaczynamy zatem punkt pierwszy to oczywiście język programowania Od juniora developera nie wymaga się żeby jego znajomość była na bardzo wysokim poziomie pozwalającym pisać produkcyjny kod jednak pewne niezbędne elementy języka programowania tego pierwszego języka programowania który został wybrany przez dewelopera muszą muszą być. Nikt nie będzie uczył juniora języka programowania od początku od podstaw ponieważ to nie jest rola firmy.

Tutaj oczywiście można odesłać do szkół oprogramowania boodcampów lub też samodzielnego uczenia się. Dlatego tak jak mówiłem pewien niezbędny poziom znajomości języka programowania jest niezbędny. I co tutaj mam na myśli mówiąc o tym podstawowym poziomie to jest oczywiście pewna znajomość składni. Nie musimy znać całej dokumentacji na pamięć. Chodzi o pewną wiedzę która jest takim minimum dla danego języka jeśli chodzi o składnie. Najczęściej mamy tutaj do czynienia z językami obiektowymi więc zrozumienie zasad obiektowości jest powiedziałbym niezbędne i wymagane. I dodałbym jeszcze że znajomość zasad Solid będzie byłaby już naprawdę taką wisienką na torcie. Bardzo ważne jeśli chodzi o język programowania jest taka umiejętność czy nawyk do wypróbowania w praktyce nowo zdobytej wiedzy czyli testowanie sobie gdzieś tam w jakimś sandboxie czy w jakimś playgroundzie właśnie nowo nabytych umiejętności. Wiedza teoretyczna bardzo szybko ulatuje dlatego uczenie się poprzez pisanie praktycznego kodu jest zwłaszcza dla junior developera najlepszą drogą. Druga umiejętność techniczna to znajomość frameworków i bibliotek używanych w danej technologii zwłaszcza tych używanych przez firmę do której powiedzmy aplikujemy do pracy. I tutaj jest podobna zasada jak w przypadku języka programowania nie chodzi o to żebyśmy znali każdy element framework czy wszystkie możliwe biblioteki. Chodzi o to żeby znać zasady ich używania i tutaj również stosuje się ta zasada że dobrze by było gdyby junior developer już wcześniej przynajmniej starał się pobawić frameworkami starał się użyć ich jakoś w praktyce czy chociażby wiedza jak framework zainstalować na komputerze jak sobie skonfigurować środowisko robocze.

To jest bardzo cenna umiejętność która daje też pracodawcy taką informację że ta osoba jest naprawdę zainteresowana tym tematem, że wcześniej już się z tym bawiła i nie trzeba tracić czasu na takie administracyjne rzeczy. Trzecia umiejętność techniczna to baza danych i oczywiście zgodzę się że nie każdy produkt, nie każdy projekt wykorzystuje bazę danych natomiast większość z pewnością tak. Prędzej czy później natkniesz się na bazę danych w swoim projekcie. Co powinien umieć junior deweloper jeśli chodzi o bazę danych. Z pewnością podstawy SQL a języka który umożliwia zapytania do bazy danych a także umiejętność skonfigurować czy przynajmniej zainstalowania silnika bazy danych na komputerze. Myślę że to jest takie minimum. Powiedzieliśmy sobie już o języku programowania o frameworkach o bazach danych. Kolejny taki element istoty w projekcie to jest testowanie a zwłaszcza unit testing. Świadomość testowania rośnie nawet w polskich firmach jest to dosyć wysokim poziomie. Z pewnością junior developer prędzej czy później zetknie się z testami. Wiedza o tym czym są testy jednostkowe przynajmniej testy jednostkowe. Jakie biblioteki są wykorzystywane do testów w twojej technologi oraz czym są metodologię takie jak TDD czy BDD z pewnością ułatwi ci wejście w projekt. Te cztery elementy czyli język programowania, frameworki, bblioteki, bazy danych i testowanie zwłaszcza unit testing zamyka nam listę umiejętności technicznych. Możemy teraz przejść do trzeciej i ostatniej kategorii czyli do znajomości narzędzi. I pierwszy element na liście narzędzi które powinien umieć obsługiwać junior developer to system kontroli wersji. Teraz obecnie najbardziej popularny czyli git pisze że żaden projekt nie istnieje obecnie bez systemu kontroli wersji kodu źródłowego. Zwłaszcza kiedy jest popularny stąd takie rzeczy jak umiejętność wysyłania kodu pobrania kodu z repozytorium zrobienia brancha czy zmergowania t o jest coś co developer powinien umieć. Drugi element to deployment. Jak to się dzieje że kod który piszesz buduje na produkcji nie czuł się twojej firmie. Może to być zostawione pewien specyficzny sposób natomiast znajomość standardów w twojej technologi jest wielce wskazana. Takie rzeczy jak CI, budowanie projektu czy to w jaki sposób serwer działa wraz z Twoją aplikacją to są umiejętności które raczej prędzej niż później przydadzą się w pracy. Ostatnie trzecie narzędzie które powinien znać developer to są narzędzia służące do zarządzania projektem. Oczywiście jest ich bardzo wiele na rynku więc ciężko byłoby wymagać znajomości każdego z nich natomiast większość z nich działa na bardzo podobnych zasadach więc znajomość takich narzędzi jak na przykład GitHub, Trello z pewnością ułatwi Ci start w nowym projekcie. Podsumowując 3 niezbędne narzędzia które powinien znać developer to git, narzędzia służące do deploymentu aplikacji oraz narzędzia służące do zarządzania projektem. I to na tyle z tego co przygotowałem dla Was na dzisiaj. Dajcie znać w komentarzach czy według was ta lista nie jest pełna czy może należałoby tam coś jeszcze dodać. Tak jak pewnie słyszeliście ten podcast, ten odcinek podcastu ma nieco inną formę nową muzykę. Mam nadzieję, że się spodoba. Dajcie znać co o tym myślicie. Dzięki. Do usłyszenia w kolejnym odcinku. Dziękuję Ci serdecznie za wysłuchanie kolejnego odcinka podcastu Porozmawiajmy o IT. Chcielibyśmy aby ten pokaz docierał do jak najszerszego grona słuchaczy. Możesz nam w tym pomóc zostawiając gwiazdki i opinią w katalogu iTunes lub innej aplikacji z której korzystasz do słuchania podcastów. Będziemy Ci wdzięczni za podzielenie się informacją o tym podcaście w mediach społecznościowych. Jeszcze raz dzięki za bycie z nami i do usłyszenia w kolejnym odcinku. Cześć.

mm
Krzysztof Kempiński
krzysztof@porozmawiajmyoit.pl

Jestem ekspertem w branży IT, w której działam od 2005 roku. Zawodowo zajmuję się web-developmentem i zarządzaniem działami IT. Dodatkowo prowadzę podcast, kanał na YouTube i blog programistyczny.