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
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”:
- Angielski
- Back-end
- ✅ Python
- ✅ Testy jednostkowe
- ✅ Frameworki webowe
- ✅ SQL
- ✅ ORM
- ⭐ NoSQL
- Front-end
- ✅ HTML/CSS
- ✅ JavaScript
- ⭐ Inne
- ⭐ Preprocesory CSS
- ⭐ Frameworki Js
- ⭐ Bootstrap
- ⭐ RWD
- Narzędzia i pojęcia
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).
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
Pewnie wiele osób powie, że znalazło pracę, chociaż pierwsze testy kodu napisało dopiero po zatrudnieniu. Jasne, mogło tak być, ale lepiej pisać testy wcześniej niż później.
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.
➡️ 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)
Alternatywnie do tych dwóch, rzuć okiem na FastAPI – web framework do tworzenia API, ma przyjazny tutorial i zyskuje na popularności!
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.
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”
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 2022 Web Development Bootcamp.
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.
Jak szukam pierwszej pracy jako junior python developer, to te wymagania są w sumie całkiem osiągalne ;D Tylko, że zawsze jeszcze jest coś jeszcze, w stylu, że jednak trzeba znać numpy, albo milion nice to have typu java, .net, pyspark, celery, docker, jenkins…i faktycznie można się w tym pogubić co faktycznie wymaga pierwsza praca jako programista 😛
A dajże spokój, takie wymagania to chyba dla starszego specjalisty…
Wyczerpujący post, na pewno pomocny dla osób szukających pierwszej pracy. Jest bardzo konkretny, fajnie, że wymieniasz konkretne technologie, podczas gdy wiele postów na temat: „co trzeba umieć do pierwszej pracy jako programista?” ogranicza się do stwierdzenia, że „programować”, „rozwiązywać problemy” i „szybko się uczyć”.
Dziękuję za ten wpis. Wiem, że listę wymaganych rzeczy można teoretycznie znaleźć w każdym ogłoszeniu, ale tutaj najcenniejszy jest komentarz do każdej z pozycji – w jakim zakresie, po co, na teraz czy w perspektywie. Sam doświadczenie z HTML mam od 2001 roku i mojej pierwszej hobbystycznej strony, potem w razie potrzeby wykorzystywało się elementy SQL czy bardzo prosty JS, ale ucząc się od paru tygodni Pythona pod kątem zmiany pracy (niezwiązanej obecnie bezpośrednio z programowaniem) widzę, że ta dawna wiedza choć przydatna, wymagać będzie uporządkowania. Gorąco pozdrawiam.
Dodam:
umiejętność czytania dokumentacji projektowej, praca w zespole, dbanie o czysty kod, znajomość i stosowanie odpowiednich notacji.
A ogólnie bardzo rozbudowany wpis odnośnie stanowiska Juniorskiego 🙂
Bardzo dobry wpis. Dużo konkretów, wszystko przejrzyście wyjaśnione, a na dodatek podane jak na tacy źródła i pomoce dydaktyczne. Adres ląduje w zakładce. Na pewno tu wrócę 🙂
Celnie. W punkt. Niektórym regularom i pewnie seniorom w pewnych firmach by się przydało przeczytać ten artykuł 😉 Niestety, często gęsto bywa tak, że ludzie ograniczają się tylko do podstawowej wiedzy i ślepo wierzą w to, co np. taki ORM ustanowi (odnośnie SQL).
Drogie juniorki, wierzcie lub nie, ale kiedy przekroczycie magiczne progi rekrutacji i dostaniecie robotę, to różne cyrki zobaczycie 😉 Najtrudniej jest wjechać w rozmowę na pełnej, pokazać, że coś się umie i przede wszystkim, że umie się kombinować w kierunku rozwiązania problemu a potem to już z górki.
Artykuł wart polecenia dalej 😉
Dzięki za ten wpis. Teraz wiem za co się zabrać, bo rzeczywiście jak się zaczyna to trudno ocenić co warto wiedzieć. Świetnie, że zamieściłaś dużo materiałów i w ogóle piszesz bardzo konkretnie.
Super artykuł napewno się przyda podczas dalszej nauki 😉
Z takimi wymaganiami to ja wolę się uczyć Dart i Flutter.
o ja pierdole ….. 😀
Jest to kopia tego artykułu (z drobnymi modyfikacjami).
thestackcode.com/junior-python-developer-requirements
Szkoda
wpis powstał po naszej dyskusji na grupie Python: nauka
i jego pierwotna publikacja była 5 sierpnia 2019 + aktualizacja we wrześniu, wpis który linkujesz powstał pół roku później (2 grudnia). Natomiast ciekawe, że zalinkowana strona kopiuje moje zdania tyle, że po angielsku. Nie będę tego komentować, bo szkoda słów 😉 widocznie pan Patryk Filipiak nie zna różnicy między inspiracją a kradzieżą treści, ale dzięki za informację
Ile czasu potrzeba aby to opanować? Pół roku? Rok? 3lata?
Dodam, że angielski jest ale na niskim poziomie
Hej ✋,
Z tego co widzę to wymagania na staż w Pythonie są dość duże. Moim zdaniem żeby dostać się na staż w Pythonie najlepiej jest robić swoje własne projekty i zamieszczać je na Githubie.
Pomocne są też kursy na przykład na Udemy tylko tak jak napisałaś nie powinno się ich robić bezmyślnie.
Moim zdaniem najlepiej jest pisać własny kod choćby nawet na początku wydawało się to trudne .
Pozdrawiam .
Sporo pracy przede mną, ale nie tracę nadziei. Dzięki za świetny artykuł 🙂
O ile nadal stanowisko Juniora istnieje… to bardzo prosiłbym o aktualizację wymagań na 2023 🙂
przejrzę wpis, chociaż wymagania wcale się nie zmieniły na Junior Python Dev
Fajny artykuł, szczególnie dla osób, które idą w jedną technologię, bo jest sporo rzeczy, które trzeba dodatkowo umieć, a nie samo kodowanie w Pythonie. W zasadzie to z wieloma wysokopoziomowymi językami tak jest.
No i angielski – baza. Bez tego to dokumentacji nie przeczytasz więc to priorytet nr. 1