Что работодатели ждут от Junior Python-разработчика
Из этой статьи вы узнаете, что должен знать начинающий Python-разработчик, а также получите список вопросов, которые стоит повторить.
яндексPython — один из самых популярных языков программирования. В рейтинге Stack Overflow 2020 года он занимает третье место. Его легко освоить, а на рынке нет дефицита вакансий. По запросу «Python-разработчик» HeadHunter предлагает 3340 вакансий за месяц. Python используют при создании веб-приложений, в машинном обучении и Data Science. Анастасия Новикова, автор курса «Python-разработчик» в Яндекс.Практикуме, делится опытом прохождения интервью на позицию Python-разработчика и рассказывает, что работодатели обычно ждут от начинающих специалистов.
Анастасия Новикова
автор курса «Python-разработчик» в Яндекс.Практикуме
Какое нужно образование?
Обычно резюме на Junior Python-разработчика подают выпускники или студенты последних курсов технических и математических специальностей. Профильное дополнительное образование, пройденные курсы на Stepik, Coursera или других платформах станут плюсом к основному образованию. Если вы хотите работать в Data Science, то бонусом будут магистерская степень или аспирантура, наличие публикаций и выступления на конференциях.
Работодатели иногда готовы брать на junior-позицию кандидатов без соответствующего высшего образования. Для таких соискателей, как правило, проводят дополнительные испытания, внимательнее относятся к тестовому заданию и учебным проектам в портфолио.
Как проверяют опыт работы?
Обычно опыт работы для начинающих специалистов не обязателен. Но на некоторые вакансии ищут кандидатов с опытом от полугода — года или соискателей, которые прошли стажировку. Если вы нигде не работали, приготовьтесь рассказать про законченные учебные и личные проекты. Личными проектами также интересуются, чтобы проверить заинтересованность кандидата в профессии и его стремление к развитию.
Завершённые проекты можно опубликовать, например, в личном профиле на GitHub или создать сайт-портфолио. На собеседовании вы сможете рассказать, какая перед вами стояла задача, какие технологии вы выбрали и почему. Дополнительные проекты помогут не только прокачать навыки, но и выделиться среди других кандидатов.
Какие soft skills пригодятся в первую очередь?
Помните сериал «Кремниевая долина» и его главного героя Ричарда Хендрикса, CEO «Пегого Дудочника»? Он был отличным программистом, но ему явно не хватало умения общаться с людьми, работать в команде и руководить сотрудниками. На практике одного умения решать поставленные задачи с помощью технических навыков бывает недостаточно, успешность кандидата зависит также от его социальных качеств.
Ответственность, стремление к профессиональному росту, умение управлять рабочим временем и работать в команде — это базовые soft skills, которые нужны практически на любой должности в ИТ-сфере.
От junior разработчика дополнительно ждут умение быстро осваивать новый материал, вникать в суть задач, понимать требования и быть готовым к рутинным задачам. На собеседованиях junior-специалистов могут спросить: «Как вы относитесь к рутинным задачам?» — потому что их работа часто включает монотонные процессы, не всегда творческая. Работодатель не хочет вас напугать — скорее хочет убедиться в том, что вам не станет скучно на этой позиции через несколько месяцев и вы не захотите уйти. Ответ на такой вопрос можно сформулировать так: «Сейчас подобные задачи для меня — возможность получить опыт, на них я смогу отработать свои навыки, чтобы в будущем браться за более сложную работу».
На собеседовании также могут спросить, почему вы хотите работать на этой должности и в этой компании. С помощью этого вопроса работодатель пытается понять, подходит ли соискатель компании, а компания — соискателю. Если вам действительно не интересен проект, то работа в нем вряд ли доставит удовольствие, и вряд ли вы принесете пользу компании.
Изучите перед собеседованием свои будущие задачи, продукты и проекты, с которыми работают в компании, этап развития компании (например, стартап или ИТ-гигант), корпоративную культуру, отзывы сотрудников, местоположение, условия работы. И выберите среди всего то, что вам действительно важно. Это может быть простое «это компания, где я могу полностью реализовать свои компетенции и продолжить карьеру» или «мне кажется, мой опыт отлично подходит под требования» и перечислите ключевые навыки.
Какие технические навыки необходимы?
Основное требование — знание языка программирования Python. Но иногда на позицию Python-разработчика рассматривают специалистов с опытом в других популярных языках (например, C++, Java, Go).
На собеседованиях работодатель может проверить общую ИТ-грамотность, например спросить, как устроен компьютер или как работает интернет. Чаще всего от кандидатов ждут знания алгоритмов и структур данных. В некоторых компаниях есть отдельный этап, или даже несколько этапов отбора, посвященных проверке этого навыка. Про то, зачем разработчику изучать алгоритмы и структуры данных, мы уже писали раньше.
Также на собеседованиях часто спрашивают про опыт работы с базами данных и фреймворками, понимание принципов многопоточного и асинхронного программирования, умение работать в командной строке.
Python-разработчиков также ищут под задачи машинного обучения. Поэтому при отборе на позиции, связанные с Data Science, проверяют знание алгоритмов машинного обучения и умение их применять, опыт участия в соревнованиях на Kaggle или в хакатонах. От соискателей ждут знания математики: теории вероятностей, линейной алгебры и математического анализа.
Что повторить перед собеседованием
Алгоритмы и структуры данных (без привязки к языку программирования). Желательно знать, как устроены массивы, связные списки, хеш-таблицы, множества, бинарные деревья поиска, графы. Какая сложность (в O-нотации) основных операций при работе с ними. Могут также задать вопросы по базовым алгоритмам. Например, попросить рассказать про основные алгоритмы сортировки, бинарный поиск или способы обхода графов.
Структуры данных в Python: примеры применения, различия, преимущества и недостатки. Будьте готовы отвечать на вопросы про числовые типы данных, строки, списки, кортежи, множества и словари. Преимуществом будет знание и опыт применения встроенных в язык структур данных, например, OrderedDict или defaultdict из модуля collections .
Изменяемые и неизменяемые типы данных в Python: в чём разница между ними, примеры использования. Часто просят просто перечислить изменяемые и неизменяемые типы данных, которые вы знаете. Могут предложить решить задачу и спросить, какой тип или какую структуру данных вы бы выбрали для её решения и почему.
Декораторы: что это такое и как они устроены. Могут, например, попросить написать код декоратора для измерения времени работы функции или декоратора с параметром. Полезным будет знание functools.wraps .
Контекстные менеджеры: что это такое и для чего используют. Могут попросить реализовать контекстный менеджер для работы с файлами, аналогичный встроенному open() .
Генераторы и итераторы: что это такое, для чего они используются, какая между ними разница. Могут, например, попросить написать генератор чётных чисел или чисел Фибоначчи.
GIL: зачем он нужен и как работает. Вопрос на собеседовании может быть такой: «Могут ли в Python одновременно выполняться больше одного потока?» От начинающих специалистов обычно не требуют знаний про GIL, но они могут выгодно выделить вас на фоне других кандидатов.
Как устроен один из популярных фреймворков, например Django или Flask. Хорошо, если вы понимаете его сильные и слабые стороны. Могут попросить спроектировать базу данных для приложения, написать несколько запросов с помощью ORM или на чистом SQL.
Как работает интернет: понимание модели/моделей OSI/TCP IP, основных протоколов. Популярный вопрос из этого раздела: «Что происходит, когда в поисковой строке вбиваешь google.com?»
Утилиты командной строки. Могут попросить рассказать про пять – десять команд, которыми вы чаще всего пользуетесь.
Потоки, процессы, асинхронное программирование. Например, в чём разница между потоком и процессом, или какие способы межпроцессного взаимодействия вы знаете.
Логические и математические задачи: для их решения может понадобиться школьная математика, базовые знания комбинаторики, теории вероятностей, умение работать с числами в разных системах счисления.
Вряд ли на собеседовании вам зададут вопросы из всех этих разделов. От соискателя на позицию младшего разработчика не ждут, что он верно ответит на все вопросы, скорее, будут смотреть, в правильном ли направлении он думает. Но чем более подготовленными вы будете, тем больше у вас шансов получить желаемую работу.
Что почитать начинающему Python-разработчику
«Чистый код: создание, анализ и рефакторинг», Мартин Роберт К. «Грязный» код мешает развитию проекта и компании, потому что требует значительных ресурсов на поддержку. В книге много реальных примеров, которые научат отличать плохой код от хорошего. Она пригодится всем начинающим разработчикам, читается легко. Возможно, не всё получится сразу применить на практике, но когда вы столкнётесь с ситуацией, упомянутой в книге, вам будет легче найти решение.
«Грокаем алгоритмы. Иллюстрированное пособие для программистов и любопытствующих», Адитья Бхаргава. Думаете, алгоритмы это сложно? Книга убедит вас в обратном. В ней подробно разбирается каждый алгоритм: будет понятно даже ребёнку. Воспроизвести их на любом языке программирования не составит труда.
«Программируем на Python», Майкл Доусон. Автор книги — опытный разработчик. Он помогает освоить фундаментальные принципы на примере создания простых игр. Так вы получите базовые навыки и сможете пополнить портфолио. Для более продвинутых специалистов книга может показаться скучной, главная аудитория — всё-таки начинающие разработчики.
«Python на практике», Марк Саммерфилд. Знания из книги помогут лучше подготовиться к собеседованиям. Подходит начинающим и опытным программистам. В основе четыре темы: повышение элегантности кода с помощью паттернов проектирования, повышение быстродействия с помощью распараллеливания и компиляции Python-программ (Cython), высокоуровневое сетевое программирование и графика.
«Изучаем Python», «Программируем на Python», «Python. Карманный справочник», Марк Лутц. Это несколько книг известного инструктора по Python. Их лучше читать в оригинале. Они помогают восполнить пробелы в знаниях и разобраться в сложных вещах. В «Карманном справочнике» вы найдёте основные сведения о типах данных и операторах, специальных методах, встроенных функциях, которые пригодятся при работе с Python.
«Python. Книга Рецептов», Дэвид Бизли, Брайан К. Джонс. Пособие для начинающих и опытных разработчиков, которое поможет создавать легкочитаемый, оптимизированный и поддерживаемый код. 15 глав охватывают основные темы Python, каждая глава содержит конкретные «рецепты» с примерами кода, которые вы сможете использовать в своих проектах.
«Алгоритмы: построение и анализ», Томас Кормен, Чарльз Лейзерсон, Рональд Ривест, Клиффорд Штайн. Это справочник и пособие по алгоритмам, которое пригодится и начинающим разработчикам, и сеньорам, и тимлидам. Описания даются на простом языке, главы независимы друг от друга, можно изучать в любом порядке и объёме.
Что должен знать Junior Python разработчик для устройства на работу
Язык программирования Python входит в тройку самых популярных ЯП. Он подходит для решения самых разных задач, от небольших приложений до корпоративных систем. Python работает на разных платформах и поддерживает принципы объектно-ориентированного программирования. Поэтому спрос на разработчиков Python большой, давайте разберемся, что нужно знать Python Junior разработчику для успешного трудоустройства?

