Przygotowaliśmy skrócony zapis najważniejszych punktów podcastu Python Junior, w którym omawialiśmy, od czego zacząć i co robić jako początkujący programista Pythona. Ostatnio mieliśmy sporo treści dla uczniów klas średnich i starszych, ale ta wersja jest zdecydowanie przeznaczona dla juniorów.

Główne tematy:
- Jaką wiedzę musi posiadać początkujący programista, aby zacząć?
tworzenie stron internetowych? - Czego pracodawcy oczekują od programistów?
- Co zrobić, aby znaleźć pracę bez doświadczenia?
- Jak może rozwijać się programista Pythona?
Python Junior Podcast to podcast o programowaniu przeznaczony dla osób, które chcą lepiej zrozumieć język Python. Transmisje prowadzą ewangeliści ze społeczności. i nauczyciele kursu .
Rozmowa dotyczyła:
- Walentin Dombrowski,współzałożyciel MoscowPython
- Zlata Obukhovskaya, Lider zespołu NVIDIA
- Grigorij Pietrow, Ewangelista MoscowPython
- Aleksiej Sztyrniajew, programista w FinEx, nauczyciel kursów Learn
Python
Dlaczego Python jest dobry do tworzenia stron internetowych
Walentin Dombrowski: Dlaczego Python nadaje się do tworzenia stron internetowych? Dlaczego nie na przykład PHP albo JavaScript?
Grigorij Pietrow: Cóż, tak naprawdę nie ma wielkiego wyboru. Mimo że we współczesnej sieci WWW możliwe jest zbudowanie aplikacji jednostronicowej lub progresywnej aplikacji internetowej praktycznie bez zaplecza - wyłącznie w technologiach front-endowych, w oparciu o JavaScript, to nadal jest to zbyt skomplikowane, słabo indeksowane i wymaga wytrawnych programistów.
Jeśli chcemy stworzyć stronę internetową lub usługę, stosujemy podejście łączone: mamy zaplecze, które implementuje logikę i tworzy strony internetowe, oraz front-end, który rysuje te strony internetowe w przeglądarce. A gdy potrzebujemy to wszystko szybko zmontować w jedną całość, to nie mamy wielkiego wyboru.
Przyjrzyjmy się możliwym opcjom.
- C#. Microsoft jest naprawdę świetny, stworzyli .NET Core i promują go na wszelkie możliwe sposoby. Ale po pierwsze, jest to nowa technologia wieloplatformowa i nie wszystko jeszcze działa w niej idealnie. Po drugie, jest to bardzo drogie, a programistów C# jest niewielu - po prostu dlatego, że nie jest to popularne.
- Jawa. To skomplikowane. Stworzenie normalnej strony internetowej w Javie nie polega na napisaniu 10 linijek kodu, jak w Pythonie. To dużo kodu, frameworków i trzeba znać szczegóły dotyczące konfigurowania serwerów Java. Generalnie nic, tylko ból i cierpienie.
- PHP. W najnowszych wersjach jest świetnie. Powiem nawet tyle: PHP 7.2 nie jest gorszy od Pythona. Ale nie możesz po prostu przejść i używać PHP 7.2. Jeśli przeciętny, przeciętny programista stworzy stronę internetową w PHP, nie będzie pisał wyłącznie w 7.2: nadal będzie musiał czytać podręczniki, tutoriale, wszędzie jest mnóstwo przestarzałego kodu, a to nie jest zbyt dobre.
- JavaScript i Node.js. To świetne i bardzo nowoczesne rozwiązanie – używać jednego języka zarówno na front-endzie, jak i na back-endzie. Po prostu nie jest zbyt stabilny. Node.js to świetna rzecz, ale trudno wdrożyć ją w środowisku produkcyjnym bez ryzyka awarii i problemów z niezawodnością. Poza tym, jeśli chcemy pisać wysokiej jakości kod JavaScript, nie potrzebujemy JavaScript, potrzebujemy TypeScript. Jednak TypeScript jest niespodziewanie skomplikowany i przeciętnemu programiście aż się gotuje na sam jego widok.
Pomińmy Ruby, Haskell, Erlang i inne niszowe rzeczy i zostańmy przy... Pythonie. Język o spójnej składni, jednolita biblioteka standardowa, najlepsza dokumentacja, popularne lekkie frameworki i niezwykle popularny harvester Django.
Okazuje się, że mimo najszerszego wyboru, jeśli mamy zwykłych, nie najlepszych programistów, jesteśmy zwykłą firmą, która chce tworzyć zwykłe strony internetowe, nie mamy działu programistycznego zatrudniającego 50 osób, to bierzemy Pythona.
Jaką wiedzę trzeba posiadać, żeby wejść do zawodu
Zlata Obukhovskaya: Uważam, że trzeba dobrze znać jeden framework - i wiedzieć, jakie są inne i kiedy się je wykorzystuje. Gdzie jest Tornado, gdzie jest Django, gdzie jest Flask, gdzie jest aiohttp i tak dalej.
Warto wiedzieć, że istnieje coś takiego jak protokoły. Znajomość protokołu http jest szczególnie istotna przy tworzeniu aplikacji internetowych.
Musisz też mieć przynajmniej ogólne pojęcie o tym, jak zbudowany jest front-end w projektach internetowych: czym jest HTML, CSS i JS.
Aleksiej Sztyrniajew: I wiedz, gdzie znajduje się dokumentacja. To jest najważniejsza rzecz.
Grigorij Pietrow: Tutaj stąpamy po bardzo niepewnym gruncie. Jeśli mamy pecha i zaczniemy poważnie studiować nowoczesny front-end, okaże się, że jest on około 10 razy trudniejszy niż back-end w Pythonie. Początkujący programista powinien ograniczyć swoją uwagę, aby móc zacząć uczyć się HTML-a, ale nie zatracić się w tych wszystkich elementach div, span, float ani w tym, jak wszystko jest wyrównane i zbudowane.
Aleksiej Sztyrniajew: Potrzebny jest podstawowy kurs Bootstrapa. I podstawy HTML.
W pierwszym roku nie powinieneś zagłębiać się w frameworki JS (jeśli skupiasz się na back-endzie). Podstawowy kurs Bootstrapa zawiera już gotowe moduły: jeśli chcesz mieć slider, stwórz slider; Jeśli chcesz mieć menu pływające, utwórz je.
Zlata Obukhovskaya: Myślę, że studiując front-end można zagłębić się w to, w jaki sposób dane statystyczne są zazwyczaj przekazywane aplikacjom internetowym. W ten sposób programista może płynnie przejść do nauki zasad działania architektury aplikacji internetowych i sposobu ich funkcjonowania w środowisku produkcyjnym.
Grigorij Pietrow: Tak, poleciłbym go od razu, jeśli wybrałbyś Pythona jako język programowania back-endu i na przykład Django jako framework: Django ma dokumentację w Django Book, jest naprawdę fajna, ma wszystko, o czym napisała Zlata, jest naprawdę dobra dla początkującego.
Aleksiej Sztyrniajew: Jeśli Twoim celem jest nauczenie się języka Django, dobrym miejscem na szybki start jest Django Girls. To samouczek, dzięki któremu w ciągu jednego dnia możesz poznać podstawy i dowiedzieć się, do czego służy framework.
Walentin Dombrowski: Przygotowując się do nagrania podcastu, sporządziliśmy listę rzeczy, których programista Pythona potrzebuje do tworzenia stron internetowych, co podsumowuje to, o czym mówiliśmy wcześniej.
Co obejmuje podstawa tworzenia stron internetowych w Pythonie
- Frameworki internetowe Django, Flask, aiohttp, Tornado itp. (oraz wiedza o istnieniu innych).
- Protokoły i API: przede wszystkim http, JSON-RPC, Protocol Buffers, gRPC.
- ORM i migracje, bazy danych relacyjne, SQLAlchemy, SQL, PostgreSQL, MySQL.
- Podstawy HTML, CSS, Bootstrap oraz frameworków JS i JQuery.
- Zasady działania aplikacji w środowisku produkcyjnym, testowanie, testy jednostkowe, autotesty, systemy kontroli wersji, git.
Czy junior potrzebuje algorytmów?
Zlata Obukhovskaya: Na początku nie musisz znać algorytmów; Jeśli będziesz się nad nimi wystarczająco długo zastanawiać, stopniowo pojawią się w twojej głowie. Znam wielu dobrych inżynierów, którzy nie mieli dobrego, formalnego kursu algorytmicznego.
Grigorij Pietrow: Chcę dolać oliwy do ognia. Skąd bierze się nasze zainteresowanie algorytmami?
Obecnie nie mamy podstawowej edukacji w zakresie algorytmów, nie wiemy, jak szkolić programistów, nie mamy bazy technicznej.
Próbują to zrobić, ale mamy tu historię Hogwartu: nie możemy stworzyć szkoły dla czarodziejów, dopóki nie będzie ani jednego czarodzieja. Co więc powinien zrobić uniwersytet, kiedy ludzie przychodzą do niego i pytają: „Zacznijcie uczyć programistów”, a nie mają żadnych programistów, bo wszyscy pracują w Mail.ru, Rambler i Yandex, i dobrze im tam?
Na uniwersytecie patrzą i mówią:
- Okej, programowanie. Znajdźmy jakąś pokrewną dziedzinę wiedzy i zaprośmy specjalistów z niej. Zaprośmy dziennikarzy, którzy potrafią pisać teksty, inżynierów elektryków, którzy potrafią konstruować obwody elektryczne, i matematyków, którzy potrafią pracować z algorytmami.
Ostatecznie okazuje się, że jest to mniej więcej tak samo przydatne, jak nauczanie budowniczego fizyki cząstek elementarnych, tylko dlatego, że cegły i cement składają się z cząstek elementarnych.
Jednocześnie nie wspominają o samym cemencie i cegłach, ponieważ fizyk, który próbuje wyszkolić budowniczego, nie wie, jak budować domy. W efekcie otrzymujemy budowniczego, który potrafi doskonale opisać, jak „działa cement”, ale nigdy go nie widział i nie wie, jak z niego cokolwiek zrobić.
Algorytmy i struktury danych są bardzo dobre, ale obszar ich zastosowań jest bardzo wąski. Są one pilnie potrzebne, np. przy pisaniu silnika gry, kompilatora, protokołu sieciowego.
Większość programistów rozwiązuje problemy biznesowe, które nie wymagają algorytmów ani struktur danych.
Najtrudniejszą czynnością matematyczną jest dodawanie dwa razy i dzielenie. Tam potrzebna jest zupełnie inna wiedza. Rozwiązywanie problemów biznesowych wymaga przede wszystkim wiedzy praktycznej, a nie fundamentalnej.
Lepiej, żeby początkujący programista miał pojęcie o biznesie i o tym, jak poprawnie i szybko składać niezbędne konstrukcje z gotowych bloków, jak je debugować, jak upewnić się, że się nie rozpadają, wiedzieć, dlaczego się rozpadają, co się dzieje, gdy wymagania się zmieniają i program zaczyna „osiadać na fundamencie”, jak dom po deszczu.
Są to rzeczy praktyczne i wiedza na temat pisania oprogramowania. Musi wiedzieć, że oprócz debugera ma do dyspozycji zestaw narzędzi, które pokażą mu dokładnie, w którym miejscu program zwalnia.
Walentin Dombrowski: Przyszło mi na myśl takie porównanie: jest to tłumaczenie języka biznesu na język, w którym można komunikować się z komputerem. Innymi słowy, programista jest rodzajem specyficznego lingwisty.
Grigorij Pietrow: Biznes potrzebuje pisarza, nie lingwisty. Pisarz nie musi wiedzieć, dlaczego tysiąc lat temu to słowo zostało przekształcone w tamto. Musi umieć używać tych słów.
Co trzeba zrobić, żeby znaleźć pierwszą pracę jako programista
Aleksiej Sztyrniajew: Chyba nie ma uniwersalnej recepty na przygotowanie juniora.
Jeśli przyjdziesz do jakiejś firmy, to nikt cię nie zatrudni, bo znasz Django, JSON i kilka algorytmów. Najprawdopodobniej zostaniesz zatrudniony ze względu na umiejętności, których ta firma potrzebuje tu i teraz.
Istnieje wiele firm i każda ma inne wymagania. Nie ma uniwersalnej ilości wiedzy, którą należy posiąść, aby przygotować CV i rozpocząć poszukiwanie pracy.
Grigorij Pietrow: Kiedy w VoxImplant szukaliśmy kilku młodszych pracowników, nasz dyrektor techniczny sformułował podstawowe wymagania w następujący sposób: dana osoba musi być w stanie rozwiązywać problemy. Oczywiste jest, że młodszy pracownik nie zawsze wykona to zadanie skutecznie, nie najlepiej i nie zawsze poprawnie, ale najlepiej jest, gdy dasz mu zadanie, on się wysili i je rozwiąże. To właśnie tej umiejętności poszukują przede wszystkim pracodawcy.
Zlata Obukhovskaya: Ludzie poszukujący pracy w innych branżach mają pewną przewagę z punktu widzenia biznesu, ponieważ już przeszli pewną drogę i potrafią szybko rozwiązywać problemy. To są umiejętności miękkie, nazwałbym to nawet kulturą pracy. Często absolwenci uczelni wyższych nie wykształcili jeszcze takiej kultury pracy.
Chciałbym jednak podzielić się kilkoma przepisami dla początkujących.
Pierwsze kroki dla początkującego programisty
Zlata Obukhovskaya: Po pierwsze, to nadal jest jakiś twój własny projekt, bo musisz coś wpisać do swojego CV i pokazać minimalne portfolio. Fajniej jest, gdy te projekty nie są robione dla ciebie, ale na zasadzie freelance – dla kogoś innego.
Po zrealizowaniu pierwszych projektów możesz już przygotować CV i wysłać je do wszystkich firm, które oferują stanowiska juniorskie. Wywiady pozwolą Ci zrozumieć, czego potrzebują firmy. Wcześniej czy później ktoś cię przyjmie, przynajmniej w małej firmie. To doświadczenie zawodowe da Ci następnie szansę dołączenia do większej i ciekawszej firmy.
Walentin Dombrowski: Nawiasem mówiąc, w naszych kursach przygotowujemy studentów do tego, aby w ciągu 10 tygodni nauki mieli oni możliwość zrealizowania własnego projektu. Ponadto szkolimy umiejętności rozwoju zespołu. To właśnie o tych umiejętnościach miękkich mówiła Zlata.
Aleksiej Sztyrniajew: Z własnego doświadczenia mogę powiedzieć, że znalezienie pierwszej pracy może zająć bardzo dużo czasu. Jeśli szukasz czegoś na miesiąc lub dwa, to jest to normalne. Jeśli wyślesz swoje CV do wszystkich firm, pójdziesz na rozmowy kwalifikacyjne, to w trzecim miesiącu na pewno coś znajdziesz.
Walentin Dombrowski: Możesz tworzyć własne projekty lub podjąć się prostych projektów freelancerskich i jednocześnie rozsyłać CV.
Jakie są perspektywy dla programisty Pythona?
Zlata Obukhovskaya: Programista Pythona może pracować wszędzie. Możesz zająć się testowaniem i rozwijać się, aby zostać starszym architektem. Albo nawet do zarządzania. Menedżerowie techniczni występują w różnych rolach i można dojść aż do najwyższego kierownictwa. Możesz rozwijać się w dziedzinie nauki o danych, DevOps, testowania automatycznego lub uczenia maszynowego.
Walentin Dombrowski: Ogólnie rzecz biorąc, opcji i możliwości jest wiele, w tym również nasze kursy. Na początku nie musisz posiadać dużej wiedzy, ale dobrze jest później poszerzyć zakres wiedzy, bo im więcej potrafisz, tym lepiej dla ciebie.
***
To tylko część wydania. . Pełną wersję odcinka można znaleźć .
Albo nawet spójrz:

Dziękujemy za przeczytanie, wysłuchanie lub obejrzenie.
Źródło: www.habr.com
