Python-разработчик: что должен знать и как им стать
Кто такой Python-разработчик? Рассказываем все о сфере Python-разработки: вникаем в процессы и задачи специалиста, какие навыки нужны для каждого грейда и как стать Python-разработчиком с нуля.
886 показов
5.5K открытий
Введение: коротко о Python
Python является популярным и активно развивающимся языком программирования. Придуманный нидерландским программистом Гвидо ван Россумом более тридцати лет назад, Python, на сегодняшний день возглавляет рейтинг языков программирования по данным индекса популярности TIOBE.
В чем заключается секрет его популярности?
По сравнению с другими языками, Python считают простым для понимания, дружелюбным языком даже для новичков, совершающих первые шаги в области программирования. Одним из главных принципов Python является легко читаемый синтаксис, позволяющий изучить его быстро.
Несмотря на гибкие и понятные инструменты, Python остается многофункциональным языком, на котором можно создавать сложные проекты и сервисы с высокой нагрузкой. Такие компании, как Intel или HP, используют Python для тестирования аппаратного обеспечения, а Pixar – для создания анимации в мультипликационных фильмах.
В связи с популярностью языка Python в различных областях и компаниях, рынок труда наполнен предложениями для Python-разработчиков, даже Junior специалисты сегодня могут рассчитывать на стартовую зарплату в 100 тысяч рублей.
Что должен знать Python-разработчик?
В первую очередь Python-разработчику необходимо владеть синтаксисом языка, правилами и командами, также важно изучить хотя бы одну, а лучше несколько библиотек, использующихся в интересующей для разработчика сфере (например, Django для веб-разработки). Большим преимуществом будет и понимание принципов ООП, так как Python является объектно-ориентированным языком.
Как и для любого другого языка, задачи для Python-разработчика и навыки, необходимые для их решения, зависят от квалификации. Давайте познакомимся с навыками для каждого грейда ближе:
Junior (начинающий специалист с опытом от 0 до 12 мес)
Как мы уже писали ранее, Python – язык программирования с низким порогом входа, поэтому базовых навыков владения языком, будет достаточно, чтобы претендовать на должность Junior-разработчика и начинать работать. На начальном этапе разработки задачи касаются сферы, которую начинающий разработчик выбрал для старта карьеры.
Middle (специалист среднего уровня с опытом от 2 до 3 лет)
От претендентов на должность Middle-разработчиков ожидают тех же базовых навыков с более высоким уровнем владения Python. В процессе работы также могут потребоваться дополнительные навыки и языки, зависящие от выбранной IT-сферы (например, применение метода статистического анализа в области аналитики данных или знание другого языка программирования в области веб-разработки).
Senior (специалист с опытом от 5 лет)
Помимо знания языка Python в претендентах на должность Senior-разработчиков ожидают увидеть и лидерские качества, так как нередко такие специалисты распределяют задачи между членами команды, принимают стратегические решения и выстраивают проекты с нуля. На продвинутом этапе разработки требуются самый высокий уровень владения языком Python и другими языками, а также более глубокие познания в выбранной сфере (например, знание матанализа, теории вероятностей и статистики для аналитики данных).
Чем занимается Python-разработчик?
Владение языком Python даёт возможность работать в маркетинге, веб-разработке, бизнес-автоматизации и аналитике данных, ставшей крайне популярной среди разработчиков в 2022 году. Работа и задачи Python-разработчика в первую очередь зависят от выбранной им сферы.
Аналитик данных на языке Python структурирует информацию, тестировщик ПО – создаёт автотесты, повышая скорость своей работы, а веб-разработчик – создает сайты и приложения. Стоит отметить, что с Python чаще работают для backend-разработки, хотя многофункциональность этого языка программирования позволяет пользоваться им и для frontend-разработки.
Что должен знать Junior Python-разработчик?
Python отлично подходит для начала карьеры в области программирования. Как мы уже писали выше, знания синтаксиса языка и хотя бы одной библиотеки достаточно для карьерных начинаний в некоторых крупных компаниях, среди которых, например, «СберБанк» и «МТС».
Количество предложений для Python-разработчиков продолжает расти, начинающие специалисты могут выбрать привлекательную для них сферу. В 2022 году сайт hh.ru предлагает более 1,5 тысяч вакансий, помимо тех, в которых владение Python не является единственным основным запросом для работы.
Зарплата Python-разработчика зависит от опыта и региона. В Москве и Санкт-Петербурге зарплаты выше, однако и регионы не отстают, средняя зарплата по всей стране, согласно исследованию «Хабр.Карьеры», составляет 140 тысяч рублей. Разработчики уровня Senior могут претендовать на заработную плату в 300-450 тысяч рублей, уровня Middle – в 200 тысяч, стартовая зарплата Junior-разработчика может составлять 100 тысяч рублей.
Как стать Python-разработчиком?
Профессия Python-разработчика скорее всего уже заинтересовала многих читателей. Как им стать?
В первую очередь необходимо получить и закрепить первичный набор навыков, уметь правильно писать команды, разбираться в коде языка, продолжать осваивать библиотеки и фрэймворки. Большим плюсом для начинающего Python-разработчика станет портфолио. Его можно составить даже из самых простых проектов, выполняя, например, тестовые задания на собеседованиях и дополнительных курсах. Владение английским языком упростит, как изучение языка программирования, так и дальнейшую работу с ним, поэтому начинающим специалистам стоит прокачивать английский язык.
Специалисты выделяют 3 основных пути получения необходимых навыков для Python-разработчика:
- Обучение в ВУЗе
В связи с высоким спросом на профессию программиста российские ВУЗы увеличивают количество мест по IT-направлениям, в том числе бюджетных. Этот путь, наиболее комплексный и фундаментальный, подходит для тех, у кого есть, как минимум, 4 года на изучение языков программирования и разработки. Стоит также отметить, что обучение в ВУЗе зачастую обеспечивает только поверхностное знание некоторых языков, поэтому для более глубокого изучения придётся заниматься самообразованием.
- Самостоятельное обучение
Изучить Python можно и самостоятельно, этот язык часто хвалят за его «простоту». Для начинающих разработчиков сейчас существует множество путей получения информации: видео-пособий и статей, книг. Этот путь подходит для тех, кто готов потратить свои ресурсы на пытливый поиск информации об интересующем языке, так как зачастую информация не систематизирована.
- Обучение на онлайн-курсе
Онлайн-курсы дают возможность изучить Python наиболее быстро, совмещая обучение разработке с постоянным местом работы и яркой личной жизнью. Этот путь подходит для тех, кто получает дополнительное образование с перспективой смены сферы деятельности, или для углубления уже имеющихся знаний в программировании. Современное разнообразие онлайн-курсов позволяет выбрать комфортный ритм изучения языка и финальные цели обучения, например, в онлайн университете ProductStar на курсе “Профессия: Python-разработчик” эксперты из Центра Карьеры начинают подбирать стажировки, опираясь на пожелания, уже во время обучения и гарантируют дальнейший оффер.
Как стать Python-разработчиком: история Алексея Курылева
В отличие от многих моих коллег я не был рожден программистом. Я был рожден музыкантом. Я не учился программировать в ВУЗе и до определенного времени даже и не собирался связывать свою жизнь с IT.
Зато меня всегда привлекала Москва, с ее широкими тротуарами, длинными набережными и огромными парками. Но оказавшись там, ты чувствуешь потребность в деньгах более чем в любом другом городе нашей удивительной родины. В то время мой старший брат снимал квартиру вместе с двумя программистами, работающими в каком-то банке. Так, в одной из кухонных бесед, я первый раз погрузился в мир Python. С того момента прошло еще немало времени перед тем как я устроился на первую работу в качестве Python-developer.
Первые шаги в программировании
Так вот, оказавшись в Москве, мне нужно было искать работу, так как долго жить в гостях я не мог. На тот момент моих навыков хватило только чтобы устроиться работать в техподдержку одной крупной и безнравственной компании. Я принимал заявки по телефону и ходил туда-сюда по длинным коридорам здания, чтобы подключать мышки к системным блокам, которые по очереди вылетали из гнезд у всех сотрудников офиса.
Именно там, понимая абсурдность происходящего, я и написал свою первую программу. В свободное от рутины время я изучал возможности языка и писал скрипты для системного администрирования. Старшие админы быстро заметили это и стали мне давать задания написать ту или иную программу, и я с удивлением для себя обнаружил, что даже с моим минимальным опытом программирую я лучше их и в этом могу быть им полезен.
Первая работа
На удивление, я никогда не работал junior-ом. Сразу в middle пошел. Но попытки устроиться младшим разработчиком у меня были. Я хорошо помню то собеседование.
Два прекрасно образованных программиста (что забавно, это были муж и жена) целых два часа тестировали мои знания и мышление, после чего сделали вывод, что знаний у меня явно недостаточно, но мне не отказали, а дали список литературы и отправили доучиваться. Через две недели я вновь пришел на собеседование и продемонстрировал фантастическую способность к обучению, ответив на множество вопросов, на которые прежде ответить не мог. На следующий день мне позвонили и сказали, что я принят. Мне озвучили зарплату, которой мне не хватило бы даже на аренду жилья и еду, не говоря уже о каких-то излишествах. Я сразу отказался и ни разу не пожалел об этом, так как устроился системным администратором в компанию с мировым именем, где и продолжил самообучение как программист. Из этой истории я извлек один важный момент — ничто так хорошо не направляет и не подталкивает как собеседование!
А что дальше
В какой-то момент, устав от офисной жизни и работы админом, я скопил немного денег и на полгода уехал путешествовать в Индию. Ох, если бы я мог описать что это были за полгода, то не хватило бы и книги, не то что этой статьи. Вернувшись, я уже знал, что буду снова пробовать устроиться работать программистом, и на этот раз удача улыбнулась мне, да и я был куда лучше для этого готов. За полгода путешествий я очень-очень хорошо подтянул разговорный английский, что сейчас мне ежедневно помогает в общении с коллегами. Попасть в языковую среду оказалось куда эффективнее любых учебников (кстати тоже самое можно сказать и о программировании). Но прыгать туда лучше уже понимая основы, иначе те условия, в которых можно стать продвинутым, вы будете использовать для изучения азов.
Так вот. На моей первой работе программистом я был единственным бекенд-разработчиком в компании! Вот уж хуже не придумаешь! Ну, что хотел, то и получил. Зато на второй работе я попал в замечательный коллектив, где работали настоящие профессионалы с огромным опытом. Благодаря им я приобрел культуру кода и узнал про высокие стандарты в разработке. Миша Корсаков и Андрей Беляк — респект и уважуха!
Сейчас
А сейчас я работаю удаленно в одной международной компании и в этом есть свои плюсы! Только не подумайте, что я сейчас лежу на пляже с ноутбуком и наслаждаюсь жизнью по полной. Я все также много работаю и много устаю, но в офис ходить не нужно. Живу в Питере, иногда путешествую. Успел пожить в Португалии, в Италии, в Грузии, но не скажу, что я там как-то особо отдыхал. Организация путешествия накладывает много дополнительных сложностей, и в сочетании с работой это может быть в два раза тяжелее, чем работа из дома или офиса. Но увидеть можно очень много нового, красивого и интересного. И это явный плюс!
Менторство
А мое менторство началось очень забавным образом и без моего участия. Как-то раз я был в гостях у друга и случайно забыл у него книжку по Python и Django. А в следующий раз встретились мы только через год, и тогда он меня удивил. Говорит, а я теперь работаю программистом! Помнишь ты у меня книжку забыл, так вот я ее прочитал, сделал по ней свой сайт и недавно получил первую работу.
Позже мое менторство продолжилось тем, что я стал обучать одного своего друга. Несмотря на то, что он почти каждый день проводит на другой работе, наше дело идет очень быстро и хорошо. Первая работа программистом не за горами!
Как стать успешным Python разработчиком? Алексей Курылёв поделится опытом как с начинающими, так и с опытными программистами Нанять
Вопросы
Какой совет дашь новичкам, который редко встречается или считается необычным, спорным?
Вписывайтесь в любую движуху! Не упускайте ни одной возможности практиковаться! Будьте открыты всегда и к любым предложениям!
И что очень важно:
“Встретив двусмысленность, отбрось искушение угадать.” — zen of python
Как ты сохраняешь свои навыки актуальными? Как постоянно растёшь и становишься лучше как разработчик?
Ну, работа не позволяет становиться неактуальным. Каждый день приходится делать что-то новое. Ну, и читаю, конечно. Изучаю другие языки. Общаюсь с другими разработчиками. Разрабатываю в команде с друзьями разные веб-сервисы, без зарплаты, просто ради интереса. И отдыхаю побольше при возможности, это тоже необходимо, так саморазвитие идет легче и быстрее.
Топ 3 книжек для новичка
- Марк Саммерфилд — «Программирование на Python 3. Подробное руководство»
- Уэсли Чан, Пол Биссекс, Джеффри Форсье — “Django. Разработка веб-приложений на Python”
- Роберт Мартин — “Чистый Код” — Читайте ее даже если не понимаете Java, там очень много просто хороших советов. А заодно и Java начнете изучать.
Фото рабочего стола
Об эффективности обучения у Алексея и остальных менторов mkdev мы рассказывали в цифрах подписчикам нашей рассылки. Получить отчёт об успехах наших учеников ты можешь, подписавшись через эту форму:
© Copyright 2014 — 2023 mkdev | Privacy Policy
Как стать Python-разработчиком с нуля — личный опыт
Это мой первый пост, прошу сильно не пинать. Для начала немного расскажу, кто такой тестировщик. Это специалист, который отлавливает ошибки на всех этапах разработки проекта. Работа рутинная, но ответственная. Получают тестировщики на 20-30% меньше, чем программисты: от 30 000 руб. и выше, всё зависит от опыта.
Становление тестировщиком – самый простой путь старта в IT, есть куда расти (тест-менеджмент, веб-дизайн, чистая разработка).
Эту информацию я почерпнул из открытых источников и подумал, что вот, я не умею программировать, а получать астрономическую зарплату работать в IT – хочется. Думал, что начну с ручного тестирования, устроюсь на работу – а дальше, как пойдёт.
Но на практике оказалось не всё так просто. Кругом полно таких же людей, который думают точно также же, и такие специалисты маловостребованны. Для чего вообще берут на работу стажёров? Работодатель ожидает, что в ближайшем будущем навыки стажёра охрененно вырастут и он будет приносить огромную пользу фирме с дальнейшим повышением зарплаты (но не всегда таким, какую ожидает стажёр). Поэтому чаще всего стажёры, получив опыт, либо настаивают на значительном повышении з/п или уходят к конкурентам.
Несмотря на грустные мысли, я поставил цель – изучить навыки тестирования на Python хотя бы на уровне продвинутого стажёра.
Открыв гугл, я стал искать полезные статьи по языку с нормальными ссылками на учебные материалы. Как ни странно, толковых статей очень мало. Могу отметить только несколько, которые мне понравились больше всего:
- professii.su/programmirovanie/python-razrabotchik.html— обзорная статья, много полезной информации про Python + большой список ссылок на полезные сервисы/статьи/видеоуроки для начинающих;
- digitology.tech — перевод официальной документации по Python;
- ru.stackoverflow.com/questions/420125/Книги-и-учебные-ресурсы-по-python — рекомендуемая литература, курсы и документация по Python от сообщества Stackoverflow;
- github.com/vera-l/python-resources#books_online — обучающие материалы по питону (roadmap).
Итак, я внимательно изучил предложенные ссылки и начал учиться. Начал изучение языка Python со следующих бесплатных материалов:
- stepik.org/course/58852 — «Поколение Python»: курс для начинающих с кучей тренировочных задач, удобный как для самостоятельного изучения.
- youtube.com/c/ТимофейХирьянов — отличные видеолекции от Т. Хирьянова.
Через пару месяцев, когда я, обучаясь практически всё свободное время, освоил базу по языку, я прошёл ещё несколько, для получения более глубоких навыков программирования. Мне очень понравилось выполнять задачки по Python, над некоторыми пришлось поломать голову, но зато получаешь реальный кайф, когда всё получается. Думаю, программисты знают, о чём я говорю :).
Вот курсы для опытных Пайтон-разработчиков, которые я смог осилить:
- stepik.org/course/68343 — «Поколение Python»: курс для продвинутых.
- stepik.org/course/512 — курс посвящен базовым принципам языка Python, подойдёт тем, кто уже может писать простейшие программы на Python .
- stepik.org/course/1547 — алгоритмы: теория и практика. Структуры данных.
- andreyolegovich.ru/qa/pytest — учебник по Pytest – классный фреймворк для тестирования на Python.
- pywinauto.readthedocs.io — офиц. документация по Pywinauto — библиотеке Python для автотестирования десктопных приложений на Винде.
- docs.qameta.io — документация Allure, крутой библиотеке Python для красивеньких отчетов о результатах тестов.
Есть ещё сотни других библиотек, но я выбрал именно эти.
Затем я проанализировал с пару десяток вакансий на должность тестировщика без опыта работы и выписал повторяющиеся требования. Да, я псих :). Оставалось дело за малым – получить основные навыки работы с этими инструментами. Вот что я стал изучать дальше.
Основы разных видов тестирования: unit, функциональное, интеграционное и другие. В этом мне помогли следующие учебные материалы:
- stepik.org/course/16478 — теория тестирования ПО.
- stepik.org/course/575 — автоматизация тестирования с помощью Selenium и Python.
- testengineer.ru — большой учебник по тестированию.
Далее нужно научиться работать с ключевыми инструментами тестировщика, я выбрал только те, владение которыми реально нужны работодателям:
Selenium — автотестирование web-страниц:
- Учебник Selenium на coderlessons.com.
- dzen.ru — шпаргалка по Selenium WebDriver 4 + Python.
- rukovodstvo.net — статья по основам работы с Selenium и Python.
Jenkins – это опен сорс (фреймворк, проект с открытым исходным кодом), поможет автоматизировать деплой и исправить ошибки для CI/CD:
- Видеокурспо Jenkins на русском.
- Краткое руководство на coderlessons.com.
Postman – он позволяет посылать запросы к сервисам и работать с их ответами, им можно протестировать бэкенд:
- testengineer.ru/gajd-po-testirovaniyu-v-postman — большой гайд по тестированию с Postman для начинающих.
- Учебникпо POSTMAN.
Jmeter — Java-апплет, который умеет всё (поиск неуловимого бага, тестирование бэкенда и много чего ещё):
Разумеется, ещё нужно изучить дополнительные технологии и инструменты, без них никак:
GIT – удобная система для командной работы и работе с версиями кода:
- git-scm.com — большое руководство на русском языке.
- stepik.org/course/4138 — курс на Степике.
- Аккуратный, необходимый, слегка «продвинутый» видеокурс по Git, который делает жизнь разработчика проще.
Linux:
- stepik.org/course/73 — курс для новичков по основам Linux.
- Видеокурспо Linux на примере дистрибутива Ubuntu.
Docker:
- stepik.org/course/1612 — курс по Docker для тех, кто имеет навыки работы с операционной системой Linux.
- Видеоуроки, которые помогут вам понять как устроен Docker (контейнеризация) и где его можно использовать.
- stepik.org/course/74010 — курс по основам (установка, написание собственных образов).
- stepik.org/course/123300 — курс Docker для начинающих + практический опыт.
Язык SQL для работы с БД:
- stepik.org/course/551 — основы базы данных SQL.
- stepik.org/course/63054 — интерактивный тренажер по SQL.
- Большой видеокурспо SQL для новичков.
Это все эти учебные материалы, которые я внимательно изучил, чтобы иметь начальные навыки тестирования. Вы можете найти в сети любые другие, какие вам больше понравятся. На всё это я потратил примерно около 10 месяцев, я учился почти каждый день по 6-7 часов в день, спать ложился далеко за полночь. И при этом я ещё работал на основной работе. Большое спасибо моей девушке, она меня всё это время поддерживала.
Важный совет! Вы должны развить навыки грамотного поиска информации в интернете, а также учиться чему-нибудь новому каждый день. Даже Senior учится новым технологиям и инструментам. Как сказал однажды Генри Форд «Любой, кто перестает учиться, стареет, и не важно, сколько ему лет: двадцать или восемьдесят. Любой, кто продолжает учиться, остается молодым. Самая великая вещь в жизни — это сохранять свой разум молодым».
Ну вот, вы теперь готовы к поиску стажировки тестировщиком (будет хорошо, если она будет оплачиваемой). Но есть один нюанс. Если вы не студент ВУЗа, то в некоторых стажировках вам могут отказать, так как компаниям интересны именно студенты или выпускники высших учебных учреждений. Но не сдавайтесь! Выполняйте все тестовые задания, прокачивайте свои скиллы, чтобы каждое следующее собеседование давалось вам легче и легче. На практике вы можете пройти 10-15 собеседований, но так и не найти работу. Это нормально, потому что кроме вас на эту должность претендуют еще десятки/сотни соискателей. Поэтому рассматривайте каждый отказ как полезный опыт, который делает вас сильнее.
Как правило для джунов тестовые задания будут с подвохом, поэтому очень внимательно читай задание и не отчаивайся, если ты провалил собеседование. Запомни – рано или поздно тебя возьмут в штат.
Сколько нужно учиться, чтобы стать Python-программистом? Моё личное мнение: если у вас нет склонности к математике (вы больше гуманитарий), то придётся учиться очень долго и очень часто. А если вы математик в душе, то всё равно придётся обучаться долго и много. Такая история. Ещё — у вас будут случаться время от времени нервные срывы. Что делать, это плата за знания, сам через это прошёл.
Запомните! Если у вас не получается что-то ни с 1 или 15 раза, то в программировании – это норма. Обычное дело – постоянно гуглить, шерстить документацию и дебажить код again and again. Если на каком-нибудь курсе вам было легко, но потом вы начали самостоятельную практику = обучение через страдания. НО потом, когда ты осознаёшь, то приходит понимание, что на курсе было лишь смутное понимание программирования. Как-то так.
Поэтому нужно быть морально готовым к тому, чтобы потом не впасть в депрессию от того, что ничего не получилось. Python простой язык, но если придётся разрабатывать сложные системы на любом языке, хоть на Пайтоне, C++ или Java, вам придётся тяжело. Python имеет более читаемый код, и изучить его довольно просто – на базовом уровне (!). Если вы столкнётесь со сложными алгоритмами, то придётся задействовать мозги на все 200%.
Вывод: маловероятно, что вы освоите профессию тестировщика на Python за месяц и начнёте получать по $10k в месяц. Учиться будет тяжело, придётся люто вкалывать каждый день, если хотите добиться результатов. Если есть желание – то всё получится. Поверьте.
Накидал типовые задачи, которые могут дать на собеседовании тестировщику-стажёру:
- Проверить функциональность логина в приложении и написать баг-репорт о найденных ошибках.
- Протестировать платёжный сервис в интернет-магазине.
- Составить баг-репорт для неработающего холодильника.
- Написать чек-лист для проверки формы авторизации на сайте.
- Не работает кнопка «Добавить в корзину». Проблема на стороне клиента или сервера?
Какие вопросы могут примерно задать:
- Какие уровни тестирования вы знаете?
- Можете объяснить разницу между функциональным и нефункциональным тестированием?
- Какие категории ошибок с выполнением требований вы можете назвать?
- Почему Selenium стал стандартом де-факто в автоматизации тестирования?
- В чем заключается разница между абсолютным и относительным путями XPath?
- Как определить, когда пора прекращать тестирование?
- Что делать в случае отсутствия тестовой документации?
- Может ли статическое тестирование обнаружить утечки памяти?
- Опишите своими словами нагрузочное тестирование.
- Назовите этапы жизненного цикла тестирования.
Дерзайте, всем удачи!
P.S. Список полезных материалов для обучения языку Python, думаю, это вам очень пригодится:
- CS50— Гарвардский курс по основам программирования на русском.
- PEP 8 — руководство по написанию кода на Python.
- PyCheckIO — интерактивный тренажер на Python с проверкой решений.
- pythonworld.ru/samouchitel-python — неплохой самоучитель Python.
- Курсы с задачами от Информатикс.
- Oнлайн-тренажёр Python.
- pythontutor.ru — хороший курс по программированию с нуля.
- kodesource.top/python-exercises —практические уроки для начинающих.
- timus.ru — задачи с проверяющей системой.
- Сборник упражнений и задач по основам Python — okpython.net/python/python_zadachnik/python_zadachnik.html.
- Хендбук по Python от Яндекса.
Параллельно с прохождением курсов и просмотром видео читайте такие книги, как «Изучаем Python» Марка Лутца (4-е изд.) или «Программируем на Python» Майкла Доусона. А вообще обязательно к прочтению крутая книга «Укус Питона» (русский перевод).
- python
- тестирование
- карьера программиста
- полезная информация
- личный опыт
- новичкам
Как стать web-разработчиком на Python за полгода: конкретный план действий
Всем привет! Меня зовут Евгений Степанов, и я Python Full Stack-Developer в компании PVS-Studio. В этой статье вы узнаете, что нужно сделать, чтобы за полгода стать Python backend-разработчиком. После прочтения данной публикации у вас будет чёткий план, который останется только реализовать. Поехали!