Многие начинающие программисты обдумывают, стоит ли браться за изучение этого языка. Кроме самого процесса обучения, их смущают многие нюансы: нужно ли высшее образование, какие hard и soft скиллы нужны, какие книги прочесть и о чем будут спрашивать на собеседовании. Попробуем ответить на эти вопросы.
Нужно ли разработчику Python высшее образование?
Наверное, это самый частый вопрос, который задают будущие разработчики. Стоит ли тратить несколько лет на ВУЗ, когда можно потратить полгода на изучение языка программирования и идти работать? На этот вопрос нет однозначного ответа. Поговорим о плюсах и минусах высшего образования для программистов.
Потраченные годы
Четыре года понадобится отучиться в вузе, чтобы получить степень бакалавра. Возможно, это время можно использовать эффективнее.
Устаревшая программа
На то, чтобы добавить новые знания в программу ВУЗа, уйдут месяцы, а то и годы. За это время знания устареют, особенно в IT.
Некомпетентные преподаватели
В идеальном мире в вузах преподают крутые специалисты, которые отлично владеют теорией и имеют практический опыт. В реальности опыт преподавателя может быть, скажем мягко, далеким от современных реалий.

Казалось бы, этих аргументов против высшего образования достаточно. Но есть и другая сторона.
Широкий кругозор
Это банально звучит, но вузовская программа расширяет кругозор. Кроме кода, полезно знать, как устроено общество, как функционирует экономика, что движет политикой.
Фундамент профессиональных знаний
Теоретические знания плохо монетизируются, но они закладывают основу для профессионального развития будущего программиста.
Навык самообучения
В вузе студент привыкает регулярно выполнять задания, читать учебную литературу, искать дополнительные источники информации. Если в дальнейшем придется изучать что-то еще, эти навыки пригодятся.
Диплом по специальности
Многие развитые страны имеют программу иммиграции Blue Card, с помощью которой привлекают квалифицированных специалистов. Для подтверждения квалификации потребуются документы с работы и диплом.

