Nauka Python – jak robić to dobrze?

Python podstawy

Byłem świeżo po podpisaniu swojej pierwszej umowy na stanowisko stażysty(Python developer). Czułem się wspaniale… do czasu, gdy zacząłem dostawać pierwsze zadania. Nauka Pythona – to było to czego nie robiłem dobrze.

Kompletnie nie wiedziałem jak element A łączy się z elementem B. W jaki magiczny sposób to wszystko działa. Jak napisać daną funkcjonalność.

Na szczęście na pomoc wkroczyło Google 🙂 Było w tym jedno ALE. Żeby sprawnie szukać, trzeba wiedzieć czego szukać. Koło się zamyka.

Kolejnym problemem było nawet zrozumienie kodu napisanego przez innych developerów w projekcie.
Powodem był brak zrozumienia podstaw Pythona.

Nauka Python – Jak najlepiej przygotować się do roli Python developera, aby czuć się komfortowo?

1# Poznaj składnię i funkcjonalność Pythona

Oczywiście ważne jest, aby przyszły Python Developer znał składnię, języka którego używa w pracy. Tutaj bardzo ważna jest praktyka. Moim zdaniem, to jest kluczowy sposób na łapanie doświadczenia. Problemy, które napotkamy i rozwiążemy sami, dużo lepiej zapadną nam w pamięć.

Przy okazji, warto założyć sobie notatnik np. w Evernote z tematami które poznaliśmy, albo linkami do wartościowych artykułów, aby później gdy będziemy potrzebowali danej wiedzy – a nie będziemy mieli jej utrwalonej w pamięci – wejść i szybko sobie przypomnieć dany temat.

Osobiście używałem i mogę polecić Codecademy, platforma do nauki wielu języków online. Najpierw wprowadza w temat poprzez krótką teorię, a później weryfikuje przyswojoną wiedzę poprzez zadania praktyczne.

Jeśli lubisz gry to bardzo ciekawym sposobem na zapoznanie się między innymi z Pythonem jest Codecombat, gdzie poprzez język programowania sterujemy postaciami w grze. Zabawa i nauka w jednym 🙂

2# Biblioteka wbudowana w Pythonie jest przepotężna!

Wbudowane biblioteki Pythona są tak obszerne, że niedawno w środowisku zaczęła się debata nad jej uszczupleniem, która raczej szybko nie nastąpi (o ile w ogóle to nastąpi).

Funkcjonalności, które dostarczają owe biblioteki są często nieznane nawet wśród zaawansowanych programistów, dlatego nieporozumieniem byłoby pisać, że jako początkujący Pythonista musisz znać je wszystkie. Niemniej każda kolejna poznana biblioteka, to dodatkowa broń w naszym arsenale rozwiązywania problemów w programowaniu.

"""
Zliczanie unikalnych elementów w liście
"""

# Zamiast pisać tę pętlę
cnt = {}
for word in ['red', 'blue', 'red', 'green', 'blue', 'blue']:
    if word in cnt:
        cnt[word] += 1
    else:
        cnt[word] = 0
print(cnt)  # {'red': 1, 'blue': 2, 'green': 0}


# Można użyć klasy wbudowanej Counter, która wszystko ładnie zlicza
from collections import Counter

colors = ['red', 'blue', 'red', 'green', 'blue', 'blue']
cnt = Counter(colors)

print(cnt.most_common())  # [('blue', 3), ('red', 2), ('green', 1)]

Jest w internecie kilka wideo tutoriali oraz artykułów w języku angielskim, które przybliżają ten temat(można je odnaleźć wpisując „python builtin tutorial”).

Temat biblioteki wbudowanej rozwinę w dalszych artykułach, aby pomóc w zrozumieniu jak i kiedy warto z niej korzystać.

3# Trenuj myślenie algorytmiczne

Programista pisząc kod powinien szukać najbardziej optymalnego sposobu rozwiązania problemu. Chodzi o to, żeby kod rozwiązujący dany problem był możliwie jak najkrótszy, ale jednocześnie czytelny i rozszerzalny.

