Последние записи

GDG DevFest 2018

SQA Days 24: как это было

Мобильная разработка сегодня

Вояж в русскую зиму

Виртуальный девичник в большом городе

7 декабря 2018

Некоторые типичные ошибки на техническом собеседовании

Ошибки, в той или иной мере влияющие на шансы кандидата быть принятым на работу мечты, можно условно разделить на 2 категории: этические и профессиональные. Этические включают опоздания, отмены собеседования без предупреждения, грубое или агрессивное поведение и прочие (казалось бы) очевидные вещи, которые свидетельствуют об уважении кандидата к окружающим вообще и к потенциальному работодателю в частности; от совершения именно этих ошибок предостерегает большинство статей в Интернете по запросу «как успешно пройти собеседование». Ко второй категории относятся ошибки, свидетельствующие о (пока) недостаточном профессиональном уровне кандидата; их также можно избежать, если подойти к подготовке к собеседованию ответственно и по-хорошему педантично. Какие аспекты кандидаты чаще всего упускают из виду? Мы попросили Николая, руководителя удаленного направления отдела веб-разработки, рассказать нам, с какими типичными ошибками он сталкивается чаще всего, проводя собеседование.

Tipical errors on technical interview Noveo

Слабый уровень базовых знаний

Базовые знания — это фундамент. Тут как с иностранным языком: не зная ключевых грамматических правил, основных конструкций и принципов построения предложений, мы не сможем полноценно общаться друг с другом. Так же и в программировании: чтобы написать качественное приложение, необходимо глубоко понимать язык, его структуру, возможности и особенности.

Так, если кандидат собеседуется на позицию JavaScript-разработчика, но при этом не понимает, что такое callback-функции, замыкания, контекст вызова, то высока вероятность, что код будет написан неправильно, не оптимально или окажется неподдерживаемым.

Помимо языка программирования, также необходимо знать булеву алгебру и в какой-то мере — алгоритмы.

Важность: Этот пункт является наиболее критичным на собеседовании. Если кандидат не понимает основ, то дальнейший разговор обычно бессмысленен. Работодателю предстоит полностью переучивать такого кандидата, и далеко не все на это готовы.

Как улучшить: постигать базовые знания чтением книг, подкреплять их статьями из авторитетных источников. Очень важно читать книги полностью, а не урывками: в хорошем источнике знания максимально полные и логически упорядоченные, а выборочное чтение ведет к тому, что и знания будут выборочными.

Tipical errors on technical interview Noveo PHP JS HTML

Плохое знание инструментов и общепринятых подходов в разработке

На одном лишь языке программирования «из коробки» было бы довольно долго и сложно писать большие приложения, так как зачастую приходится решать однотипные задачи (чтение входных данных, работа с базой данных и т.п.). Поэтому в реальной жизни для ускорения процесса разработки, особенно типовых задач, используются различные фреймворки и библиотеки. Например, в PHP это может быть Symfony, в Ruby — Ruby on Rails, в JavaScript на фронтенде — React/Redux. Современные фреймворки хорошо документированы, а их разработчики или сообщество вырабатывают best practices — набор правил, определяющих философию инструмента и оптимальный подход к решению задач. И прежде, чем начать разработку проекта на фреймворке, необходимо понять его правила, а не пытаться применить правила другого фреймворка или действовать наобум.

Помимо этого есть общепринятые подходы в разработке ПО вне зависимости от языка программирования, такие как DRY, KISS, YAGNI, принципы SOLID, шаблоны проектирования и т.п. Если следовать правилам, то другим разработчикам будет проще понять код и работать с ним.

Незнание таких подходов не означает, что разработчик не сделает задачу, но возможно, решение будет новым «велосипедом», не эффективным и плохо поддерживаемым. Например, нарушение принципа DRY, т.е. дублирование кода, считается наиболее серьезным и говорит о низком стиле программирования.

Важность: Этот пункт менее критичен, чем базовые знания, но все же играет большую роль в принятии решения. Некоторые работодатели готовы брать только кандидатов со знанием определенных инструментов и подходов, другие же не против инвестировать определенные ресурсы в обучение нового сотрудника перед работой на боевом проекте.

Как улучшить: читать книги, статьи и документацию по инструментам и общепринятым подходам, разобраться, как устроен выбранный фреймворк и какова его архитектура, узнать, какие правила и ограничения необходимо соблюдать и почему.

Tipical errors on technical interview Noveo Symfony RoR React Redux

Узкий кругозор

Помимо знаний основных технологий (язык программирования, фреймворк, база данных), в разработчиках высоко ценится опыт работы со смежными технологиями. Важно не только хорошо знать свой кусочек, но и понимать принцип работы всей системы в целом, чтобы интегрировать в нее свой кусочек максимально эффективно.

Например, для разработчика PHP плюсом будет знание HTML/CSS, JavaScript, протоколов HTTP/HTTPS, WebSockets, баз данных, отличных от MySQL, серверов очередей (RabbitMQ, ZeroMQ), особенностей проектирования приложений под высокие нагрузки и т.п.

С другой стороны, у каждого инструмента есть своя область применения, и если одни задачи он решает хорошо, то в других может быть неэффективным или бесполезным. Например, тот же PHP не очень удачно подходит для высокопроизводительных микросервисов, в которых помимо скорости также критичен и объем потребляемой памяти. Чем лучше разработчик понимает ограничения своей основной технологии и умеет их обойти с помощью других технологий, тем выше его профессиональный уровень.

