Diversity w polskim IT
Adnan Ahmed
Adnan AhmedSoftware Engineering Lead @ tajawal

Jak zostać Backend Developerem - 24 kroki

Poznaj 24 konkretne kroki, których przejście otworzy Ci drogę do bycia Backend Developerem.
20.05.20227 min
Jak zostać Backend Developerem - 24 kroki

Web development w dzisiejszych czasach jest czymś zupełnie innym niż kilka lat temu. Istnieje wiele różnych aspektów, które mogą zaskoczyć osoby chcące rozpocząć przygodę w tym obszarze. To właśnie jeden z powodów, dla których postanowiliśmy stworzyć wizualne przewodniki krok po kroku, które mają za zadanie pokazać całość i to, czego trzeba się nauczyć, by pracować w określonej roli.

Dziś na warsztat weźmiemy kwestie dotyczące współczesnego Backend Developera.

Do tej pory przewodnik, o którym wspomniałem wyżej, zawierał tylko zarys, bez jasnych wskazówek co do kolejności kolejnych etapów. Narysowałem go dokładniej, na wzór roadmapy Frontend Developera.

Szczegółową roadmapę znajdziesz na poniższym obrazku, ale wyjaśnię również każdy krok w tekście.

Chociaż nie wymieniłem znajomości HTML /CSS, zaleca się przynajmniej podstawowe zrozumienie oraz umiejętność stworzenia nawet czegoś nieskomplikowanego w tych technologiach.

Krok 1 – Naucz się języka

Masz wiele opcji, jeśli chodzi o wybór języka. Podzieliłem je wg kategorii, aby ułatwić Ci podjęcie decyzji. Dla początkujących, którzy dopiero wgryzają się w backend, polecam wybrać jeden z języków skryptowych, ponieważ jest na nie duże zapotrzebowanie i pozwoli Ci to na stosunkowo szybkie znalezienie pracy. Jeśli masz trochę wiedzy na temat frontendu, może znasz już Node.js. To duży plus przy poszukiwaniu zatrudnienia, bo jest na niego naprawdę spory popyt.

Jeśli już masz już jakieś doświadczenie w programowaniu na backendzie i znasz jakiś język skryptowy, radziłbym nie wybierać teraz innego języka skryptowego, a postawić na coś z sekcji „funkcyjne” lub „wieloparadygmatowe”. Np. jeśli już korzystasz z PHP lub Node.js, nie wybieraj Pythona lub Ruby, a zamiast tego wypróbuj Erlanga lub Golanga. Z pewnością pomoże Ci to rozwinąć myślenie o backendzie.

Krok 2 - Ćwicz to, czego się nauczyłeś

Nie ma lepszego sposobu na naukę niż ćwiczenie. Po wybraniu języka i zrozumieniu podstawowych pojęć, postaraj się je stosować. Twórz jak najwięcej małych aplikacji. Oto tylko kilka pomysłów na dobry początek:

  • Zaimplementuj jakąś komendę znaną Ci z konsoli. Np. spróbuj napisać swoją prostą wersję ls
  • Napisz polecenie, które pobiera i zapisuje posty reddit na /r/programming w postaci pliku JSON
  • Napisz polecenie, które zwróci Ci strukturę katalogów w formacie JSON, np. jsonify dir-name, aby otrzymać plik JSON ze strukturą wewnątrz dir-name
  • Napisz polecenie, które odczyta JSON z powyższego kroku i utworzy strukturę katalogów
  • Pomyśl o jakimś zadaniu, które wykonujesz każdego dnia i spróbuj je zautomatyzować

Krok 3 - Naucz się managera pakietów

Po zrozumieniu podstaw języka i stworzeniu przykładowych aplikacji dowiedz się, jak używać managera pakietów dla wybranego języka. Pomagają one w korzystaniu z zewnętrznych bibliotek w aplikacjach oraz w dzieleniu bibliotek z innymi.

Jeśli wybrałeś PHP, musisz nauczyć się Composer, Node.js ma NPM lub Yarn, Python ma Pip, a Ruby ma RubyGems. Jakikolwiek był Twój wybór, dowiedz się, jak korzystać z konkretnego managera.

Krok 4 - Standardy i najlepsze praktyki

Każdy język ma własne standardy i najlepsze praktyki dotyczące robienia różnych rzeczy. Ucz się ich dla wybranego przez siebie języka. Np. PHP ma PHP-FIG i PSR, a w Node.js istnieje wiele różnych wytycznych ustanawianych przez społeczność.