Веб для тех, кто постоянно развивается
В IT необходимо постоянное развитие. Без него вас просто могут «съесть» более любопытные и совершенствующиеся программисты. Веб не исключение. Пожалуй, это одна из тех сфер, где больше всего технологий, и их число постоянно растёт. Поэтому для backend-разработчика самосовершенствование — лучший друг. Если вы к нему не готовы — чтение данной статьи будет бесполезным (почти).
Насколько глубоки ваши знания в Python?
Надеюсь, вы понимаете, что без хорошего знания Python реализация этого плана невозможна. Циклы, условия, функции, классы, миксины — во всём этом вам нужно так же легко разбираться, как в чистке зубов. Если вы уже знаете этот язык программирования — отлично, можно приступать к выполнению плана. Если нет — вот 2 хорошие книги, которые помогут его изучить:
A byte of Python
Число страниц: 158
Коротко о книге: Данная книга, на мой взгляд, является лучшей для изучения Python с нуля. В 158 страницах автор лаконично и понятно объясняет все основы этого чудесного языка.

Сам себе программист
Автор: Кори Альтхофф
Число страниц: 209
Коротко о книге: В книге объясняются основы Python и немного затрагиваются Git, bash, алгоритмы, регулярные выражения и pip (пакетный менеджер для Python). А задачи для практики помогут лучше понять теоретический материал.