Mogłoby się wydawać, że to, czy potrafisz pisać optymalny kod zależy od Twoich predyspozycji, ale tak nie jest 🙂
Również tę umiejętność da radę wytrenować. Możliwości jest sporo, ale główne dwa sposoby do rozwinięcia się w tym aspekcie to moim zdaniem:

  • Czytanie książek/artykułów na temat podstaw algorytmów
  • Rozwiązywanie algorytmicznych zadań online

Szczególnie polecam drugą opcję, ponieważ dzięki niej od razu uczymy się praktyki.
W zadaniach dostępny jest jedynie „czysty” Python wraz… ze swoją biblioteką wewnętrzną, która jest bardzo pomocna w tego typu zadaniach.
Przykładowe strony:

  • Codewars – bardzo przyjemny portal z ogromną ilością zadań. Po rozwiązaniu zadania możemy porównać swoje rozwiązanie z tymi, które były najwyżej ocenione przez innych użytkowników (dzięki temu możemy się dużo nauczyć).
    Zadania podzielone są na 10 poziomów trudności, więc łatwo dobrać zadanie do swojego poziomu.
  • checkio.org – kolejna platforma do trenowania umiejętności między innymi w Pythonie
  • Codility – Strona na której znajduje się całkiem sporo zadań algorytmicznych, aczkolwiek miałem wrażenie, że były one bardziej wymagające niż w dwóch poprzednich. Zdarza się, że firmy programistyczne korzystają z tej strony do rekrutacji wstępnej, polegającej na tym, że dostaje się 2-3 zadania (ułożone w kolejności od najłatwiejszego do najtrudniejszego) i około półtorej godziny na rozwiązanie. Ocena generowana jest na podstawie czasu potrzebnego na wykonywanie kodu(czy optymalnie go napisaliśmy) oraz kod musi przejść wszystkie testy, z których część zawiera warunki brzegowe.

4# Czytaj książki i nie tylko

Wielu ekspertów z róznych dziedzin przelewa swoją wiedzę i doświadczenie na papier. Nie inaczej jest w środowisku Pythona:) Warto z tego skorzystać! Przy wyborze książek proponuję opierać się na ocenach i recenzjach. W internecie są również darmowe e-booki z których można wiele się dowiedzieć.
Być może na pewnym etapie nauki zainteresuje Ciebie seria postów o zasadzie SOLID w Pythonie mojego autorstwa 🙂

Aby być na bieżąco i mieć ciągły darmowy dostęp do wiedzy, zapisuj się na tematyczne listy mailingowe. Raz na jakiś czas (zazwyczajraz na tydzień) dostaniesz maila z listą linków do artykułów wraz z ich krótkim opisem. Od tutoriali do case study, opisy nowych składni języka, bibliotek – dosłownie wszystko. Polecam 🙂

Przykładowe newslettery na które warto się zapisać:

5# Przede wszystkim twórz

Wszystko to, o czym pisałem wyżej powinieneś/powinnaś uzupełnić własnymi projektami.
W internecie jest mnóstwo pomysłów na mini projekty uruchamiane z konsoli.
Mogą to być też proste strony pisane w którymś z frameworków Pythonowych. Możliwości są nieskończone.
Jedno jest pewne, że na początku będziesz miał/miała problemy prawie na każdym kroku. Rozwiązanie niektórych z nich zajmie nawet kilka godzin.
Ale nic nie zastąpi satysfakcji i zdobytego doświadczenia po każdym pokonanym szczeblu.
Pamiętaj o zapisywaniu zdobytej wiedzy w swoim notatniku.

Nauka Python – Podsumowanie

Jak widać jest wiele dróg do nauki Pythona.
Wszystkie opisane powyżej metody były przetestowane przeze mnie.
Co najważniejsze – DZIAŁAJĄ!
Proponuję zaplanować sobie wolny czas tak, aby wdrażać kolejne ćwiczenia do grafiku.
Możesz też trenować je wymiennie – wszystko zależy od tego ile masz wolnego czasu.


Bądź na bieżąco z blogiem!

Bądź na bieżąco z kolejnymi metariałami publikowanymi na tym blogu i innymi użytecznymi (moim zdaniem) materiałami zapisując się do newslettera 🙂

Jako prezent otrzymasz ode mnie mini e-book „Jak zacząć działać w Open Source i rozwijać swoje umiejętności” 🙂