Junior Python Developer – co musi umieć ?

Widzę, że pytania o to czego się uczyć, jakie są wymagania na stanowisko junior python developer, co powinen umieć początkujący programista Pythona dość często się powtarzają. Myślałam, że problem ten dość dobrze pokrywa post Jak zacząć programować, by nie przestać?, ale widocznie przyda się kilka słów uzupełnienia.

Zazwyczaj ucząć się Pythona chcemy dostać pracę związaną z tym językiem. Oczywiście, są przypadki osób, które uczą się hobbistycznie dla własnych projektów, ale tych jest zdecydowanie mniej. Jeśli przejrzymy oferty pracy pod kątem Pythona, to znowu najczęstsze oferty na staż, czy stanowiska juniorskie są dla webdeveloperów. Stąd tworzenie aplikacji internetowych, właściwie backendu aplikacji internetowych, to prawdopodobnie będzie wasz naturalny, pierwszy wybór, jeśli chodzi o poszukiwanie praktyki zawodowej.

Znajomość samego Pythona nie gwarantuje znalezienie pracy. Potrzebne jest coś więcej i dzisiaj wpis o tym, co moim zdaniem, powinen umieć web developer na start.

Junior Python Developer – wymagania

junior python developer plan nauki

Przebranżowienie się, jeżeli nie mamy programistów wśród znajomych, może wydawać się sporym wyzwaniem. Pozycja junior python developer miewa różne wymagania (czasem skrajnie różne). W ofertach pracy pojawia się wiele słów, pojęć, aż trudno zdecydować, które z podanych haseł to te ważne, a które mniej, i których naprawdę warto się uczyć.

Podręczna lista co powinniśmy poznać przed szukaniem pierwszej pracy z Pythonem jako webdeveloper.

Junior Python Developer „wymagania”:

Zacznę przewrotnie, bo nie od programowania 😉

Angielski

Uczysz się programowania, ale nie znasz języka angielskiego, twój język angielski nie pozwala Ci korzystać z materiałów po angielsku? Koniecznie wróć do angielskiego. Ucz się samego języka, ale także programowania z filmików po angielsku, osłuchuj się z tym jakiego słownictwa używają prowadzący, czytaj odpowiedzi np na stackoverflow. Tłumacz sobie odpowiedzi z google, rób wszystko, by twój poziom angielskiego pozwalał na czytanie dokumentacji. Materiały po polsku w końcu się skończą. Problemów z pracy nie rozwiążesz za pomocą z użyciem tutoriali.

Przechodząc do konkretu B1/B2, to bezpieczny poziom pozwalający na swobodną konwersację o czasie wolnym i planach w życiu, jak również na odpisanie na maila od rekrutera.

Cambridge Test your English – jeden test zajmuje ok. 15 do 30 min

🥩 Back-end

Określenie młodszy programista, które widuje się czasem przy wymaganiach wydaje mi się dość niefortunne, zwłaszcza, że przebranżawiają się często osoby, które status studenta dawno mają już za sobą.

Uczysz się Pythona, bo to dobry język programowania na start. Dłubiesz, dłubiesz i nadal nie wiesz, gdzie z umiejętnościami jesteś?

Jednym ze sposóbów na sprawdzenie się jest pójście na rekrutacje, ale zanim pójdziemy warto mniej więcej wiedzieć jakie są wymagania stawiane juniorom (stażystom, oczywiście, trochę niższe).
junior python developer wymagania

Python

Po pierwsze: Python 😀 Umiejętność programowania w Pythonie to dość oczywista podstawa, ale co to znaczy umieć programować? Więcej niż znać składnię. Umieć na pierwszy rzut oka rozróżnić Python 2.x od 3.x (przy czym uczyć się tylko wersji 3). Chociaż kojarzyć czym jest PEP-8 i starać się pisać kod w sposób zrozumiały. Początkujący programista Pythona powinen swobodnie używać metod biblioteki standardowej, wiedzieć jak korzystać z modułów i je tworzyć. Znać podstawowe struktury danych. Rozumieć koncepcje programowania obiektowego.

Junior python developer powinen radzić sobie z różnego rodzaju zadaniami, bo programowanie, to przede wszystkim rozwiązywanie problemów. Wedle zasady – nie wszystko na pamięć, ale wszystko w praktyce. Google jest przewodnikiem, ale nie ostateczną wyroczną.

Dobrze jest sobie coś zautomatyzować, pobawić się algorytmiką, słowem przegryźć się z Pythonem.

⚓ Paczka ponad 1000 zadań w Pythonie z różnych zagadnień
Kurs Pythona od podstaw 😉

Pisanie testów

