A więc chcesz zostać junior developerem? Przewodnik po umiejętnościach, których będziesz potrzebował | DailyWeb.pl

A więc chcesz zostać junior developerem? Przewodnik po umiejętnościach, których będziesz potrzebował

Opublikowano 8 miesięcy temu - 7


Zainspirowany wpisem Łukasza, który stworzył poradnik jak przygotować się na rozmowę kwalifikacyjną na stanowisko UX, postanowiłem poruszyć pokrewny temat dla developerów. A więc chcesz zostać junior developerem (lub aplikować na takie stanowisko)? Dam ci kilka rad, które pozwolą ci wypaść dużo lepiej na kolejnej rozmowie kwalifikacyjnej. Będę opierał się na własnych doświadczeniach zarówno od strony osoby przeprowadzającej rozmowę, jak i uczestnika.

Przewodnik po pytaniach jakie możesz usłyszeć na rozmowie o pracę dla UXa

Nie samym językiem żyje developer

A więc wybrałeś już język, w którym chcesz się specjalizować, przerobiłeś kilka tutoriali być może nawet bootcamp. Możliwe, że nawet zrobiłeś kilka projektów dla siebie, lub udało ci się dostać małe zlecenie. Czy to już wystarczy, żeby startować na rynku pracy na pozycje junior deva? Zapewne znajdziesz jakąś firmę, która weźmie pod swoje skrzydła takiego żółtodzioba i nauczy go wszystkiego (mamy dość spory deficyt na rynku więc chętni się znajdą). Jednak, pewnie nie będziesz miał dużego wyboru, a i wynagrodzenie może nie należeć do najatrakcyjniejszych. Samo poznanie języka, w którym będziesz programować to na pewno ważny krok. Jest jednak jeszcze kilka innych tematów, które powinieneś zgłębić, żeby pokazać się z lepszej strony na rozmowach kwalifikacyjnych, nie wyjść na ignoranta tylko na osobę która chce się rozwijać i wie jak to robić. Więc czego powinieneś się nauczyć poza samymi podstawami języka?

System kontroli wersji

Nieodzowne narzędzie przy pracy z każdym projektem. Aktualnie najbardziej popularnym jest GIT i polecam skupić się na tym. Niezależnie jaki język wybierzesz, to kontrola wersji będzie ci potrzebna na co dzień. Nie musisz od razu wiedzieć jak robić bardziej zaawansowane rzeczy, ale jeśli przyswoisz sobie co to commit, pull push i branch to powinno ci wystarczyć na start. W końcu chcesz być juniorem. Polecam od razu zapoznać się z poleceniami konsolowymi, mogą paść o nie jakieś pytania na rozmowie i wtedy możesz błyszczeć. Używanie GUI jest bardzo wygodne, ale warto wiedzieć co siedzi „pod maską”.

Wzorce projektowe

Warto znać chociaż kilka, na pewno dla języka, w którym piszesz znajdziesz listę „najczęściej używanych”. Możesz się wydawać, że to nie zagadnienie dla np. CSS. Ale nawet w CSS są pewne wzorce np. nazewnictwa klas. Jeśli piszesz w jakimś konkretnym frameworku, warto zbadać, na jakich wzorcach się on opiera. Przykładowo Symfony (najpopularniejszy framework PHP) bazuje na dependency injection. Jeśli na rozmowie padłoby o to pytanie, a nie wiedziałbyś tego, zrobisz niezbyt dobre wrażenie. Nie musisz znać ich wszystkich, bo jest ich naprawdę sporo, a każda technologia może mieć lekkie wariacje implementacyje danych rozwiązań. Poznanie założeń kilku wzorców pozwoli ci wybrnąć z ciężkich pytań na rozmowie.

Framework

Warto znać co najmniej jeden. To, że przeszedłeś tutoriale w JavaScripcie nie oznacza, że odnajdziesz się w projekcie napisanym w Angular czy React. To samo z innymi językami. Warto poświęcić chwilę czasu i zapoznać się, choć z jednym z popularniejszych. Dodatkowo aplikując na stanowisko zazwyczaj wiesz jakiej technologi używa się w firmie. Nawet jeśli wcześniej nie miałeś z nią kontaktu, to polecam zapoznać się z podstawami, dzięki temu będziesz mógł się wykazać podczas rozmowy i zrobisz dobre wrażenie.

Narzędzia pomocnicze