Krok 5 - Bezpieczeństwo

Zapoznaj się z najlepszymi praktykami dotyczącymi bezpieczeństwa. Przeczytaj wytyczne OWASP i zrozum różne problemy związane z bezpieczeństwem oraz sposoby ich unikania w wybranym języku.

Krok 6 - Ćwicz!

Znasz już podstawy języka, standardy i najlepsze praktyki, wiesz jak dbać o bezpieczeństwo oraz wiesz jak korzystać z menedżera pakietów. Teraz idź o krok dalej - stwórz pakiet i udostępnij go innym. Tylko pamietaj, aby upewnić się, że przestrzegasz standardów i najlepszych praktyk, zgłębionych przez Ciebie do tej pory! Np. jeśli wybrałeś PHP, udostępnij go na Packagist. Jeśli wybierzesz Node.js, udostępnij go w rejestrze Npm itd.

Gdy to zrobisz, wyszukaj jakieś projekty na Githubie i otwórz kilka pull requestów. Oto kilka pomysłów:

  • Przeanalizuj i zaimplementuj najlepsze praktyki, których się nauczyłeś
  • Sprawdź "open issues" i spróbuj je rozwiązać
  • Dodaj nową funkcję do projektu

Krok 7 - Dowiedz się więcej o testowaniu

Istnieje kilka różnych typów testów. Poznaj je i ich zastosowania. Ale na początek dowiedz się, jak pisać testy jednostkowe i integracyjne w swoich aplikacjach. Zrozum także terminologie testowania, jak np. mock, stubs itd.

Krok 8 - Zastosuj to, co umiesz

W ramach praktyki napisz testy jednostkowe dla zadań, które wykonałeś do tej pory. Szczególnie tych, które wykonałeś w kroku 6.

Naucz się również jak obliczać pokrycie testami tego, co napisałeś..

Krok 9 - Poznaj relacyjne bazy danych

Dowiedz się, jak utrwalać dane w relacyjnej bazie danych. Zanim wybierzesz narzędzie do nauki, zapoznaj się z różnymi terminologiami baz danych, np. klucze, indeksy, normalizacja, krotki itp.

Jest tu kilka opcji. Jednak jak nauczysz się jednego, pozostałe powinny być już dość łatwe. Tymi, których chcesz się nauczyć, są MySQL, MariaDB (który jest prawie taki sam, bo jest forkiem MySQL) oraz PostgreSQL. MySQL będzie najlepszy na początek.

Krok 10 - Zastosuj to, co już umiesz

Czas wykorzystać wszystko, co wiesz. Utwórz prostą aplikację, korzystając ze wszystkiego, czego nauczyłeś się do tej pory. Może to być dowolny pomysł, np. prosta aplikacja do blogowania. Zaimplementuj w niej poniższe funkcje:

  • Konta użytkowników - rejestracja i logowanie
  • Zarejestrowany użytkownik może tworzyć posty na blogu
  • Użytkownik powinien mieć możliwość przeglądania wszystkich utworzonych przez siebie postów na blogu
  • Powinien mieć możliwość usuwania swoich postów na blogu
  • Upewnij się, że użytkownik widzi wyłącznie swoje własne wpisy
  • Napisz testy jednostkowe/integracyjne dla aplikacji
  • Dodaj indeksy do bazy danych i upewnij się, że są używane w zapytaniach, które generuje aplikacja

Krok 11 - Naucz się frameworka

W zależności od projektu i wybranego języka, możesz potrzebować frameworka. Każdy język ma ich kilka do wyboru. Poznaj dostępne opcje i wybierz to, czego potrzebujesz.

Jeśli wybrałeś PHP, polecam wybrać Laravel lub Symfony, a z mikro-frameworków - Lumen lub Slim. Jeśli wybrałeś Node.js, istnieje kilka różnych opcji, ale najpopularniejszą z nich jest Express.js

Krok 12 - Czas na ćwiczenie

Teraz ćwiczeniem będzie przekonwertowanie aplikacji utworzonej w kroku 10, z użyciem wybranego przez siebie frameworka. Upewnij się, że przenosisz wszystko, łącznie z testami.

Krok 13 - Naucz się o bazach danych NoSQL