Im szybciej zaczniecie pisać testy jednostkowe tym lepiej dla was i waszego kodu. Tutaj dwa frameworki do testowania:

  • unittest – dostępny jako moduł w bibliotece standardowej idealny na start
  • pytest – popularniejszy, spoza biblioteki standardowej, a więc trzeba go sobie zainstalować przez pip – managerem pakietów

Frameworki webowe Pythona

Kolejnym punktem w karierze webdevelopera z Pythonem są oczywiście frameworki, które są konieczne, jeśli mówimy o webdevelopmencie. Tutaj mamy dwa popularne, pojawiające się w ofertach pracy na junior python developera, także można wybrać w ciemno.
python frameworki webowe

➡️ Flask i / lub wymiennie z Django

W pierwszej kolejności polecam trochę bardziej Flaska, który jest de facto microframeworkiem. Flask wydaje się o wiele prostszy w pierwszym kontakcie niż Django, jest lżejszy do małych projektów. Ma bardziej elastyczną konfigurację, co jest plusem i minusem jednocześnie. Django używa ustandardyzowanej struktury projektu (podobnie jak np. Rails są oparte o wzorzec MVC, tak w Django spotkamy się z pokrewnym wzorcem MVT Model – View – Template), podczas gdy Flask pozwala na większą dowolność (brak narzuconego wzorca architektonicznego).

Dokumentacja obu zawiera tutoriale, które pomogą poznać framework krok po kroku.
⚓ Flask – https://flask.palletsprojects.com (Quickstart)
⚓ Django – https://www.djangoproject.com/start/ (Getting started)

Czy aplikować, jeśli oferta pracy to junior django developer, gdy go nie znamy?
Kierujcie się trochę logiką, jeśli faktycznie w wymaganiach jest znajomość Django, a znacie tylko Flaska, to macie mniejsze szanse niż osoba znająca Django, ale znając jeden framework, co szkodzi przysiąść popołudniu do dokumentacji i poznać też drugi? Zanim mówicie rozmowę, zdążycie pewnie zrobić projekt w Django ;P Zaaplikować możecie, zwłasza, że pierwsza praca jako programista nie leży za każdym rogiem, trzeba się na kilka rekrutacji przejść.

Szanujcie swój czas i rekrutera, ale jeśli widzicie gdzieś szansę – czemu nie?

SQL

Bazy danych dla backend developera to jedno z podstawowych narzędzi.
junior python developer wymagania
Warto rozumieć czym się charakteryzują relacyjne bazy danych, potrafić zestawić z nierelacyjnymi, kojarzyć akronim ACID.

Konieczna jest praktyczna umiejętność tworzenia zapytań i nie chcę jednoznacznie wyznaczać co znaczy znajomość zapytań SQL. To trochę jak co z programowaniem – wystarczająco, by sobie poradzić 😛
Jeśli bym musiała na szybko coś wymyślić, umieć rozwiązywać życiowe problemy jak np. poniższe zadanie:

„Zadanie”

Musisz sprawdzić w bazie danych sklepu pewną informację. Załóżmy, że w tabeli Zamówienia (Orders) jest przechowywany specjalny ciąg znaków składający się z liter i cyfr – transaction_hash, nadawany każdemu zamówieniu. Zamówienie należy do klienta. Klient może posiadać wiele zamówień. Każde zamówienie, jest jednocześnie przypisane do kogoś z obsługi (CustomerServiceMember), który akurat miał zmianę i był dostępny. Twoje zadanie to znaleźć wszystkie numery transakcji dla zamówień należących do zarejestrowanych klientów, które zostały złożone w zadanym przedziale czasowym i obsłużone przez pracowników zatrudnionych na pół etatu.

Możliwe, że czytając to zadanie masz w głowie 3 tabele, informacje jakie przechowywują, relację między nimi oraz w głowie już układasz zapytanie – super, twój poziom SQL na pewno jest wystarczający.

⚓ Jeżeli nie to zapraszam na SQL w 60 minut, szczególnie sekcji na samym końcu, gdzie są zadania oraz linki do dalszej nauki

Używanie ORM

Framework webowy jest, SQL jest, teraz aplikację trzeba połączyć z bazą danych i tu pojawiają się biblioteki ORM (Object Relational Mapper). Możliwe, że spotkacie Django ORM w Django (wbudowany) czy SQLAlchemy (Flask nie ma wbudowanego ORM). Jest to umiejętność, którą nabywa się dość naturalnie, gdy aplikacje rosną, zaczynają „coś” zapisywać do bazy i tworzymy aplikację opartą o CRUD (create, read, update, delete).

⭐ NoSQL – jako dodatek

Nierelacyjne bazy danych siłą rzeczy, gdzieś się pojawią. Oprócz odróżnienia teorytycznego, można się pokusić o projekt z wykorzystaniem bazy NoSQLowej (np. MongoDB). Znowu nie jakoś konieczny warunek, żeby szukać pracy, ale warto chociaż wiedzieć, w którym kościele dzwoni.