W każdej technologi używa się dodatkowych programów, które usprawniają pracę. Czasem są wbudowane w framework (jak np. symfony console ) lub są to osobne twory, które ułatwiają pracę. Podam kilka przykładowych, z którymi sam pracuję z podziałem na języki.

JavaScript

  • grunt/gulp
  • bower/npm
  • browser dev tools (może wydać się śmieszne i oczywiste, ale zdarzały się osoby, które nie wiedziały nawet jak je uruchomić)

PHP

  • composer
  • symfony console (lub inny tool wbudowany w twój framework)
  • doctrine lub inny ORM

CSS

  • less/sass (to bardziej preprocesory ale wiecie o co mi chodzi ;) )

Programowanie obiektowe. Nie każdy język tego wymaga ale warto wiedzieć jak pisać kod obiektowy i jakie są jego zasady. Spotkałem się już z kandydatami, który twierdzili, że da się utworzyć obiekt klasy abstrakcyjnej, więc warto poświecić trochę czasu, chociaż na naukę teorii. Praktyczna wiedza za to pozwoli lepiej obyć się z tematem i na pewno przyniesie korzyści jak nie na rozmowie to w przyszłości. Oczywiście, jeśli chcesz być developerem html i css to tutaj nie bardzo możesz się wykazać. Ale w pozostałych technologiach na pewno będzie to punkt dla ciebie w trakcie rozmowy.

Bazy danych

Tak samo jak z OOP - zależy od języka. Do najpopularniejszych baz należą MySQL i Oracle. Jeśli planujesz pisać w .NET to na pewno będziesz musiał zwrócić uwagę na MS SQL. Warto też poznać różnicę między relacyjnymi a nierelacyjnymi bazami danych. Jeśli skupiasz się na frontendzie możesz ominąć temat samych baz danych ale za to możesz przyswoić temat local storage.

Testy

Niestety nie jest to popularny temat w większości firm, chociaż tendencja z roku na rok się zmienia. Nie zaszkodzi poznać również tego aspektu programowania. Jeśli będziesz wiedział czym różni się TDD od BDD albo jak napisać prosty unit test zgarniesz dodatkowe punkty w oczach rekrutujących. Każdy język ma kilka rozwiązań wspomagających pisanie testów. Do każdej metodologi jest kilka frameworków, więc warto zapoznać się z tym co oferuję język który wybrałeś. Jeśli firma pisze testy to napewno uzna twoją wiedzę za atut, i dzięki temu może wybrać właśnie ciebie spośród wielu juniorów kandydujących na to stanowisko.

HTTP

Jeśli chcesz pracować z webem znajomość protokołu jest bardzo ważna. Musisz wiedzieć jakie masz dostępne typy request’ów, co oznaczają kody statusów. Warto przyswoić sobie też czym jest REST i jak się z nim pracuje. Dodatkowo polecałbym zainteresować się formatami wymiany danych (JSON powinien wystarczyć, ale możesz również zwrócić uwagę na XML).

Umiejętności miękkie

Temat rzeka i pewnie każdy HR’owiec zwróci na to uwagę. Zapoznaj się z kilkoma podstawowymi metodologiami pracy w zespołach (SCRUM, FDD, XP, Waterfall), są to chyba najważniejsze rzeczy dla developera z umiejętności miękkich. Język angielski jest kolejną z nich, jeśli masz z nim problemy może warto zapisać się na jakiś kurs językowy. Nawet jeśli nie będziesz posługiwać się nim perfekcyjnie a poinformujesz na rozmowie o tym że uczęszczasz na kurs - zyskasz kolejne punkty. Pamiętaj, że dokumentacje są pisane głównie po angielsku i bez niego będzie ci bardzo ciężko.

Wszystkie powyższe punkty powinieneś traktować jako swój oręż na rozmowie kwalifikacyjnej, im lepiej się nim posługujesz tym lepsze warunki możesz wywalczyć i lepiej poradzić sobie na tle innych kandydatów. Jako ostatnią radę chciałbym ci przekazać, że szczerość na rozmowie jest najważniejsza. Pamiętaj że najprawdopodobniej będzie tam obecny firmowy senior lub team leader, który od razu wyłapie, że coś koloryzujesz lub po prostu ściemniasz. Lepiej przyznać się, że czegoś się nie wie niż udawać eksperta. Dzięki temu zaprezentujesz się jako osoba, która zna swoje możliwości i wie gdzie powinna uzupełnić wiedzę. To by było na tyle w mojej liście, życzę samych sukcesów na przyszłych rozmowach kwalifikacyjnych!


Autorem materiału jest Paweł Płoneczka.