После прочтения любой из этих книг вы получите ликбез по Python (а также по программированию в целом) и сможете приступить к выполнению плана.
При чтении книг по программированию важно понимать, что это не художественная литература. Чтобы получить максимум пользы от этих руководств, необходимо практиковаться параллельно с их изучением. Например, после прочтения каждой главы можно придумывать задачи (или находить в Интернете) и использовать полученные знания для их решения. Это не только поможет вам закрепить пройденный материал, но и сделает более интересным дальнейшее чтение книги.
Стратегия для составления и реализации плана
«Если бы у меня было восемь часов на то, чтобы срубить дерево, я потратил бы шесть часов на то, чтобы наточить топор».
Авраам Линкольн
План – важнейшая составляющая достижения любой цели. Поэтому его необходимо уметь грамотно составлять. Это сэкономит ваше драгоценное время и сократит ненужную работу.
Каждый год люди составляют кучу планов и ставят множество задач. Вначале всё у них идёт хорошо, но уже через пару месяцев начинается откладывание дел на потом – ведь времени ещё полно, почти целый год (да и вообще, устал я, дам себе немного отдохнуть). Так длится вплоть до осени, когда сроки начинают поджимать. И вот в последние 2,3 месяца уходящего года люди увеличивают нагрузку, пытаясь наверстать упущенное. Но, конечно же, сделать это не удаётся, и достижение целей переносится на следующий год.
Такой подход, как можно заметить, не очень эффективен, тем более для веб-разработчика. Поэтому необходимо выбрать другой. Есть много разных стратегий для составления и реализации плана. Лично я пользуюсь способом из книги «12 недель в году» (авторы Брайан Моран и Майкл Леннингтон) и рекомендую его вам (как и саму книгу). Суть стратегии заключается в том, чтобы представлять год как 12 недель, а не как 12 месяцев. Отсюда и название. При таком мышлении, у целей на год будет дедлайн – 12 недель. Данный способ помогает сильно повысить производительность и начать по-настоящему ценить каждую неделю (ведь теперь 1 неделя — это 1 месяц).
При составлении плана я использовал данную стратегию. Полгода — это 6 месяцев. 6 месяцев — это примерно 24 недели. А 24 недели — это 2 года по 12 недель. Таким образом, можно сказать, что время реализации плана — два 12-недельных года.