🎨 Front-end

HTML (ang. HyperText Markup Language) i CSS (ang. Cascading Style Sheets) nie są językami programowania, a pewnie wielu back-endowców JavaScript też by nazwało podjęzykiem (żart). Junior Python developer, webdeveloper, fullstack czy w ogóle początkujący programista, kontakt z odrobiną frontu nabyć musi.

⚓ Po darmowe materiały do nauki front-endu odsyłam was do wpisu: Jak zostać Front-End Developerem?
⚓ Dla tych co chcą mieć wszystko w jedynym, dobrze nagrany wideo kurs w przyzwoitej cenie – The Complete 2019 Web Development Bootcamp.

junior django developer wymagania front-end

HTML i CSS

Ustalmy na wstępie: nikt od początkującego back-end developera, czy właśnie od naszego celu: junior python developera nie oczekuje, żeby był magikiem CSSów. Nie musisz umieć skomplikowanych animacji, znać na pamięć wszystkie właściwości, czy wysyłać znajomym kołyszące się pisanki w CSSie na Wielkanoc. Jednak HTML i CSS są jak język angielski w branży IT – podstawy niezbędne. Pisanie semantycznie poprawnego kodu nie jest proste w dobie powszechnie dostępnego internetu, gdy każdy może wrzucić swój materiał i on nie musi być zgodny z dokumentacją. Z drugiej strony stworzenie poprawnego kodu HTML, ostylowanego tak, by nie wypalało oczu też nie jest niczym skomplikowanym.

Podsumowując:
➡️ HTML: poprawna struktura znaczników (header, section, footer, main…), zwróć uwagę na prawidłowe stosowanie nagłówków.
➡️ CSS: box model, grid, flex, media queries, prefixy, praktyczne użycia

⚓ Przydatny link: CV w HTML i CSS krok po kroku

JavaScript

Wszędzie, gdzie mogę odradzam naukę Js jako pierwszego języka programowania, ale jego podstawy są po prostu przydatne. Macie za sobą naukę programowania w Pythonie, każdy kolejny język przychodzi łatwiej. Na pewno należy wiedzieć czym jest DOM, jak go modyfikować. Można napisać sobie własny slider (karuzelę obrazków), nieszczęsną to-do listę (chociaż jest wiele ciekawszych projektów dla początkujących), czy pobrać dane z dowolnego API i wyświetlić.

⚓ Kursów do nauki Js-a jest mnóstwo, ja przykładowo was odeślę do materiałów z warsztatu z GirlsJs.

⭐ Inne

Zagadnienia z front-endu warte poznania, ale brak ich wśród umiejętności nie jest przeciwskazaniem do aplikowania na oferty pracy. Mogą zadziałać na korzyść.

Preprocesory CSS – Sass/Less – wiedza przydatna, ale nie obligatoryjna.
Frameworki JS – jw. to samo dotyczy frameworków JS. Lepsza porządna znajomość czystego Js, niż kolejny odklepany Reactowy czy Angualrowy tutorial bez zrozumienia.
Bootstrap – uważam, że znajomość Bootstrapa czy innego frameworka CSS jest w karierze Python developera bardzo przydatna. Można postawić przyzwoicie wyglądający, responsywny, front-end, mając zerowe poczucie estetyki.
RWD – Dlaczego oddzieliłam RWD od HTML i CSS? Responsive web design to znacznie szersze pojęcie niż poprawne wyświetlanie na telefonie. Znajomość zagadnienia na poziomie przyzwoitym i praktycznym. Nie musi być pixel perfect, ale z użyciem Bootstrapa umówmy się, że każdy potrafi napisać responsywną stronę www.

Co jeszcze potrzebuje junior developer?

Tutaj rzeczy bardziej uniwersalne. Narzędzia i pojęcia, potrzebne w pracy początkującego programisty.

Stażysta czy junior musi/powinien:
➡️ Korzystać z gita (Git i Github od podstaw).
➡️ Dość sprawnie poruszać się po własnym wybranym edytorze.
➡️ Kojarzyć chociaż z nazwy co to jest CI/CD (Buddy.works, Travis – darmowe i dobre na początek).
➡️ Znać pojęcia takie jak JSON, REST czy API (najlepiej napisana aplikacja pokazująca, że wie się o co chodzi).
➡️ Posiadać jakiś projekt webowy bardziej zaawansowany niż to-do lista, integrację z zewnętrznym API.
➡️ Znać komend Linuxa, żeby poruszanie w terminalu nie było czymś, co się widzi pierwszy raz na oczy.

Pewnie jeszcze przydałoby się też trochę teorii z sieci komputerowych, jak działa Internet, przeglądarka, jaka jest różnica, gdy wybiera się serwer – apachowy hosing czy nginx.