Na początek dowiedz się, czym różni się od relacyjnych baz danych i dlaczego jest potrzebna. Porównaj je pod kątem funkcji i różnic. Niektóre z najcześciej wybieranych, to MongoDB, Cassandra, RethinkDB i Couchbase. Jeśli musisz wybrać jedną, postaw na MongoDB.

Krok 14 - Cache'owanie

Dowiedz się, jak zaimplementować cache w swoich aplikacjach. Naucz się, jak używać Redis lub Memcached i zaimplementuj cache’owanie w aplikacji zbudowanej w kroku 12.

Krok 15 - Tworzenie RESTful API

Zrozum, czym jest REST i dowiedz się, jak tworzyć RESTful API. Koniecznie przeczytaj część o REST z oryginalnego artykułu Roya Fieldinga. Upewnij się, że będziesz w stanie w zrozumiały sposób wytłumaczyć jego zasadność komuś, kto powie, że REST jest tylko dla HTTP API.

Krok 16 - Poznaj różne metody uwierzytelniania

Dowiedz się o różnych metodach uwierzytelniania i autoryzacji. Powinieneś wiedzieć, czym są, jakie są między nimi różnice i kiedy wybierać które z nich:

  • OAuth - otwarte uwierzytelnianie
  • Basic Auth
  • Autentykacja tokenem
  • JWT - JSON Web Tokens
  • OpenID

Krok 17 - Brokery wiadomości

Dowiedz się, czym są brokery wiadomości oraz kiedy i dlaczego z nich korzystać. Jest ich sporo do wyboru, ale czołowe są RabbitMQ i Kafka. Jeśli chcesz wybrać jeden, to RabbitMQ jest najlepszą opcją.

Krok 18 - Silnik do wyszukiwania

W miarę rozwoju aplikacji, proste zapytania do relacyjnej bazy danych lub NoSQL przestaną wystarczać i będziesz musiał skorzystać z silnika do wyszukiwania. Istnieje wiele opcji, z których każda ma unikalne właściwości.

Krok 19 - Naucz się korzystać z Dockera

Docker może znacznie ułatwić Ci rozwój aplikacji, niezależnie od tego, czy jest to replikacja tego samego środowiska co na produkcji, utrzymanie czystego systemu operacyjnego, czy przyspieszenie kodowania, testowania lub wdrażania. Odpowiedź na pytanie „W jaki sposób Docker może mi pomóc?”, pozostawię Ci do wygooglowania. Teraz po prostu naucz się z niego korzystać.

Krok 20 - Znajomość serwerów www

Jeśli dotarłeś do tego kroku, prawdopodobnie wcześniej musiałeś poradzić sobie z serwerami. Ten krok polega głównie na ustaleniu różnic między serwerami www, poznaniu ich ograniczeń i dostępnych opcji konfiguracji oraz na tym, jak pisać aplikacje działające najlepiej przy tych ograniczeniach.

Krok 21 - Naucz się korzystać z Web Sockets

Chociaż nie jest to wymagane, dobrze jest mieć tę wiedzę. Dowiedz się, jak pisać aplikacje internetowe działające w czasie rzeczywistym za pomocą websocketów i tworzyć przykładowe aplikacje z ich użyciem. Możesz to wykorzystać w aplikacji blogowej, którą wykonałeś powyżej, aby zaimplementować aktualizacje w czasie rzeczywistym na liście postów na blogu.

Krok 22 - Naucz się GraphQL

Dowiedz się, jak tworzyć API za pomocą GraphQL. Dowiedz się, czym różni się od REST i dlaczego nazywany jest REST 2.0.

Krok 23 - Zapoznaj się z grafowymi bazami danych

Grafy pozwalają na bardzo elastyczne przedstawienie relacji między danymi, a grafowe bazy danych zapewniają szybki i efektywny sposób na ich przechowywanie i wyciąganie. Naucz się jak korzystać z Neo4j lub OrientDB.

Krok 24 - Nie spoczywaj na laurach

Zaczynając się samodzielnie uczyć i ćwiczyć, na pewno natkniesz się na rzeczy, których nie omówiliśmy w tym planie działania. Zachowaj “otwartą głowę” i apetyt na naukę nowych rzeczy.

I pamiętaj, że kluczem jest praktyka. Na początku wszystko będzie wyglądać straszniej i możesz poczuć, że niczego nie łapiesz. Jedna wiedz, że jest to normalne i z czasem poczujesz się pewniej.


Oryginał tekstu w języku angielskim przeczytasz tutaj.

<p>Loading...</p>