Как правильно ставить цель
При составлении качественного плана у каждой цели должны быть:
- Дедлайн — крайний срок, когда нужно закрыть цель. Будет поджимать вас при каждом взгляде на него;
- Время, за которое нужно её выполнить. Поможет вам рассчитать дедлайн и понять, укладываетесь вы в него или нет;
- Детальное описание. Чем детальнее расписана задача, тем быстрее вы её сделаете и тем меньше времени потратите на лишнюю работу;
- Наличие инфинитива в формулировке цели. Заставит вас больше думать о том, чтобы выполнить (сделать) эту задачу. (Например: разобрать команду commit).
Составляем план
Внимание! Установка дедлайнов не дорого идёт с расчётом на то, что вы можете уделять реализации плана 6-8 часов в день.
1. Изучить книгу «ProGit» до 171 страницы
Дедлайн — конец 2-й недели 1-го 12-недельного года
Время на выполнение — 2 недели
VCS (Version Control System) – инструмент, без которого не обойтись ни одному уважающему себя программисту. Он поможет откатить программу на рабочую версию, если вдруг в текущей вы слегка накосячили.
Самая популярная VCS и, пожалуй, самая лучшая — Git. Он прост в понимании, изучении и очень быстр – что ещё надо? (Кстати, создан он разработчиками ядра Linux). Самый лучший вариант разобраться в нём — изучить книгу «ProGit» от Скотта Шакона. На старте всю читать нет смысла. Достаточно дойти до главы «GitHub» (не включительно). Таким образом, изучив всего 171 страницу, вы сможете понять смысл VCS и то, как работает Git вместе с его основными командами: commit, add, push, pull, clone, remote. Именно эти команды вы будете использовать в 80% случаев.
Конечно, не все компании используют Git. Но даже если ваша будущая организация применяет другую VCS, вам не составит особого труда изучить её (все, кто использует SVN, нервно закурили в сторонке), поскольку команды систем контроля версий очень похожи.

