admin 0Comment

Chciałbym dzisiaj przedstawić Wam zbiór zagadnień i narzędzi, które, jak sądzę, powinienem poznać, jako osoba aspirująca na stanowisko Junior back-end Web Developera, programującego w języku Python. Jednocześnie bardzo chętnie przeczytam Wasze opinie, mogę się przecież mylić.

Od początku nauki programowania warto zadawać sobie pytanie o to, co konkretnie chcielibyśmy, jako programista, robić. Pomoże nam to wybrać nie tylko język programowania, ale całą ścieżkę nauki, wraz z najużyteczniejszymi narzędziami dla danego pola naszych działań. Stosunkowo szybko, zaraz po opanowaniu podstaw programowania, wybór tego czy np. chcemy zajmować się programowaniem gier, aplikacji czy stron webowych zdeterminuje nam narzędzia, jakie powinniśmy opanować.

 

No właśnie – opanować, czyli?

Co to znaczy i kiedy mogę powiedzieć, że opanowałem/znam dany język, framework, IDE etc.? Czy ktoś, kto aspiruje na poziom juniora w ogóle jest w stanie powiedzieć tak o którymkolwiek z poznawanych przez siebie narzędzi? Tutaj krótko, bo myślę, że temat nadaje się na osobny tekst – uważam, że na poziomie junior developera, mogę powiedzieć, że „poznałem” dany program/narzędzie, kiedy mogę stosunkowo swobodnie korzystać z jego podstawowych użyteczności i wiedzieć, jak praktycznie go zastosować w nieszczególnie skomplikowanych przypadkach. Oczywiście teraz możemy rozwodzić się nad tym, co oznacza „podstawowe” i „nieszczególnie skomplikowane”, ale nie ma to większego sensu. „Solidne podstawy” – to określenie, które ciśnie mi się na usta w tym przypadku i musi mi ono na razie wystarczyć.

 

Co, ale też – jak?

Jeszcze jedna uwaga i jedziemy z listą. Równie ważne jak to, czego się uczyć jest to, jak to robić. To kolejny temat na osobny tekst (i to pewnie nawet nie jeden), ale krótko napiszę i o tym. Chciałbym, by zagadnienia poznawane były przeze mnie na praktycznych przykładach własnych lub/oraz współrealizowanych opensource’owych projektów. Oczywiście, zawsze trzeba na początku przebić się przez ścisłe podstawy i teorię, natomiast zauważyłem, że największą motywację mam pracując nad realnymi, przydatnymi programami. Druga kwestia, to kiedy uczyć się danego zagadnienia – tutaj wydaje się działać u mnie zasada JIT (Just In Time) learning, zgodnie z którą, w miarę możliwości, danego zagadnienia chcę uczyć się dopiero w momencie gdy to mi się praktycznie przyda.

No i tyle, jeśli chodzi o słowo wstępne – oto mój zbiór zagadnień, bardzo chętnie przeczytam uwagi na jego temat.

 

Podstawy podstaw:

-składnia i semantyka języka

-działania na zmiennych, typy danych

-flow control

-funkcje

-podstawy korzystania z biblioteki wewnętrznej i bibliotek zewnętrznych

Podsumowując, mam tutaj na myśli, to, co będzie wspólne w nauce danego języka, niezależnie od tego, w którym kierunku chcesz pójść dalej. Jednocześnie myślę, ze, kurs, od którego zacząłem naukę programowania, zawiera właśnie ten zakres wiedzy.

 

Dalsze zagadnienia:

– programowanie zorientowane obiektowo

-GIT/kontrola wersji

-frameworki (Django lub Flask)

-obsługa baz danych (ale których?)

– serwery

-podstawy HTML/CSS/XML, JavaScript

-wzorce projektowe

-algorytmy

-tworzenie testów (testy jednostkowe, TDD)

-dobre praktyki projektowe, Python Style Guide

-znajomość zasad metodyki AGILE/SCRUM

 

Zagadnienia, co do których mam wątpliwości:

-praca w środowisku Linux

-UML

Powyżej zbiór tych zagadnień, które właśnie poznaję lub powinienem poznać w przeciągu najbliższych miesięcy. Jak widać, wątpliwości mam szczególnie w dwóch kwestiach – na ile praca w środowisku Linuxa jest popularna czy wręcz wymagana w pracy jako Python web developer? Czy znajomość UML jest w praktyce przydatna, i jak bardzo zaawansowane modele UML stosuje się w codziennej praktyce programistycznej? Jeśli tylko macie ochotę wypowiedzieć się a propos powyższego – bez krępacji 😉

Dodaj komentarz