Python — язык общего назначения, поэтому его можно использовать не только в web-разработке, но и при обработке больших данных. Он стабильно занимает весомую нишу в сферах Data Engineering и Data Science. Порог входа в Python считается низким, поскольку синтаксис отличается простотой и лаконичностью, что привлекает начинающих программистов.
«Готов ли я к интервью?» Неверно! «Вопрос в том, готово ли интервью ко мне?»
В команде NIX собеседования по направлению Python проходят по двум специализациям — Web и Data Engineering. В этой статье Team Lead of Python Department Алексей Новиков и Group Lead of Python Department Евгения Богомаз расскажут, что поможет успешно пройти собеседование на позицию Python-разработчика. Им слово.
Ключевые моменты, которые нас интересуют в резюме, зависят от позиции, на которую мы рассматриваем соискателя. Логично, что у джуниора не будет длинного послужного списка с массой интересных и сложных проектов. Поэтому в резюме начинающих разработчиков обращаем внимание на образование кандидата, учится ли он сейчас и на каком курсе или уже закончил вуз.
Часто к нам приходят студенты первого курса, не все из которых представляют, как будут совмещать учебу и занятость на проекте. Со своей стороны мы даем возможность брать учебный отдых на время сессии, а также стараемся составить гибкий график, чтобы у начинающего специалиста было достаточно времени и на учебу в вузе, и на практику в IT-проекте.
Также из резюме на позицию Junior важно понимать, какими знаниями обладает человек, какие ресурсы использует для обучения. Если есть наработки в VCS (GitHub, GitLab etc), обязательно смотрим на код и во время собеседования уточняем у соискателя, почему он использовал тот или иной подход.
Не поленитесь добавить в резюме пару строк о себе. Это очень помогает узнать цели и стремления человека, его увлечения.
Ведь мы же понимаем, что позиция джуниора подразумевает активное развитие навыков в первые месяцы работы, что влечет за собой постоянную коммуникацию. Невозможно построить эффективное общение, не узнав человека.
Здесь уже приоритеты в резюме для нас другие. Нам нужно удостовериться, что перед нами опытный специалист, понять, в каких сферах он работал, с какими технологиями и в каких ролях. В этом случае обращаем внимание и на то, сколько мест работы человек сменил за определенный промежуток времени.
Утрированно «пять компаний за полтора года» — уже может быть звоночком, что кандидат не приживется и у нас.
Далее смотрим, работает ли соискатель сейчас или покинул предыдущий проект. Так мы понимаем, когда рассчитывать на выход кандидата к нам, если он успешно пройдет собеседование.
На собеседовании больше внимания уделяем конкретным инструментам, а также опыту в принятии решений, построении архитектуры приложения и софт-скиллам. Зачастую специалисты такого уровня выступают в роли лида проекта. Человеку нужно уметь эффективно выстраивать коммуникацию в команде, правильно доносить цели и задачи, решать конфликтные ситуации, быть готовым к обучению новичков.
Отдельно хотелось бы выделить ребят, которые приходят к нам с фриланса. Основная мотивация для них — получение опыта взаимодействия с другими участниками команды. Это позволяет им расти как специалистам. Обычно на фрилансе их код никто не ревьюит, им не с кем посоветоваться и получить обратную связь. В нашей команде все иначе: если ты новичок, тебе всегда поможет ментор, более опытные разработчики поделятся опытом и подскажут, как решить новую для тебя задачу. Да и матерым специалистам мы всегда рады, ведь каждый привносит в проект свою экспертизу, свое видение. Так мы учимся друг у друга.
Позиция разработчика на Python, как и на любом другом языке программирования для бэкенда, предполагает:
Наша задача на собеседовании не завалить человека, а сориентировать его — в чем он уже силен и какие знания и навыки сразу сможет использовать в проекте, а чему мы поможем научиться. Всего знать нельзя.
К тому же, на собеседовании кандидаты часто нервничают и могут что-то забыть. Мы это понимаем. Поэтому для нас главное — увидеть ход мыслей человека.
Кроме теории, мы даем задачки, которые можно решить устно, без написания кода, просто проговорить план решения. Зачастую в этих тасках предусмотрено несколько вариантов, и нам всегда интересно наблюдать, какое решение выберет кандидат. На этом этапе хорошо видно, насколько он владеет базой. Это наши «фирменные» задачи, которые не нагуглишь 🙂
Сегодня у многих на слуху профессии Data Engineer и Data Scientist, в которых Python используется для обработки больших данных, а также в машинном обучении.
Когда кажется, что все по плечу
Быть такими специалистами «стильно, модно, молодежно», но порой соискатели не представляют, с чем буду иметь дело и каким базовым стеком технологий им нужно обладать.
Наш совет: не поленитесь заранее почитать о позиции, на которую претендуете.
Проектирование структуры реляционной базы данных — одна из наиболее распространенных тем, которую начинающие Python-разработчики мало изучают. При подготовке к собеседованиям многие уделяют внимание синтаксису СУБД, запросам. Но в разговоре с соискателями оказывается, что они не до конца понимают, какие нужны таблицы для построения эффективного хранилища данных, какие связи между ними нужно создать, какие ограничения установить.
Довольно часто встречаем ребят, у которых есть опыт взаимодействия с базами данных, исключительно с использованием ORM. Но этих знаний обычно недостаточно в реальных проектах, где нужно строить сложные запросы и оптимизировать работу базы данных. А в нашем деле умение правильно спроектировать БД крайне важно.
Волшебного вопроса, по которому сразу становится ясно, отказать человеку или позвать на повторное собеседование, у нас нет. Это «восьмое» чувство, помогающее нам определить, насколько соискатель показал себя, каким видит свое профессиональное развитие в будущем и настроен ли он на сотрудничество именно с нами.
Второй шанс мы даем очень часто. Каждый получает фидбек после собеседования (в конце разговора или спустя несколько дней). Мы стараемся похвалить за то, что получилось, и подсвечиваем моменты, которые стоит выучить или подтянуть. Иногда результаты подготовки превосходят наши ожидания. Например, пришел к нам однажды соискатель на позицию Data Engineer. На тот момент у него не хватало знаний, и мы предложили ему подучиться и вернуться уже более подготовленным. В таких случаях мы всегда делимся материалами для самообучения, которые подготовили наши эксперты.
Кандидат подтянул знания, пришел повторно, но только уже на позицию веб-разработчика. Сейчас он успешно пишет серверную часть одного из приложений, а в планах — стать фулстек-разработчиком. Так что, случаи разные бывают.
Как показывает практика, далеко не всегда техническая составляющая скиллов является решающей. Важную роль играет потенциал, который виден (или не виден) у соискателя.
Если кандидат умеет логически мыслить и находить правильное решение задачи, обладает аналитическим складом ума — это дает ему весомое преимущество среди других претендентов на вакансию.
Пусть даже он не имеет глубоких познаний в технологиях. Опыт — дело наживное, а вот научить человека логически мыслить — намного сложнее.
Python — дружелюбен для новичков и прост в изучении для более опытных специалистов. Вам он точно пригодится, если хотите работать с бэкэндом или мечтаете о карьере в Big Data. В случае с Python все ваши проекты будут уникальны. В каждом их них есть свои фишки и челленджи, с которыми вы справитесь при помощи готовых или собственных кастомных решений.
Хотите освоить базовую теорию по направлению Python? Мы собрали для вас полезные материалы, которые помогут подготовиться к собеседованию. Ловите!
Если вы хотите освоить не только азы Python, но и окунуться с головой в Big Data & Data Engineering, то мы предлагаем вам познакомиться с Apache Spark — одним из основных инструментов для обработки и анализа больших данных.
Нет ничего лучше, чем официальная документация, откуда ты получишь представление об основных компонентах Spark, узнаешь, что такое распределенные вычисления, какие структуры данных использует Spark, а также поймешь значения таких определений, как: Lazy Evaluation, Fault Tolerance, Catalyst Optimizer, UDF, Transformations, Actions, Wide & Narrow Operations, Partitions, Shuffle, Broadcast и многое другое:
Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…
Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…
Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…
В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…
Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…
Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…