Недавно на сайте DOU проводился опрос об образовании у IT- специалистов. Выяснилось, что примерно у трети нет высшего образования, и больше половины обладателей дипломов работает не по специальности.
Так что не делайте однозначных выводов. Работать программистом можно и без высшего образования, но нельзя сказать, что оно бесполезно.
Требования к техническим навыкам
Требования к техническим навыкам junior python разработчика постоянно растут. Парадокс: разработчиков не хватает, а входной порог повышается. Индустрия пытается защититься от недоучек, которые приносят больше проблем, чем пользы. Что нужно знать, чтобы одолеть входной порог?
- Python, синтаксис, библиотеки, алгоритмы, структуры данных, и так далее. Для позиции Python-разработчика это основной критерий. Обязательно также знать, где хранится документация.
- Фреймворки, например, Django или Flask. Начинающий разработчик не обязан владеть всеми фреймворками. Достаточно уметь работать с одним и знать названия других, а также то, где они применяются.
- Базовые знания HTML\CSS. Начинающий программист Python не обязан вникать в тонкости фронт-энд разработки, но общее представление необходимо.
- Реляционные базы данных. SQLAlchemy, SQL, PostgreSQL, MySQL.
- Общие принципы работы интернета. API, протоколы (http, https), JSON-RPC, Protocol Buffers, gRPC.
- Linux, а также одну или несколько IDE. Разработчику надо уметь настраивать рабочее окружение самостоятельно.
Кроме того, пригодятся следующие знания и умения:

- Agile\Scrum. Если даже вам не доводилось работать по этим методологиям, то хотя бы ознакомьтесь с общими принципами.
- Git. Умение работать с системами контроля версий будет требоваться постоянно.
- Микросервисы. Подробного знания микросервисов от новичка не будут требовать, но понимание их работы пригодится.
Список навыков, которые «хорошо бы» иметь, можно продолжать бесконечно. В него войдут и Amazon Web Services, и облачные технологии, и Machine Learning. Словом, все, что вы знаете на достаточном для работы уровне, пойдет в плюс: главное, не забудьте добавить эти скиллы в резюме и упомянуть о них на интервью.
Какие soft skills могут пригодиться?
На всякий случай напомним, что soft skills — это профессиональные навыки, не связанные непосредственно со специальностью. Развитые софт скиллы нужны и для поиска работы, и для дальнейшего продвижения.
Английский язык
IT всего мира говорит на английском. Справочная литература, новые технологи — все на английском. Кроме того, на этом языке вам придется говорить с иностранными коллегами, партнерами и даже клиентами. Без английского ваш карьерный рост будет медленным.

Общение
Большие задачи не делаются в одиночку. Хороший разработчик должен быть командным игроком и уметь эффективно общаться. Товарищи по команде, менеджмент, представители заказчика — со всеми этими людьми предстоит решать рабочие вопросы, а без развитых коммуникативных навыков это сложно.
Дисциплина
Приходить вовремя на работу и на митинги, вовремя отчитываться о задачах, отвечать на письма в течение дня — казалось бы, несложно, но сколько молодых специалистов этим пренебрегает!
Управление временем
Это часть общей дисциплины, но отдельно хотелось бы подчеркнуть необходимость work-life баланса. Разработчик, который не отдыхает и ничем не интересуется, кроме программирования, может быстро выгореть.
Общая адекватность
Описать этот скилл непросто. Но рекрутеры обычно отслеживают особенности поведения кандидата на собеседовании. Если у вас есть экстравагантные привычки, например, дома вы работаете раздетым, лучше это не показывать.
Конечно, это далеко не все полезные soft skills, но эти мы считаем ключевыми.
Что будут спрашивать на собеседовании?
Собеседование будет состоять из нескольких этапов. На начальном этапе вопросы самые общие — вас спросят, на какую вы позицию претендуете, и другие элементарные вещи. Рекрутеру нужно убедиться, что работу ищете вы, а не ваша мама. Не поверите, как часто это случается, особенно у начинающих программистов.
Затем будет нетехнический этап собеседования. Вас спросят, почему вы выбрали этот язык программирования, где учились, есть ли у вас опыт работы, словом, проверят бекграунд.
Вопрос «Кем вы себя видите через пять лет» тоже задают на этом этапе. Так рекрутеры пытаются выяснить, насколько вы амбициозны и нацелены на профессиональный рост. Кстати, в этой части собеседования можно упомянуть участие в хакатонах и других отраслевых ивентах.
Часть вопросов направлена на то, чтобы оценить софт скиллы, которые мы описали ранее. Уровень владения английским, стрессоустойчивость, подход к решению задач — все учитывается. Могут спросить, почему вы выбрали именно эту компанию. Поэтому полезно перед собеседованием прочитать, что это за компания и подобрать пару аргументов.
А затем вас ждет техническое интервью. Есть масса способов его проведения и сотни вопросов, которые вам могут задать.