2. Изучить книгу «PostgreSQL для начинающих»
Дедлайн — конец 4-й недели 1-го 12-недельного года
Время на выполнение — 2 недели
Backend-разработчику необходимо знать базы данных. Это даже не обсуждается. На первых порах у вас может отсутствовать необходимость с ними работать, но однажды этот день обязательно наступит. Помимо понимания баз данных, необходимо уметь работать с СУБД (Система Управления Базами Данных). Чаще всего в Python-проектах используется PostgreSQL. Именно эту технологию я и рекомендую изучать. Книга «PostgreSQL для начинающих» даст вам общее представление о базах данных и обучит основным командам Postgres (синоним слова PostgreSQL). Для начала этой книги будет достаточно. В будущем можно почитать официальную документацию. Она, несомненно, улучшит ваши знания в этом инструменте.
Кстати, выучив основные команды PostgreSQL, вы сможете легко сделать то же самое и для других СУБД, например MySQL. Тут все так же, как и с системами контроля версий, т. е. команды и смысл в разных технологиях очень похожи.

3. Понять, что такое Веб и какие у него есть составляющие
Дедлайн — конец 5-й недели 1-го 12-недельного года
Время на выполнение — 1 неделя
Плавно переходим к веб-программированию. Вначале нужно понять, что вообще за фрукт такой – этот Веб. Узнать, что такое адрес, домен, хост, сервер, HTTP, HTTPS, POST и GET методы, что такое куки, как работает кеширование и т. д. В этом вам помогут лекции на YouTube. Просто введите в поисковой строке фразу «веб лекции», и у вас появится много различных вариантов для изучения данной темы. Лично я рекомендую эти 2 плейлиста: «Основы веб-разработки» и «Web-технологии».
Дедлайн — конец 6-й недели 1-го 12-недельного года
Время на выполнение — 1 неделя
HTML — технология, знание которой необходимо как backend, так и frontend-разработчику. Он несложный от слова совсем. Благодаря шикарному самоучителю, понимание HTML не станет для вас серьёзным препятствием. Дальше дело за практикой и постоянным изучением новых и повторением изученных тегов. В этом, кстати, вам поможет справочник.
5. Изучить части №1 и №2 книги «Django 3.0. Практика создания веб-сайтов на Python»
Дедлайн – конец 6-й недели 2-го 12-недельного года
Время на выполнение — 12 недель
Переходим к самому сложному и самому интересному — фреймворку для веб-программирования на Python. Django и Flask занимают тут лидирующие позиции. Именно их выбирает большинство питонистов.
У Django много встроенного функционала, и за счёт этого на нём можно быстро писать сайты. Flask же не предоставляет такой возможности и почти всё требует создавать с нуля (в этом тоже полно своих плюсов). Мы остановимся на Django. К Flask можно будет вернуться позже. Его изучение сильно улучшит ваше понимание как Django, так и в целом веб-программирования.
При изучении Django я пользовался и до сих пор пользуюсь великолепной книгой Владимира Дронова «Django 3.0. Практика создания веб-сайтов на Python». Рекомендую изучить её полностью, но на старте хватит разбора частей №1 и №2. Читая их, не забывайте о практике, без неё Django выучить невозможно. Придумайте какую-нибудь тематику и сделайте простенький сайт. Например, блог о котах. Желательно практиковаться параллельно с чтением. Также не пытайтесь выучить всё, что есть в книге. Изучите основное, а второстепенное сможете подсмотреть, когда будет необходимость. И да, не забывайте добавлять код своего сайта на GitHub.
Кстати, у Django есть отличная документация, с которой точно стоит ознакомиться в дальнейшем.

