На что смотрят работодатели, когда оценивают ваш код
Новичкам еще сложнее — у них не хватает опыта, чтобы адекватно оценить качество своего кода. Максимум, на что может рассчитывать работодатель, — ссылка на GitHub-профиль, где его ждет пара-тройка учебных задач. Чтобы сэкономить время, руководители IT-отделов начинают с главного: предлагают соискателю написать код.
Одни руководители присылают тестовое задание, чтобы дистанционно оценить уровень знаний кандидата и качество его кода. Другие — чтобы понять, насколько он заинтересован в работе именно в их компании. В обоих случаях выполненное новичком тестовое задание — возможность получить приглашение на собеседование.
«Если меня заинтересовал присланный код, прямое собеседование кандидату гарантировано. Я оцениваю, насколько хорошо разработчик ориентируется в базовых принципах объектно-ориентированного программирования. Правильно спроектированная объектная модель для задачи — огромный плюс для кандидата».
Константин Ян, сооснователь и технический директор CloudPayments
Есть работодатели, которые приглашают на собеседование без тестового. Но и они попросят написать код, если вы засыпетесь на вопросах о конкретном применении инструментов. Адекватный код спасет ситуацию и снимет сомнения.
Обычно в качестве тестовых заданий кандидатам дают абстрактные задачи, а не реальные бизнес-кейсы. По ним работодатель оценивает:
- знание языка/технологий,
- логические способности кандидата,
- его уровень аккуратности и педантичности, читаемость кода.
Сколько у вас времени на выполнение тестового?
Обычно работодатели подбирают такие задачи, которые потребуют у middle-разработчика не больше 7-8 часов, но джуниорам дают больше времени. Постарайтесь прислать результат не позже, чем через 3-5 дней. Помните, что единицы среди работодателей оплачивают выполненное тестовое. Но каждая решенная задача прибавляет вам опыта.
Что важнее, сколько времени вы потратите или как напишете код? Универсальный совет: присылайте код, который решает поставленную задачу, и оформляйте его в соответствии с принятыми в сообществе разработчиков стандартами. Чем быстрее можно разобраться в вашем коде, тем больше у него шансов.
Вы пройдете собеседование, если ваш код:
Работает без ошибок, решает поставленную задачу, покрыт тестами
Некрасивая программа, выдающая правильный ответ, лучше красивой, но нежизнеспособной. Тестирование тоже крайне важно: присылайте программу вместе с результатами тестов.
«Разработчик должен решить задачу, удостовериться в этом и предоставить доказательства».
Павел Романченко, технический директор Центра программных решений, «Инфосистемы Джет», язык программирования — Java
Соблюдает общепринятые принципы:
SOLID — акроним для пяти основных принципов проектирования в ООП: принципа единственной ответственности (Single responsibility), открытости/закрытости (Open-closed), подстановки Барбары Лисков (Liskov substitution), разделения интерфейса (Interface segregation) и инверсии зависимостей (Dependency inversion);
KISS (акроним для «Keep it simple, stupid», то есть призыв не усложнять код),
DRY (акроним для «Don’t repeat yourself», призыв не повторяться) и другие.
«Эти моменты позволяют понять, насколько глубоко человек погружен в тему разработки, как сильно он ей интересуется. Если кандидат, который еще нигде толком не работал, соблюдает базовые принципы написания кода, это хороший знак. Значит, изучал данный вопрос, причем, скорее всего, самостоятельно, потому что в рамках университетских программ на этом редко акцентируют внимание».
Алексей Максимов, руководитель разработки Mediasoft, языки программирования: PHP, JavaScript
Максимально прост
Новички усложняют код. Даже в решении простых задач они стремятся повторить стиль профессионала, используют приемы «из учебника», не до конца понимая, зачем они нужны. Результат выполнения такого кода сложно предсказать: он может выдавать неожиданные ошибки, его сложно читать и тестировать.
«Новичкам кажется, что опытный специалист работает на опережение и поэтому проектирует «на вырост». Начинающие разработчики пытаются предугадать и просчитать все возможные случаи развития системы. Это множит абстракции и лишние архитектурные слои в их коде.
На самом деле, профессионал пишет код для конкретной задачи, и для этого необязательно использовать все известные паттерны и архитектурные решения».
Сергей Козлов, ведущий программист проекта «Айхор Хостинг» компании МАРОСНЕТ. Языки программирования: The Go Programming Language, JavaScript, PHP
Выдержан в едином стиле
Тестовое задание должно соответствовать стандартам оформления кода, принятым в языке программирования. Это не нудное требование преподавателя информатики: стандарты утверждены и используются мировым сообществом программистов. Ширина отступов, регистр переменных, стиль записи комментариев — если все это соответствует стандартам, программу легко читать, не приходится напрягать память и зрение.
«Когда работаешь в команде, помни о том, что твой код будут читать другие разработчики. Смогут ли они быстро понять, что происходит на экране? Внести изменения, не погружаясь глубоко в контекст задачи?»
Илья Гордиенко, Backend-Lead ONDOC. Языки программирования: PHP, Python
Понятен, при необходимости пояснен комментариями
Не стоит комментировать код только для того, чтобы описать, что он делает. Профессиональные разработчики поясняют в комментариях цель создания кода и заложенный в него смысл.
«Часто я решаю тестовое задание и только потом сравниваю свой результат с тем, что прислал кандидат. Поддержка старого кода — самая дорогая часть проекта, поэтому важно уметь сразу писать его понятным другим разработчикам».
Зураб Белый, руководитель группы (TeamLead), практика — Java, «Рексофт»
Если вам тяжело дается тестовое задание, работодатель, скорее всего заметит это. Код, написанный новичком, часто напоминает лоскутное одеяло. Павел Романченко, технический директор Центра программных решений, «Инфосистемы Джет», советует новичкам: «Когда решили задание, отнеситесь к написанному как к черновику и перепишите заново с правильным наименованием и с комментариями. Важно, чтобы за кодом была видна мысль, а не вымученные формулировки».
Если возникли сложности с тестовым: советы
Не уложились в срок? Покажите сделанное.
Ваш потенциал виден даже в функциональности, не реализованной до конца.
«Неважно, почему вы не успели. Покажите то, что уже написано: даже на основании этого кода можно многое понять. Не поленитесь описать в сопроводительном письме или рассказать при встрече, как вы планировали реализовать задачу. Умение продумывать варианты решения и доходчиво их излагать ценится не меньше, чем умение писать код».
Алексей Максимов, руководитель разработки Mediasoft. Языки программирования: PHP, JavaScript
Задавайте больше вопросов. Учитесь у лучших.
Не бойтесь уточнять детали тестового задания. Обращайтесь к более опытным коллегам за советами и идеями. Черпайте вдохновение и знания в качественных источниках. Так вы развиваете мышление и повышаете уровень подготовки.
«Новичкам я советую читать книги и статьи только проверенных авторов. Не бойтесь задавать вопросы и консультироваться с более опытными коллегами. Читайте их код и всегда (даже так: ВСЕГДА) уточняйте, почему сделано именно так, а не иначе, почему выбран именно такой подход, а не другой. Успехов в карьере!»
Зураб Белый, руководитель группы (TeamLead), практика — Java, «Рексофт»
Энтузиазм не менее важен, чем чистота кода!
«Синтаксису, паттернам и best practices можно научить, а вот умению излагать мысли, работать в команде, ответственности и особенно горящим глазам — нет».
Сергей Шитиков, руководитель отдела разработки «Суточно.ру»
Вывод и главный совет: не бойтесь выполнять и присылать тестовые задания. Работодатели закрывают глаза на ошибки, если видят логику в коде. Ваше тестовое задание — отличный повод для личного разговора. Будьте готовы рассказать, почему вы использовали тот или иной прием. Или предложить альтернативное решение, если условия задачи изменятся. Главная цель работодателя — не завалить вас, а понять, как вы думаете.
«На собеседовании я объясняю, что говорить “я не знаю” — абсолютно нормально в рабочей ситуации. Мы каждый день сталкиваемся с уникальными задачами, у нас нет готовых решений. Кандидат должен понять, что академические знания, полученные в учебном заведении, не помогут ему в ежедневной работе. Гораздо важнее научиться думать, рассуждать и искать оптимальные решения».
Константин Ян, сооснователь, технический директор платежного сервиса CloudPayments
Практически все эксперты солидарны в главном: важнее всего в кандидате — умение думать. Всему остальному, при желании, вас смогут научить на новом месте работы. Удачи!