Важность: при равных других знаниях и личных качествах работодателю интересней взять кандидата с широким кругозором и знаниями в смежных областях: такой кандидат сможет решать больший спектр задач и не перекладывать ответственность на других людей.

Как улучшить: быть любопытным, расширять кругозор, изучать смежные технологии и инструменты.

Tipical errors on technical interview Noveo HTML CSS JS WebSockets MySQL RabbitMQ ZeroMQ

Безынициативность при решении задач

На собеседованиях, кроме теоретических знаний, часто проверяют и практические навыки. Кандидату предлагают решить прикладные задачи разного уровня сложности. Да, некоторые из них могут быть нетривиальными, плюс в стрессовой обстановке бывает трудно собрать все мысли вместе и найти правильное решение. Тут важно не сдаваться и пробовать размышлять, искать верный путь.

Работодатель обычно смотрит не только на правильность решения, но и на ход мыслей и вопросы кандидата. Поэтому честно признаться, что ты не можешь решить задачу, даже не попытавшись, — это заведомо проигрышный вариант.

Если есть какие-либо вопросы, нужно обязательно задавать их — они помогают оценить, насколько кандидат понимает суть задачи, какие видит подводные камни. В реальной жизни спецификации, задачи не идеальны и могут содержать ошибки, и если разработчик сможет их увидеть до того, как приступить к реализации (или хотя бы в ее процессе), — это будет большим плюсом.

Важность: этот пункт довольно важный, а для разработчика с уровнем выше junior он может быть критичен. В реальных проектах приходится сталкиваться с задачами разной сложности, и работодателю вряд ли понравится, если разработчик скажет, что он не может предложить никакие варианты решения и это тупик.

Как улучшить: собрать волю в кулак и размышлять, задавать вопросы, искать и предлагать возможные решения.

Tipical errors on technical interview Noveo

Отсутствие самостоятельности

Самостоятельность трудно проверить на собеседовании, ведь любой кандидат в какой-то мере может отвечать на вопросы и решать задачи. Но бывают случаи, когда кандидат на довольно простые задачи сообщает, что нужна помощь тимлида. Тогда возникает сомнение: а сможет ли такой кандидат работать самостоятельно и принимать правильные решения?

Безусловно, есть случаи, когда без консультации с другим участником команды не обойтись, но общение будет более продуктивным, если предложить свои возможные решения или хотя бы попытаться разобраться в проблеме самому (и да, этот пункт тесно связан с предыдущим). Цените не только свое время, но и других участников команды.

Важность: зависит от уровня разработчика: для junior это не так критично, а для более опытных ребят это важный момент.

Как улучшить: расширять знания, предлагать и уметь отстаивать свои решения, стремиться разобраться в проблеме самому, прежде чем обращаться к старшим товарищам.

Tipical errors on technical interview Noveo

Низкая производительность

Бывает, что кандидат вроде бы отвечает на вопросы и даже решает задачи. Только вот ответы растягиваются на длительное время, и задача, рассчитанная максимум на 10-15 минут, делается час или дольше.

Если так происходит с большинством вопросов, то для собеседующего это повод задуматься, насколько хорошо такой кандидат впишется в команду и будет эффективно выполнять свою работу.

Важность: этот пункт хоть и один из последних в нашей статье, но довольно критичный, ведь вряд ли работодатель захочет нанимать кандидата, который на типовые задачи будет тратить в 5-10 раз больше времени, чем другие разработчики.

Как улучшить: повышать свою продуктивность, бороться с прокрастинацией, учиться решать задачи эффективнее и с меньшими временными затратами.

Неготовность работать в команде

Понимание кандидатом процесса разработки в целом и своей роли, равно как и роли других участников проекта, в частности, а также умение взаимодействовать с товарищами в рамках этих ролей — качества, которые не всегда можно адекватно оценить на собеседовании. Однако, если кандидат на собеседовании упивается собой, не слушает и не слышит, что ему говорят, и по каждому вопросу имеет свою, по совместительству единственно правильную, точку зрения, — у работодателя звенит тревожный звоночек: а сможет ли такой специалист работать в команде? Сферических разработчиков в вакууме не бывает, и при работе над любым проектом нужно взаимодействовать с людьми — менеджером, заказчиком, другими разработчиками, тестировщиками, аналитиками… Неумение конструктивно общаться у кого-то одного тянет назад всю команду и негативно сказывается на результате.

Важность: значимость этого пункта трудно переоценить. Каким бы замечательным ни был разработчик, если при отличных знаниях и уместном применении их на практике, широком кругозоре и высочайшей производительности он не умеет и/или не хочет работать в команде — все его достоинства теряют силу.

Как улучшить: прислушиваться к другим членам команды, помнить, что работа над проектом — всегда результат совместных усилий.

Идеальных кандидатов не существует, есть те, кто подходят под требования заказчиков, кого можно доучить за разумный срок — и кто совсем не подходит. И чем больше вы работаете над собой, тем выше вероятность стать универсальным кандидатом, который подходит всем! Работайте над собой, улучшайте свои знания и никогда не останавливайтесь на достигнутом — от этого напрямую зависит ваша ценность и крутость для любой компании, и, что еще важнее, — для вас самих. Noveo всегда высоко ценит сотрудников, которые постоянно развиваются и делают этот мир еще немного лучше!

Noveo loves you

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Читайте в нашем блоге

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: