В марте у нас прошел открытый вебинар по созданию чат-бота с помощью YandexGPT. Инструкцией с интенсива мы поделились в телеграм-канале, а сегодня расскажем, как подготовиться к собеседованию в IT-компанию.
Какие гибкие навыки важны для программистов?
Коммерческое программирование — это командная работа, и общение — важная ее часть. В команде вы все создаете что-то общее с помощью кода. При этом чужой код не так просто понять, поэтому важно организовать коммуникацию так, чтобы всем было комфортно.
Рабочий день программиста состоит не только из кодинга. Еще в него входят совещания, на которых коллеги обсуждают, как оптимизировать код, обучение, для которого иногда нужно расспрашивать других программистов. Также нужно тестировать код и отправлять его на рабочие серверы (ведь программа будет запускаться не на вашем компьютере, а на сервере клиента) и решать возникающие проблемы, например если код некорректно работает.
Несмотря на стереотипы о гиках-интровертах, которые работают в IT, настоящему специалисту необходимо развивать коммуникативные навыки. Иначе будет страдать результат, причем не только общий, но и ваш личный. Любой разработчик, придя на новое место, учится технологиям, которые используются в этой компании. Научиться можно только через общение с коллегами. Если не проговаривать сложные моменты, рискуешь не просто делать неправильно, но и вообще не то, что нужно.
Еще важный навык — уметь применять свои знания и решать проблемы. Разработка — это творческая профессия, в которой важен креативный подход. Не зря один из классических трехтомников по информатике называется «Искусство программирования». Это и правда близко к искусству.
Какие теоретические знания нужны, чтобы пройти собеседование?
Все зависит от специфики конкретных команд и проектов, поэтому тут сложно дать универсальный ответ.
Например, мы в VK нанимали Java-разработчиков, чтобы работать с большими данными. Стандартно профессию в разработке изучают так: учат сам язык программирования и плагины к нему. Мы не ждали знания плагинов, но ожидали, что кандидат будет знать язык и алгоритмы. Знание алгоритмов требуется не везде, но в некоторых компаниях вас спросят об этом.
Я работаю в отделе искусственного интеллекта, поэтому мы немного и про математику спрашиваем. Мне важно, чтобы человек имел представление о том, что такое статистика и теория вероятностей. При этом самый математический вопрос, который я задавал на собеседованиях, — это формула условной вероятности. Никаких интегралов.
Сильный кандидат в команду разработки — какой он?
Помните, что ищут не лучшего, а специалиста, который сможет работать и хочет развиваться. Работодателю нужен сотрудник, который умеет самостоятельно рассуждать, даже если ему не хватает знаний в конкретной области. Этот навык формируется при обучении, и он очень важен.
Разработчик — это не справочник по языку программирования. Недостаточно просто хорошо знать язык, но и не обязательно знать его идеально. Все хотят нанять в команду специалиста, который умеет искать информацию, использовать те знания, которые у него есть, умеет общаться и вообще обучаем.
Нужна ли международная сертификация, чтобы устроиться на работу?
Сертификаты — не самое важное. Главное — попасть на собеседование. Однако сертификаты могут использоваться как инструмент первичного отбора, если кандидатов на позицию очень много.
Как только вы попали на собеседование, все, что важно — это ваши знания. От вас ждут, что вы покажете себя: как решаете задачи, как разговариваете и размышляете.
В других профессиях дипломы более важны и к сертификации относятся строже, в том числе при релокации. Программисту же достаточно созвониться по Zoom. Вам не нужен определенный сертификат, который подтвердит, что вы имеете право программировать.
Что происходит на лайвкодинг-сессиях?
Это компонент многих технических собеседований, когда нужно в режиме здесь и сейчас закодить какую-то несложную вещь. Тренировочные лайвкодинг-сессии проводятся на нашей годовой программе «Python-разработчик» в BBE.
На собеседованиях в VK тоже есть лайвкодинг-сессии, и я их проводил. Там дают относительно простую для программиста задачу, чтобы посмотреть, как человек будет ее решать. На техническом собеседовании не будут спрашивать сложные вещи. Здесь главное — убедиться, что человек умеет работать.
Бывает, что человек знает теорию, а кодит медленно, и читать его код тяжело. Поэтому на лайвкодинг-сессии смотрят, как вы работаете на практике.
Никто не ждет, что вы сразу напишете идеальный код. В программировании нормально сперва делать набросок. На таком собеседовании нужно показать, что вы можете написать код в разумные сроки, понимаете, как довести его до ума, и можете предусмотреть разные проблемы.
Например, есть задачи с наборами пронумерованных данных. Задача: превратите англо-русский словарь в русско-английский. Даны структуры данных, иерархичность, и вам нужно программным образом переставить и развернуть это. Цель — понять, как это правильно сделать, и написать чистый код для этого действия.
Как пережить отказ?
Любая команда состоит из таких же людей, как мы, которые могут ошибаться и не всегда объективно оценивают кандидатов. Поэтому никогда не принимайте собеседования близко к сердцу. Используйте каждый опыт как тренировку.
Однажды нашей команде на позицию Junior не подошел человек, который был Senior в другой компании. Это нормально, потому что от сотрудников везде хотят разный набор знаний и навыков.
Если вас не взяли, возможно, проблема не в вас и не в работодателе. Просто вы не сошлись, как два кусочка пазла. Это лишь значит, что идеальное место работы еще ждет вас.