Общие вопросы: устройство компьютера, принципы работы интернета. Тут уместно рассказать о сетевых протоколах и что происходит, когда в строке поиска набираешь google.com.
Основы программирования: чаще всего спрашивают об основных принципах ООП. Если возможно, добавьте к описанию принципов примеры практического применения.
Python: массивы и как они устроены, основные алгоритмы сортировки, типа данных, способы поиска. Не обойдется без вопросов по фреймворкам. Скорее всего, ваш технический интервьюер будет задавать довольно сложные вопросы. Не огорчайтесь, если на какие-то из вопросов не будет ответов: интервьюер не пытается вас завалить, а проверяет границы ваших знаний. Скорее всего, вам предложат тестовую задачу. Попросят ее решить или описать, как бы вы ее решали.
Навыки создания кода: какие IDE вы знаете, умеете ли их устанавливать, подключать библиотеки и плагины, и так далее.
Базы данных: какие базы вы знаете, с какими работали, каковы их особенности.
Какие знания будут плюсом
Компания-наниматель ищет не просто разработчиков, а тех, кто способен выполнять актуальные бизнес-задачи. Поэтому будут спрашивать то, что имеет отношение к этим задачам.
Например, если в работе компании значительное место занимает Data Science, то у junior python разработчика будут спрашивать о знании математики, анализа, теории вероятностей. Выше мы писали, что все это изучают в профильных вузах, но вполне реально освоить основы самому.
Если у вас есть учебные или личные проекты, перед собеседованием их стоит выложить на Git или на ваш сайт, чтобы показать на интервью. Хорошо, если демонстрация кода будет сопровождаться рассказом о том, какую задачу решал этот проект.
В целом мы бы рекомендовали в начале поиска работы проанализировать свои знания и скиллы и составить список. Бесполезных знаний не бывает, надо только уметь их правильно применять.
Какие книги нужно прочесть Junior Python разработчику
Главное имя, которое должен знать Junior Python разработчик — Марк Лутц. Он написал серию книг о разработке на Python, включая Python Pocket Reference. Этот карманный справочник лучше читать в оригинале, и в нем содержатся ответы и подсказки почти на все вопросы, которые могут возникнуть у неопытного разработчика.
Еще одна базовая книга для начинающих разработчиков — «Программируем на Python» Майкла Доусона. Автор предлагает освоить основы языка, создавая простые игры. Опытным разработчикам эта книга не пригодится, а вот для начинающих вполне подойдет.
А вот книга Марка Саммерфилда «Python на практике» подойдет и для опытных программистов. Мы ее рекомендуем еще и потому, что в ней описываются паттерны проектирования и правила их использования для создания хорошего кода.
Заключение
Сейчас ситуация на рынке IT-кадров складывается в пользу соискателей. Миру нужно больше программистов, поэтому толковых ребят буквально отрывают с руками. Даже начинающий программист может легко найти работу, если приложит усилия.
Для junior python разработчика лучший путь — освоить основы языка Python, познакомиться с фреймворками и базами данных, прочесть несколько книг по специальности и поработать над развитием софт скиллов. После этого можно начинать поиски работы, и очень скоро поиск увенчается успехом.
Всегда ваш Сергей Немчинский

Расскажите, какие навыки вам потребовались при трудоустройстве на позицию junior python developer? Какие задачи приходилось решать на собеседовании?
Что должен знать разработчик на Python без опыта?
Язык программирования Python является одним из наиболее популярных и востребованных. Освоить его относительно просто, плюс на рынке труда вакансий очень много: те же сайты HH или Rabota предлагают сотни вакансий. Если же вспомнить, что Python разработчик получает зарплату в районе 70 000 — 300 000 рублей (особенно высока зарплата в Москве и Санкт-Петербурге), то становится понятно, что игра стоит свеч. Однако в реальности все зависит от опыта, и до такого заработка еще надо «дорасти». Но, как и любой генерал когда-то был простым солдатом, так и любой Senior-программист когда-то был джуниором или стажером. В этой статье мы рассмотрим, что требуют современные работодатели на собеседованиях у начинающих программистов на Python.
Какое должно быть образование?
В большинстве случаев резюме на позицию джуниора подают выпускники университетов либо студенты 4-5 курсов технических специальностей. Важны и соответствующие курсы, пройденные как очно, так и онлайн. Это могут быть курсы от Otus, Stepic, Coursera и т. п. В данном случае речь идет о получении дополнительного профильного образования, а образования много не бывает.
Когда цель соискателя — получить работу разработчика Python в сфере Data Science, пригодятся хорошие знания математики, опыт выступления на конференциях, магистерская степень либо аспирантура, а также наличие авторских научно-технических публикаций.
Однако работодатели могут взять на позицию Джуниора не только разработчика программного обеспечения без опыта, но и программиста без высшего образования — такие случаи бывают. Но следует учесть, что для этих кандидатов возможно проведение дополнительных испытаний.
Чтобы получить работу, нужен опыт, чтобы получить опыт, нужна работа
Тот, кто имеет опыт неудачных собеседований при попытке попасть в IT, хорошо знает, как непросто бывает прорваться в эту сферу. Что уж греха таить — попадание в IT для многих становится счастливым билетом в более качественную жизнь, где зарплата высока, социальный пакет приятен, а ежегодный отпуск в теплые страны находится в порядке вещей. Следовательно, желающих с каждым годом становится все больше, в результате чего растут требования к соискателям, причем растут гораздо быстрее, чем заработная плата. Некоторые утверждают, что современный джун должен иметь знания на уровне мидла 10-летней давности.
Очень часто, когда ищут специалистов без опыта, работодатели все же слегка лукавят. К примеру, они требуют, чтобы вы имели опыт от полугода или, по меньшей мере, чтобы за вашими плечами была стажировка в ИТ-компании (то, что вы должны иметь за плечами пройденные курсы, даже не обсуждается — это уже давно из серии «must have»).
Но что делать, если образование есть, знания есть, сертификат после курсов есть, а вот опыта нет от слова совсем? В таком случае вы должны иметь в своем активе какие-нибудь завершенные личные либо учебные проекты. Такие проекты весьма важны, т. к. работодатель на их основании сможет сделать вывод о вашей реальной заинтересованности в предметной сфере и о вашей стремлении к развитию. Поэтому:
— будьте готовы опубликовать свои проекты на GitHub или на личном сайте-портфолио;
— будьте готовы рассказать на собеседовании, какая задача стояла, какие технологии вы выбрали, почему именно их и т. д.
Важно помнить, что дополнительные проекты не только выделят вас из толпы соискателей, но и позволят дополнительно прокачать собственные навыки разработки на Python.

Какие soft skills особенно важны?
При работе на реальном проекте программисту Python недостаточно иметь необходимые технические навыки и уметь решать поставленные задачи. Не менее важны различные социальные и личностные качества:
— умение коммуницировать с людьми;
— умение работать в команде;
— стремление к профессиональному росту;
— повышенное чувство ответственности;
— умение управлять своим рабочим временем.
Все это — базовые soft skills, необходимые почти на любой должности в сфере IT.
Если речь идет о кандидате без опыта, претендующего на позицию джуниора, то тут можно сделать акцент на следующих навыках:
— умение быстро осваивать много нового материала, способность учиться;
— умение вникать в суть поставленных задач;
— умение быстро схватывать, что от тебя хотят;
— отсутствие страха перед рутинными задачами.
На собеседовании могут спросить об отношении соискателя к рутинным задачам, и это неспроста, т. к. работа нередко включает в себя монотонные процессы. Задавая этот вопрос, работодатель просто желает убедиться, что на вас стоит тратить время, то есть вы не заскучаете через 2 месяца и не сбежите, т. к. «неинтересно». Идеальный ответ — что-то вроде: «Сейчас такие задачи для меня — это реальная возможность получить опыт и отработать свои навыки. В перспективе этот опыт позволит мне справляться с более сложными задачами».
Также могут спросить, по какой причине вы желаете работать именно в этой компании, именно на этом проекте, именно на этой должности. Чтобы высказать искреннюю заинтересованность и произвести наиболее благоприятное впечатление, желательно заранее изучить:
— будущие задачи, проекты, продукты;
— особенности компании, ее корпоративную культуру;
— условия работы и т. п.
Выберите, что для вас действительно важно. Неплохие ответы звучат так:
— «В вашей компании я смогу полностью реализовать свои компетенции и получить ценный опыт»;
— «Моя кандидатура прекрасно подходит под ваши требования, так как я владею следующими техническими навыками…»
Какие технические навыки нужны?
Самое главное — это знание языка программирования Python и умение писать на нем код. Порой требуются разработчики (developers), которые имеют базовые навыки программирования и на других языках: C++, Java, Golang и т. п.
Обычно на собеседованиях проверяют еще и общую IT-грамотность. Вы должны знать, как работает компьютер и программные приложения (мобильные, десктопные), как функционирует интернет, иметь понимание работы сетей передачи данных, разбираться в алгоритмах и структурах данных. Вдобавок к этому, желательно:
— уметь работать с базами данных;
— знать фреймворки (хотя бы общее понимание должно присутствовать);
— понимать принципы асинхронного и многопоточного программирования;
— уметь работать в командной строке, иметь начальные навыки системного администрирования (простейшие команды в Linux не должны вас пугать).
Если речь идет о брендовой компании, то собеседование делится на несколько этапов, на каждом из которых проверяется определенный пул навыков, в результате чего отбираются лучшие.
Иногда разработчика Python ищут под задачи Machine learning. Когда речь идет об отборе Data Science-специалиста, дополнительно проверяются знания алгоритмов машинного обучения. Соискатель должен уметь их применять, идеально, если он участвовал в хакатонах или Kaggle-соревнованиях по Python. Не обойтись и без математики: не должны вызывать затруднений ни теория вероятности, ни линейная алгебра, ни математический анализ.
Что повторить?
Ниже представлен краткий список того, что нужно повторить перед собеседованием:
- Алгоритмы и структуры данных. Надо их понимать без привязки к конкретному языку программирования. Тут вам и массивы, и связные списки, и множества, и хэш-таблицы, и бинарные деревья поиска, и графы. Могут спросить основные алгоритмы сортировки, способы обхода графов и т. п.
- Структуры данных в Python. Какие бывают, как применяются, чем различаются, какие есть плюсы и минусы. Строки, списки, множества, кортежи, словари, числовые типы данных… Будет преимуществом умение использовать встроенные в язык программирования структуры данных, к примеру, OrderedDict либо defaultdict из модуля collections.
- Изменяемые и неизменяемые типы данных. Какая между ними разница, какие неизменяемые и изменяемые типы данных вы знаете. Могут показать задачу и спросить, какую структуру данных вы бы выбрали для решения.
- Декораторы в Python: что это, как устроено. Иногда просят написать код декоратора. Полезно знать functools.wraps.
- Контекстные менеджеры: что это, для чего надо. Одно из заданий — реализация контекстного менеджера для работы с файлами по аналогии со встроенным open().
- Генераторы и итераторы в Python: что это, для чего надо, чем различаются. Можете ли написать генератор четных чисел либо чисел Фибоначчи.
- GIL: зачем нужен, как работает. Может ли в Python одновременно выполняться более одного потока? Эти знания не то, чтобы обязательны, но выделить кандидата на фоне других они определенно способны.
- Как устроены популярные фреймворки для «Питона» (Django, Flask). Каковы сильные и слабые стороны. Можете ли вы спроектировать БД для приложения и написать парочку запросов посредством ORM либо SQL.
- Как функционирует интернет. Требуется понимание моделей OSI/TCP IP, основных протоколов. Знаете ли вы, что происходит, если в поисковой строке вбиваешь, к примеру, otus.ru.
- Утилиты командной строки. Достаточно рассказать про 5-10 команд, которые вы наиболее часто используете.
- Потоки, процессы, асинхронное программирование. Какова разница между потоком и процессом, каковы способы межпроцессного взаимодействия вам известны.
- Логико-математические задачи. Базовые знания математики, комбинаторики и теории вероятности не помешают, как и умение работать с числами в различных системах счисления.
Подытожив, скажем, что далеко не всегда на собеседовании будут задавать вопросы из всех вышеперечисленных разделов. Но важно понимать, что от кандидата на позицию Junior Developer ждут, если не досконального знания, то хотя бы общего понимания сути описанных процессов. Вдобавок к этому, всегда смотрят, в правильном ли направлении вы мыслите, пытаясь ответить на неизвестный вопрос. И чем более подготовленным будет соискатель, тем больше шансов получить работу разработчика на Python — работу, которая по мере накопления знаний станет для вас действительно высокооплачиваемой.
- https://tproger.ru/articles/what-junior-python-dev-should-know/;
- https://checkroi.ru/blog/professiya-python-programmist/.
Примеры вакансий разработчиков на Python можно посмотреть на Jobsora.
Как стать Python-разработчиком
Python – самый популярный (1-е место по данным индекса TIOBE на май 2023 года) и широко задействованный в современной IT-сфере многоуровневый язык программирования. Он активно используется в научной и инженерной сфере, при создании игр, сложных визуальных эффектов, в Machine Learning и работе с большими базами данных. Еще одна обширная область применения Питона – автоматизация тестирования. Специалисты QA Automation выбирают этот язык из-за простоты. Python широко используют компании, разрабатывающие крупные проекты: Google, Dropbox, BitTorrent, NASA, Los Alamos и другие.
Почему стоит изучать именно Python