6. Пройти первые 4 главы части №1 учебника по JavaScript
Дедлайн – конец 9-й недели 2-го 12-недельного года
Время на выполнение — 3 недели
Да-да! Великий и могучий JavaScript. Пришло его время. Что тут можно сказать? Изучение JS – это интересно, весело и порой больно. А ещё оно необходимо для всех, кто хочет подвизаться в веб-разработке. Бэкендеру будет достаточно базового понимания языка. На момент написания этой статьи лучшим руководством по JavaScript я считаю учебник от javascript.ru. В нём есть вся необходимая информация, она хорошо структурирована и понятно излагается. Для backend-разработчика достаточно пройти первые четыре главы из части №1.
Дедлайн — конец 11-й недели 2-го 12-недельного года
Время на выполнение — 2 недели
И последний инструмент из привычного всем набора JS/HTML/CSS – это CSS. Бэкендеру знание этой технологии особо не пригодится, но базовое понимание не помешает. Помните сайт для изучения HTML? Так вот, у него ещё есть самоучитель по CSS, который и поможет вам в освоении этой непростой технологии.
8. Составить резюме и откликнуться на подходящие вакансии
Дедлайн — середина 12-й недели 2-го 12-недельного года
Время на выполнение — 2 дня
Итак, с технологиями покончено. Минимальный набор backend-разработчика у вас в кармане. Пришло время для поиска работы. Первое, с чего стоит начать – составление резюме. Да, возможно, это самый простой этап, но он очень важен. То, как вы себя преподнесёте работодателю, скажется на скорости и качестве трудоустройства. Вот список рекомендаций, как улучшить своё резюме:
1. Если можете самостоятельно составить резюме на английском — сделайте это;
2. В списке технологий не надо писать свои личные качества, например целеустремлённость, трудолюбие и т. д. Это бесполезная информация, которую может написать про себя любой кулхацкер. Указывайте только технологии, которыми владеете (Python, Django, Git, JavaScript и т. д.);
3. Хорошо, если вы можете подтвердить знание указанных технологий. Для этого будет достаточно ссылки на репозиторий с кодом нужного инструмента (у вас же есть репозиторий на GitHub?);
4. В поле с названием профессии пишите именно название профессии, а не набор ваших технологий (такое часто можно увидеть в разных резюме). Например, в вашем случае это может быть «Junior Django Developer»;
5. Если вы раньше работали в IT, помимо названия компании, укажите, чем в ней занимались. Если есть, что показать, приложите ссылки с материалами. Также добавьте список используемых в работе технологий;
6. Напишите о себе. О своих хобби, о том, как начали изучать программирование, о любимых песнях и т. д. Лучше хотя бы что-то, чем ничего. Подойдёт даже имя кота;
7. Обязательно приложите свою фотографию. Она не только подчеркнёт вашу индивидуальность, но и покажет, что вы серьёзно подошли к составлению резюме.
Вот пример хорошего резюме (фото и данные кота конечно же надо заменить на свои):