Простота написания кода
Синтаксис Пайтона – достаточно простой, он хорошо спроектирован и логичен, код легко читать и понимать. Также Python имеет небольшое количество используемых символов, по сравнению с другими языками. Операторы завершаются концом строки. Блоки кода разграничиваются отступами. Интерпретатор обеспечивает корректное форматирование, что предотвращает создание нечитаемого кода.
До запуска программа, разработанная с использованием Python, представляет собой текстовый файл, совместимый с любой платформой, на которой установлен интерпретатор. Синтаксис Python базируется на английском языке, что позволяет читать код даже новичкам, не имеющим опыта программирования.
Множество специализаций – направлений для развития, а соответственно разные интересные задачи
Python применяется во многих сферах IT. Среди специализаций:
- веб-разработка;
- аналитика данных;
- IoT (Интернет вещей);
- автоматизация рутинных задач в работе системных инженеров, сисадминов, DevOps-инженеров;
- автоматизация тестирования ПО;
- разработка мобильных приложений (с большой натяжкой) – есть фреймворки, реально в продакшене ни одного решения мы не встречали, но это возможно.
Хорошая документация и поддержка сообщества
Язык Python популярен во всем мире, его изучением и всесторонним развитием занимается большое сообщество пользователей. Наличие обширной и хорошо проработанной документации, стандартных библиотек, учебных материалов позволяет каждому найти ответы практически на любые вопросы, возникающие в процессе программирования. Если вы столкнетесь с какой-то ошибкой, то с большой долей вероятности кто-то уже имел опыт преодоления этой проблемы и выложил решение задачи на Stack Overflow.

Обучение языку программирования Python c нуля
теория и практика
Программист на Python: особенности работы и требования
В разных компаниях требования к Python-разработчикам разное, при этом есть базовые основы, знать и работать с которыми должен уметь каждый:
- синтаксис и базовые конструкции языка программирования;
- ООП (в случае если ваша специализация не DS|ML);
- алгоритмы и структуры данных;
- БД (базы данных);
- системы контроля версий;
- библиотеки и фреймворки.
Также, чтобы стать Питон-разработчиком с нуля, необходимо освоить английский, хотя бы на разговорном уровне.
Если вы планируете работать с нейронными сетями, то необходимы знания линейной алгебры, математического анализа, теории вероятности и математической статистики.

Как стать Junior Python-разработчиком с нуля
Чтобы стать разработчиком программ на Питоне, необходимо:
- Определиться с направлением (специализацией).
→ От вашего выбора будет зависеть стек технологий для изучения и получения практических навыков.
- Настроить окружение.
- Изучить основы языка и набить руку на решении простых задач.
→ Документацию Python можно посмотреть на официальном сайте.
→ Задачники по языку программирования Python для закрепления теоретических основ: Ok python, Проект Эйлера, ChekiO, codewars.
- Получить практические навыки в реализации проекта с использованием стека технологий, актуального на рынке.

Самостоятельно или курсы?
Это зависит от многих факторов: базовой подготовки, мотивации, наличия свободного времени для обучения, способности обучаться самостоятельно и т.п.
Самостоятельное освоение профессии – вариант бесплатный, но длительный и сложный. Ответы на все вопросы приходится искать самому, и не всегда информация из сети оказывается качественной.

Более эффективный вариант – обучение на курсах под руководством опытных преподавателей.
Плюсы обучения на курсе в группе:
- структурированная программа курса;
- обратная связь от преподавателя с разбором домашних заданий;
- ответы на вопросы, возникающие в процессе освоения новой информации;
- поддержка сокурсников;
- практика в реальном проекте с поддержкой преподавателя.
А минусы? Есть и они, конечно. Часто неочевидные:
- Мнение, что ничего делать не нужно: записался на курс, и учеба сложится сама собой, не нужно прикладывать никаких усилий.
→ Необходимо понимать, что в течение курса придется работать: решать задачи, практиковаться, делать ДЗ, работать над проектом.
- Постоянные нестыковки со временем, откладывание обучения, и, как следствие, – отставание от группы.
→ Лучший вариант в этом случае – составить расписание, при котором вы точно будете заниматься и никто не будет вас отвлекать.