Резюме готово? Отлично! Смело выкладывайте его на HeadHunter, даже если не считаете, что оно безупречно. Не забудьте открыть для него полную видимость.
Теперь остаётся только откликнуться на подходящие вакансии. Вводим в поисковой строке всё того же HeadHunter фразу «Python Django», ставим соответствующие фильтры и откликаемся на выпавшие варианты. Важно понимать, что даже если у вас нет всего стека технологий, указанного в вакансии, вы тем не менее можете заинтересовать работодателя, и он пригласит вас на собеседование.
9. Подготовиться к собеседованию
Дедлайн — конец 12-й недели 2-го 12-недельного года
Время на выполнение — 5 дней
Резюме — это хорошо, но без собеседования (а может, даже и тестового задания) вас никто на работу не возьмёт. Что может быть на «собесе»? Обычно вопросы бывают 2 типов: hard и soft skills. Soft skills – это ваши навыки работы в команде, ответственность, лидерские качества и т. д. Hard skills – это технические вопросы, т. е. вопросы по технологиям, указанным в вашем резюме. Оба типа вопросов важны. Подготовиться к техническим вопросам, конечно, сложнее. Вначале нужно понять, какие вопросы могут задать. В этом вам поможет умение гуглить. А если у вас его нет или вы просто не хотите тратить на это время, то вот список вопросов, который когда-то составлял я. Просматривая его и отвечая на вопросы, попробуйте представить себя на реальном собеседовании. И да, если вдруг какой-то вопрос непонятен, обязательно разберитесь в нём.
Что же, вы проделали большую работу. Теперь можно немного отдохнуть, выпить кружку ароматного чая и покурить самый дымный кальян вашего города.
Что дальше?
На изученном стеке технологий далеко не уедешь. Важно, как говорилось ранее, постоянно изучать новые инструменты. Как понять, какие из них нужны? Элементарно! Заходите на наш любимый HeadHunter, в поисковой строке вбиваете фразу «Python Django» и открываете полученные вакансии. Но теперь не откликаетесь на них, а выписываете себе указанный стек технологий. И так нужно сделать хотя бы с 15 вакансиями. После этого из всех выписанных технологий выбираете 3,5 самых часто встречающихся и начинаете их изучение в порядке важности. Данный метод поможет вам изучить самые необходимые инструменты.
Спасибо всем, причастным к написанию этой статьи и вам, дорогие читатели. Уверен, был хоть немного полезен. Удачи и до скорых встреч!
Дополнительные ссылки
И в конце несколько ссылок на публикации моих коллег, так или иначе связанные с темой работы, обучением и собеседованиями. Надеюсь, что-то из этого тоже может оказаться вам интересным.
- Глубина кроличьей норы или собеседование по C++ в компании PVS-Studio.
- Дизайн: Фриланс vs Офис.
- Собеседование на дизайнера в IT: вопросы, тестовое, подводные камни.
