Собеседования для айтишников — Станислав Протасов рассказывает о роли диплома, олимпиадном


Оглавление (нажмите, чтобы открыть):

Собеседование: как выявить крутого программиста?

На одном из собеседований я попросил очень опытного разработчика встроенного ПО написать простую программу, которая переворачивает строку и выводит результат на экран. И он не смог.

Он правда был крут. Ему можно было дать кучу металлолома, и он превратил бы её в робота, который смог бы передвигаться по комнате. Он работал над спутниками, которые были пущены в эксплуатацию и сейчас находятся на орбите.

Но вот так сложилось, что ему никогда в жизни не приходилось выводить результаты на экран.

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

А ведь плохой выбор рекрутера влечёт за собой долгосрочные последствия хотя бы потому, что программист на уровне «ниже среднего» непременно снижает общий уровень команды. И наоборот, несправедливое и необдуманное отсекание великолепного кандидата тоже не принесёт ничего хорошего.

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

Часть I: проверяем свои предположения

Однажды я вместе со своим коллегой собеседовал кандидата. После завершения интервью у меня осталось впечатление, что соискатель вполне неплох, хоть и неидеален. Мой коллега, напротив, был взбешен: «Он наврал насчёт знания технологии Х. Он никогда с ней не работал. Не наш кандидат». Эта технология Х даже не требовалась для данной вакансии. «Но ведь он наврал о ней. Я больше не верю ни слову из его резюме».

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

«Всё написанное в резюме — ложь, пока не доказано обратное».

Если в резюме написано: «Эксперт в такой-то технологии», про себя я думаю, что это означает «знаю название этой технологии». Если в резюме написано «Работал над созданием многопоточной торговой площадки», про себя я замечаю, что это означает «участвовал в выборе цвета фона».

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

Лучше не строить никаких ожиданий, чтобы не разочаровываться. Всё написанное нужно будет проверить.

Как? Очень просто: задать на собеседовании коварные вопросы о каждом указанном навыке или проекте.

Разрабатывал систему реального времени в качестве курсовой работы.

Коварные вопросы: Сколько человек работало с вами в группе? 15? А над чем конкретно работали вы? Над очередью сообщений? Здорово! А расскажите, что происходит, когда высокоприоритетная задача посылает сообщение низкоприоритетной задаче?

Разрабатывал с нуля протокол звуковой передачи для беспроводных систем безопасности.

Коварные вопросы: Сколько человек было в команде? Только вы? Ого! И как проходил процесс тестирования? Вы использовали RTP?

Чинил баги в XYZEngine.

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

Часть II: определяем реальный опыт кандидата

Большой опыт — хороший индикатор крутости программиста. Опытный программист уже насовершал кучу ошибок, и знает, где ещё можно ошибиться. У них уже работает нюх на то, какие требования изменятся, а какие, скорее всего, останутся неизменными. Они знают, когда можно расслабиться, а когда нужно быть педантичным. Это и есть тот настоящий опыт, который увеличивает пропасть между талантами и посредственностями.

Но не каждый опыт одинаково полезен!

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

Узнать о начале карьеры

Есть множество отличных программистов, которые начали кодить при поступлении в интститут. После выпуска у них уже есть несколько лет опыта. А вот множество превосходных разработчиков начали изучать программирование чуть ли не в детстве. У меня есть знакомые, которые начали писать свои первые программы в подростковом возрасте. Эту информацию не указывают в резюме, но её можно выяснить в ходе собеседования:

Как вы попали в сферу разработки ПО?

Какой был ваш первый язык программирования?

Плотность опыта

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

Работа в малых командах/группах;

Работа в большом количестве проектов;

Подробные знания о разных уровнях проекта;

Опыт внесения основного вклада в развитие проекта.

Часть III: подтверждаем опыт соискателя

После определения реального опыта важно подтвердить существующие навыки кандидата. Нескольких минут для тестирования всегда мало, но это всё, что мы можем себе позволить. Мы можем определить ширину и глубину знаний кандидата, задавая вопросы из разных сфер разработки ПО. Конечно, на ваше восприятие навыков соискателя будет влиять собственный опыт. Вы не можете судить о правильности ответов на темы, которые не знакомы лично вам. Поэтому так мало действительно хороших интервьюеров.

Конкретные темы зависят от требований к должности. Темами для беседы могут быть:

структуры данных и алгоритмы;

объекты и наследование, паттерны разработки;

компиляция и исполнение программ.

Каждая тема включает в себя некоторые базовые вопросы (например, «Что такое семафор?»). Эти вопросы должны быть настолько общими, что каждый, кто хотя бы немного работал в этой сфере, сможет ответить. Помимо общих вопросов нужно задать подробные более узкие вопросы. Что-то не так, если вы просите опытного программиста встроенных систем перевести 0х4с в двоичный код, а он пишет: 4 х 16 + 12.

Тест по программированию

Обычно после первых трёх этапов собеседования я уже понимаю, подходит кандидат или нет, но тест по программированию убирает все сомнения.

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

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

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

Порядок вопросов имеет значение

Порядок, в котором вы задаёте вопросы на собеседовании, оказывает влияние на мыслительный процесс соискателя. Например, я задаю вопрос о хеш-таблицах, когда полагаю, что кандидат знает о них. Затем дело доходит до теста, который не имеет ничего общего с хеш-таблицами. В большинстве случаев кандидаты начинают использовать в решении хеш-таблицы. Если я не спрашиваю о хеш-таблицах, кандидаты предлагают более оптимальные решения.

На кандидатов влияет и выбор основного ЯП. Например, вы говорите, что в текущей работе используется Java. Каждый кандидат начнёт клясться и божиться, что он настоящий эксперт в Java, и вообще это его любимый язык. Он будет использовать именно Java во всех тестах, несмотря на то, что не может вспомнить, как в его любимом языке объявляют переменную.

Не замыкайтесь на одном языке

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

Выходим за рамки

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

Данная схема предполагает построение гипотез и использование интуиции. Вам нужно определить, какими чертами должен обладать крутой разработчик. Поэтому вопрос, на который вы отвечаете сам себе, звучит так: «С какой вероятностью ответ кандидата на тот или иной вопрос подтверждает, что он на самом деле прекрасный программист?». 100%-ной вероятности вы не достигнете, но правильно подобранные вопросы помогут вам подобраться к истине немного ближе.

Перевод: Люся Ширшова. По материалам блога Steve Hanov.

Как готовить себя к олимпиадному программированию?

Посмотрите данные темы:
Длинная арифметика
Динамическое программирование
Теория графов
Рекурсия, перебор
Сортировка и последовательности
Комбинаторика
Простая математика
Геометрия
Целочисленная арифметика
Математическое моделирование
Жадный алгоритм
Структуры данных
Двумерные массивы

Почитайте о них, разберите каждую. Месяц — слишком мало для подготовки, но если у Вас школьная олимпиада, то еще ничего.

Архив задач и тренировка здесь:
acmp.ru
acm.timus.ru
Codeforces
Это очень полезные ресурсы (системы проверки), в которые входят очень интересные и трудные задачи, как раз предназначенные для олимпиадного программирования.
Ознакомьтесь здесь:
Олимпиадное программирование для новичков

Набор языков программирования в каждой системе разный. Вот некоторые из них:
Набор яп для тимуса
Для acmp.ru

Ну и конечно, подтяните математику. Без математики далеко не уйдете.

Ответ на Ваш вопрос: для длинной арифметики подошел бы Java.

Какие вопросы задавать программистам на собеседовании

Часто, при собеседовании кандидатов на позиции программистов, сосредотачиваются на технических вопросах, типа «Зачем нужен виртуальный деструктор?», предлагают разобрать какую-нибудь кусочек кода с хитрым синтаксисом, который редко встречается в реальной жизни, или просто дают тестовое задание. В результате какой-нибудь студент-олимпиадник может отлично пройти интервью, а человек с 10 годами работы нет. Между тем, далеко не факт, что студент, начитавшийся книжек, будет эффективно работать, а не тратить время на рассказы неразумному начальству «как правильно программировать» и разработку очередного красивого четырехколесного велосипеда.

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

Список моих вопросов при собеседовании программистов ниже:

  1. Попросить рассказать о разрабатываемом ранее продукте, зачем он и для чего/кого. Если человек реально работал над проектом, то он должен хорошо понимать зачем он, кто его пользователи и т.п.
  2. Что сделал на прошлых местах работы? В резюме часто просто пишут про проект целиком. Возможно, соискатель разрабатывал его архитектура и писал ядро, а может просто нарисовалAboutдиалог.
  3. Какая была роль в команде? Чем занимались другие люди? Интересно узнать, как человек видит себя в проекте и команде.
  4. Какие были процессы разработки? Общий вопрос для начала, чтобы понять направление дальнейшего диалога.
  5. Были ли требования к продукту? Откуда они брались? Были ли аналитики, product manager и т.п.? Оценка умения работать по требованиям, а не городить отсебятину по принципу «я лучше знаю».
  6. Кто осуществлял декомпозицию больших задач на подзадачи? Сразу понятно, какая роль была на прошлой работе.
  7. Кто оценивал трудозатраты по задачам? Часто ли ошибались? Выясняем опыт разработчика в оценке задач, если такого опыта нет, то это не очень хорошо.
  8. Использовались ли Unit Tests? На мой взгляд это полезная практика, уменьшающая число багов. Хорошо, если кандидат ее использовал. К сожалению, часто приходится слышать на собеседовании ответ: «Да я хотел использовать, но времени на написание тестов никогда не выделяли.»
  9. Были ли ночные билды, ночные прогоны автотестов? Показывает, что разработка была не совсем коленочная. Скорее всего, есть привычка не ломать сборку своими коммитами.
  10. Мнение о той или иной процедуре в процессе разработки. Интересно послушать мнение о процессах. Если ответ в стиле: «Начальство самодуры, только мешают работать со своими кодревью», то имеет смысл задуматься ��
  11. Были ли процедуры code review? Приходилось ли быть ревьювером? Если ревьювером быть не приходилось, это показатель не самого высокого уровня.
  12. Использовалась ли система контроля версий? Была ли разработка отдельных фичей в отдельных ветках? Если не использовали совсем, то какой-то совсем анахронизм. Если все делали в одной ветке, то можно предположить проблемы с мержами в будущем и боязнь использования веток.
  13. Что такое TDD? Не все такой подход одобряют, но можно задать кандидату вопрос: «Почему это хорошо это или плохо?»
  14. Были ли процедуры типа Gated check-in, проверка собираемости или тестов при коммитах? Дает понять насколько зрелый процесс разработки был на прошлом месте работы соискателя.
  15. На собеседовании имеет смысл спросить соискателя про отношение к «шаблонам по Александреску» и подобным стили программирования. ПринципKISSникто не отменял ��
  16. Что сам кандидат спросит про работу и процесс в конторе? Показывает заинтересованность в работе, что реально интересует кандидата в новой работе. Некоторым важен процесс разработки, некоторым продукт, некоторым график работы, а есть такие, которым на все пофиг, лишь бы взяли.

Все новости сайта в telegram канале: @pmlife_ru

Как проводить собеседование с IT-специалистами. Рекрутеры советуют, программисты комментируют

Статья в источнике:hr-journal.ru/articles/pp/pp_1291.html

Подбор IT-специалистов — одно из самых сложных направлений рекрутинга. Есть мнение, что эйчарам и айтишникам вообще трудно понять друг друга: HR-менеджеры vs. IT-специалисты. Взаимопонимание отсутствует? Именно поэтому мы решили, что полезно услышать мнение не только рекрутеров, но и представителей со стороны самих IT-специалистов. И попросили программистов прокомментировать отдельные положения статьи. Что же они думают про рекрутинговые технологии?

Мелкишева Оксана, менеджер по развитию агентства рекрутинга «Люди Дела». В прошлом занималась подбором персонала. Сейчас ведёт работу с клиентами, отвечает за продвижение компании, пишет статьи о современном рекрутинге, проводит исследования рынка труда и готовит аналитическую информацию.

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

И тем не менее найти общий язык с «властелинами машин и кода» можно. В этой небольшой заметке нам хотелось бы обратить внимание на ряд основных сложностей, что могут возникнуть у HR’а, который совсем недавно решил окунуться в рекрутинг компьютерных специалистов, и дать ему несколько советов. Сразу стоит заметить, что под «айтишниками» сейчас мы не будем подразумевать специалистов всего пласта IT-структуры, а лишь самых ярких его представителей — программистов и системных администраторов.

Одним из основных препятствий на интервью с айтишником является немногословность последнего. Во-первых, большинство программистов и сисадминов имеют математическое образование, а оно заведомо подразумевает некую лаконичность в общении. Во-вторых, это обусловлено постоянным взаимодействием таких специалистов с компьютером. Ведь если обратиться к тем профессиям, где превалирует общение с людьми, то становится заметным, что их представители легче идут на контакт. Обладатели «общительных» специальностей, как правило, с лёгкостью проходят вопросы, требующие развёрнутого ответа, выясняют важные для себя моменты и подробно рассказывают о себе и своём опыте. С представителями же IT-сферы выигрышным будет полуформализованное интервью, где вопросы цепляются один за другой и задаются с максимальной конкретикой. Привыкший к чёткой логической цепочке при работе с кодом, айтишник также конкретно отвечает на поставленный вопрос и часто недоумевает, если после этого следует поток уточняющих «вопросиков». Поэтому спрашивать рекомендуется максимально точно, открыто и прозрачно, чтобы избежать недопонимания. Также недоумение возникает если, например, сначала спросить о проектах, а после тут же задать вопрос о семейном положении. Некоторые рекрутеры сходятся во мнении, что у айтишников отсутствует навык самопрезентации, поэтому неформализованное интервью будет являться наихудшим из вариантов, так же как и обилие вопросов, требующих от интервьюируемого развёрнутых длительных ответов.

Комментирует Сергей Лаур, программист, руководитель группы разработчиков:

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

Комментирует Андрей Кирьянов, программист:

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

Советуем узнать об уже реализованных проектах, попросить прислать ссылки на них. Да, возможно, вы сами не сможете правильно оценить подобный материал, но HR — лишь промежуточное звено в оценке, этот инструмент позволит вам передать более полную информацию об опыте и проектах руководителю «домашнего» IT-подразделения.

Комментирует Сергей Лаур, программист, руководитель группы разработчиков:

— Да, ссылки на проекты — правильный ход. Но не всегда это возможно. Это зависит от того, чем именно занимается специалист. Проще всего, если речь идёт о веб-разработке, но и тут есть нюансы. И ещё. Лучше всего, чтобы информация шла в письменном виде, иначе эйчар превращается в испорченный телефон, не всегда способный адекватно передать данные. Это так ввиду того, что IT-отрасль очень специфична.

Комментирует Михаил Горшков, программист:

— Главное, чтобы оценка предыдущих проектов не превращалась в разглядывание их «фасадов», за которыми теряется то, к чему непосредственно приложил руку программист. Поэтому подобные материалы оценивать всё же не рекрутеру. К тому же не стоит забывать, что авторство кода и разработки в целом — установить на практике очень трудно. А некоторые исходники и вовсе являются исключительной собственностью прежних работодателей.

Помимо немногословности, к сложностям можно отнести специфичность терминологии, которую вы встретите в резюме и в ходе беседы с кандидатом. Нередко в диалоге возникает «языковой барьер» из-за обилия в речи интервьюируемого англицизмов, профессионального сленга и терминов. HR’у не нужно быть матёрым специалистом во всех языках программирования и на зубок знать содержание системного блока, но подготовку к интервью по незнакомой ранее вакансии никто не отменял. Поэтому нелишне будет заранее проштудировать базовые определения и термины в новой для себя области. Однако не исключено, что некоторые смысловые конструкции всё же могут остаться «в вакууме», так как напрямую программированием рекрутеры всё же не занимаются. Если такая ситуация и возникает, например, в ходе самого собеседования, то крайне не рекомендуется делать вид, что суть той или иной фразы предельно ясна, ведь грамотный IT-специалист раскусит подобные экивоки за секунду. Если знаний в какой-либо области, поднятой айтишником в ходе собеседования, всё же оказалось недостаточно, то не стоит делать вид, что они есть, судорожно перебирая в памяти значения однокоренных неизвестному слов. Можно легко попасть впросак, например, нечаянно перепутав frontend и backend, что, конечно, будет являться обидной ошибкой, из-за которой интересного кандидата могут прибрать к рукам более компетентные рекрутеры-конкуренты. Поэтому лучше всего максимально подробно изучить данную специальность, чтобы минимизировать число подобных оплошностей (мы же не задумываемся над тем, что такое тюнинг и двигатель у автомобиля, хотя и не являемся автомеханиками).

Комментирует Сергей Лаур, программист, руководитель группы разработчиков:

— Вот эта рекомендация — «максимально подробно изучить данную специальность» — позабавила. Добро пожаловать в вуз на несколько лет. И что значит «на зубок знать содержание системного блока»?! Это заблуждение, что рекрутер, не имеющий отношения к отрасли, сможет тем не менее разговаривать с айтишником на одном языке. Именно такие попытки производят очень плохое впечатление. Нахватанность терминов не имеет ничего общего с пониманием. Если человек говорит, что его компетенции — отбор по психологическим качествам, а общение на профессиональные темы будет идти с будущим руководителем — это оптимально. Попытка же рекрутера «оценить профессионализм» айтишника в устной беседе — по моему мнению, профанация и гордыня. Когда моему отделу нужны сотрудники, я именно так и стараюсь договориться с нашими эйчарами: всю психологию и прочую корпоративность можете смотреть вы, а подходящих кандидатов разговаривать о работе приводите ко мне.

Комментирует Андрей Кирьянов, программист:

— Очень важно, чтобы HR-специалист, работающий с IT-вакансиями, всё же был в курсе дел и современных тенденций в отрасли. Когда возникает лишнее, «глухонемое» звено в собеседовании между мной и, например, руководителем группы разработки, мне будет очень неприятно заново рассказывать последнему о моих знаниях и достижениях. Обычно HR с умным видом выслушивает меня, а потом мне приходится всё повторять. Цените, пожалуйста, время кандидатов на трудоустройство.

Комментирует Михаил Горшков, программист:

— Лучшей для рекрутера подготовкой к интервью по подобным вакансиям, полагаю, будет беседа со специалистом «домашнего» IT-подразделения, обсуждение с ним вида анкет, где кандидаты указывали бы уровень владения интересными работодателю инструментами и технологиями, на основании которых можно было бы готовить более конкретные вопросы для второй беседы. Или даже составление списка узкоспециальных вопросов на первую, ответы на которые после собеседований направлялись бы для оценки специалисту «домашнего» IT-подразделения. А если есть возможность, то лучше и первое интервью проводить непосредственно в его присутствии.

Не стесняйтесь попросить специалиста уточнить, что он имел в виду: как правило, наиболее подробно айтишники готовы объяснять премудрости своей работы «простым смертным». Позвольте специалисту поговорить на любимую тему, и будете вознаграждены. К тому же без специфического опыта в вёрстке сайта или внедрения какого-либо ПО гораздо проще оценить кандидата по его собственным рассказам о том или ином случае, произошедшем «на производстве», проблеме и способе её решения.

Ведь айтишники — народ творческий, поэтому задавая простые лаконичные вопросы, можно попробовать облечь их в творческую форму. Например, вместо вопроса: «Что такое обфускация?» можно спросить: «Объясните ребёнку, что такое обфускация кода: простыми словами, чтобы даже он понял» — это позволяет оценить, знает ли собеседник теорию, может ли простым языком рассказать о своей работе, объяснить сложную терминологию. На IT-рынке есть огромное множество гуру кода, которые на собеседовании не могут раскрыться в силу личностных особенностей, часто обусловленных профессиональной деформацией. Очень часто действительно гениальные кодеры «срезаются» на этапе интервью, так как являются весьма закрытыми людьми. Поэтому вопросы в креативной обёртке помогают сформировать интерес у кандидата, расположить его к себе нетипичным подходом к интервью.

Комментирует Артём Андреев, программист:

— Кстати, «творческость» айтишников — ещё один миф. Творческие — дизайнеры, иллюстраторы, писатели. У нас же просто другой подход. То, что воспринимается как креатив людьми со стороны, внутри IT-отрасли — просто норма.

Комментирует Сергей Лаур, программист, руководитель группы разработчиков:

— «Гениальные кодеры» — уже показывает, что понимание темы, скажем так, неайтишное. А вот вопросы в «креативной обёртке» напрягают. Чаще всего это значит, что сейчас рекрутер начнёт в сотый раз задавать вопрос из арсенала Microsoft: почему люки круглые, сколько теннисных мячиков поместится в боинг и прочее. Это уже давно не креатив, а его противоположность. Но может быть, автор что-то другое имела в виду, все рекрутеры разные, как и айтишники, вообще-то.

Комментирует Михаил Горшков, программист:

— С тем, что айтишники — народ во многом творческий, согласен. Вспомнить хотя бы то, что среди нас очень много дауншифтеров, что, в свою очередь, весьма роднит нас с представителями творческих профессий.

А что касается «гениальных кодеров», то программиста всё же определяет не богатый опыт написания кода, а умение думать так, что любой код получается оптимальным, «правильным». Поэтому программисту просто необходимо иметь хорошее абстрактное мышление — его наличие и нужно проверять, даже без привязки к низкому уровню, к коду (эйчар вполне способен к этому подготовиться). Ведь не умея мыслить системно: минуя частности, находить отправные точки для решения самых нестандартных задач, — программист остаётся лишь обычным кодером — вузовским полуфабрикатом, компилятором блоков чужих универсальных решений и «золотых» алгоритмов. Потому и «мелкософт», и другие крупные компании такое место и отводят на интервью нестандартным вопросам, что хотят на ранних этапах отбора выявить незашоренных логиков и просто мыслящих нешаблонно, пусть и делается это средствами высосанных из пальца задач, безразборное, безответное, без обратной связи решение которых эту зашоренность у большинства кандидатов и создаёт… Тут при трудоустройстве предыдущий опыт не всегда всё решает. А подходящего, но не совсем готового кандидата компании (вроде Microsoft) могут себе позволить подтянуть основательно, доучить чему нужно, потратиться на него. Они-то уж точно знают, что трудно представимы в качестве стартовой площадки.

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

По нашему опыту, в оценке мотивации кандидата из этой сферы наиболее удачными являются вопросы о том, какие проекты для него интересны, какие рабочие условия будут комфортны, каковы зарплатные ожидания — то есть о том, что действительно важно айтишнику. Ни в коем случае не спрашивайте: «Кем Вы видите себя через 10 лет? Почему Вы выбрали нашу компанию? С чем связано Ваше решение? Почему мы должны взять Вас на работу?»

Комментирует Артём Андреев, программист:

— Да, верно, согласен на все сто. И немного дополню. Спрос на программистов сейчас очень высок, таково состояние рынка труда. Поэтому актуальны не только вопросы, но и ответы кандидату. Например, мне интересно услышать, почему я должен выбрать именно вашу компанию. Это становится реальной проблемой, когда у тебя 3–4 серьёзных предложения от работодателей.

Мастер Йода рекомендует:  Стало возможным оценить эффективность сайта своими силами

Комментирует Михаил Горшков, программист:

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

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

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

2. Избегайте абстрактных вопросов: как при оценке мотивации, так и навыков. Уменьшите количество вопросов, которые требуют от кандидата длительных ответов-рассказов.

3. Фантазируйте, придумывайте необычную подачу обычным вопросам (конечно, не теряя при этом присутствия логики и структуры).

4. Изучайте терминологию. Важно углубится в новую для вас сферу, несмотря на кажущуюся сложность формулировок и терминов.

5. Не старайтесь придумывать на ходу объяснения терминам, использованным IT специалистом. Лучше переспросить, чем упустить ценный кадр.

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

Комментирует Сергей Лаур, программист, руководитель группы разработчиков:

— По этим 5 пунктам я не буду высказываться, основное уже сказал выше. Желаю эйчарам удачного рекрутинга, а всем айтишникам — найти суперского работодателя. И пусть рекрутеры и IT-специалисты научатся лучше понимать друг друга 😉

Мелкишева Оксана, менеджер по развитию агентства рекрутинга «Люди Дела»
Источник: Журнал «Работа с персоналом»

Собеседование: 8 самых распространенных ошибок программистов

Эта статья уникальна тем, что все описанные ошибки являются выводами по результатам статистического исследования более 20 000 интервью, смоделированных на тренировочной вэб-платформе, предназначенной для тренировки навыков прохождения собеседования при устройстве на работу.

Изучим ошибки и поймем, как их избежать

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

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

Мы уверены, что вы бы провели полномасштабное статистическое исследование. Именно потому, что у нас такая возможность была, мы за это и взялись.

Мы изучили более 20 000 интервью, которые проводились на нашей платформе для собеседований с программистами Pramp. Рассмотрели взаимные отзывы, сгруппировали их по тематике и выявили статистически значимые тенденции.

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

В конце вы найдете описание методологии, примененной нами для написания статьи.

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

Давайте сначала бросим взгляд на проблему с высоты птичьего полета:

Общее количество всех столбцов составляет более 100%, поскольку некоторые отзывы описывают более одной ошибки.

#1: Написание кода до записи наброска решения

Частота ошибки на собеседовании: 20.66%.

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

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

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

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

Если вы потерялись и не можете сдвинуться с места, вот несколько отличных советов о том, как сдвинуться с мертвой точки в процессе прохождения технических собеседований.

#2: Слабые знания основ Computer Science

Частота ошибки на собеседовании: 20.05%.

Понравится вам это или нет, но большинство ключевых тем собеседований с программистами сегодня по-прежнему вращаются вокруг проблем, связанных с структурами данных и алгоритмами (DS&A). Это справедливо как для стартапов так и крупных компаний, таких как Dropbox, Airbnb, Uber & Palantir и, конечно же, для таких гигантов, как Google, Facebook, Amazon & Apple.

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

Совет. Потратьте какое-то время на изучение структур данных и алгоритмов. Это поможет не только в программировании, но и в профессиональном росте. Понимание базовых DS&A является важной составляющей при разработке любого программного обеспечения.

Примечание переводчика: в англоязычной литературе DS&A — аббревиатура для фразы Data Structures & Algorithms – структуры данных и алгоритмы.

Помимо Pramp.com, вот список ресурсов, которые мы рекомендуем:

  1. Отличный курс от Courcera, предоставляющий всю важную информацию об алгоритмах и структурах данных, необходимую каждому серьезному программисту: Алгоритмы, часть 1, Алгоритмы, часть 2.
  2. «Cracking Coding Interviews» Гейла Лаакманн Макдауэлла — хорошая книга, в которой есть примеры задач, решения и рассказы о том, как разные компании подходят к найму.
  3. Два хороших бесплатных учебных курса, посвященных тому, чтобы помочь вам добиться успеха в техническом собеседовании:
  • Подготовительный курс по техническому собеседованию от Udacity & Pramp
  • Подготовка к собеседованию по программной инженерии от Coursera

#3: Успокойтесь

Частота ошибки на собеседовании: 15.80%.

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

Совет. Самое распространенное когнитивное искажение – думать, что ваши мысли очевидны и понятны для других. Выполняя задачу, объясняйте каждый шаг рассуждений. Говорить и писать код одновременно для многих из нас не является естественным. К счастью, есть отличная платформа, которая поможет вам практиковаться :). Если волнение мешает правильно высказывать мысли, можете попробовать эти методы, чтобы овладеть собой.

«Скажи мне, что такое алгоритм».

#4: Слабое знание языка программирования

Частота ошибки на собеседовании: 12.56%.

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

Однако, если вы не справились с такими элементарными вещами, как, например, управление памятью в C, наследованием в Java, генератор списков в Python или замыкания в JavaScript, ваше собеседование обречено на провал. Хотя подобные ошибки обычно совершают новички, она также распространена и среди специалистов из академической среды, имеющих глубокие теоретические знания, но скудные практические инженерные навыки.

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

Если это не так – например, если вы проходите собеседование на позицию фронтэнд-разработчика, где требуется знание JavaScript, заранее потренируйте навыки программирования на этом языке.

Изучение книг здесь сильно не поможет, вам нужно будет набить руку. Запрограммируйте несколько проектов, внесите свой вклад в открытый исходный код или, еще лучше, сделайте то и другое.

Разработка собственного проекта – единственный способ на практике освоить язык программирования. Нет идей? Вбейте простой поисковый запрос в Google.

#5: Отсутствие тестирования

Частота ошибки на собеседовании: 10.33%.

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

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

Совет. Рекомендуется трижды использовать тесты во время собеседования. В первый раз – сразу после того, как ваш интервьюер закончил задавать вам вопросы по вашему коду. Используйте один-два примера, чтобы проверить, что вы поняли вопрос (подробнее см. # 6 ниже). Второй раз после того, как вы набросали свое решение. Используйте нетривиальный тестовый пример, чтобы вместе с интервьюеров пройтись по вашему псевдокоду и проверить его правильность. Наконец, как только вы закончите программировать свое решение, проверьте еще раз, что в вашем коде нет ошибок.

#6: Неправильное понимание вопроса

Частота ошибки на собеседовании: 9.11%.

Среди всех перечисленных нами ошибок избежать эту легче всего. Довольно удивительно, что около 9% всех кандидатов все еще совершают эту ошибку.

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

Совет. Первое, что вы должны сделать после того, как ваш интервьюер закончил объяснять свой вопрос ‑ повторить этот вопрос своими словами, чтобы убедиться, что вы все правильно поняли. Если вы ошибаетесь, вам подскажут. Это избавит вас от ошибочного ответа на совершенно другой вопрос. Иногда мы слишком поздно понимаем, что совершили ошибку и времени на исправление уже не остается.

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

#7: Игнорирование граничных случаев

Частота ошибки на собеседовании: 8.31%.

Не учет граничных случаев, может являться признаком неразвитых навыков решения задач программирования. Во-первых, если ваш алгоритм не обрабатывает все корректные данные — решение является неполным. Во-вторых, не учитывая граничные случаи, вы упускаете возможность придумать более удачный алгоритм решения. Например, в задаче «Поиск недостающего числа» прямое («силовое», грубое) решение заключается в том, чтобы вычесть сумму входного массива из общей суммы (1, …, n). Однако при достаточно большом «n» решение будет неверным из-за переполнения целочисленного значения. Осознание этого граничного случая заставит вас подумать о более подходящем решении. И действительно, используя побитовый оператор XOR, мы можем разработать решение, которое больше не подвержено переполнению (более подробно см. второе решение в ссылке выше).

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

#8: Сырой код

Частота ошибки на собеседовании: 7.69%.

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

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

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

  • Использование непонятных имен для переменных, функций и т.д. Обычно это использование одиночных символов в качестве имен переменных. Или вызов функции с именем«func». Особенно внимательным нужно быть спортивным программистам, поскольку они привыкли использовать сверхкороткие имена в своих программах, чтобы быстрее кодировать. Это не сработает во время собеседования.
  • Непоследовательный стиль кодирования. Несмотря на то, что у каждого имеется свой стиль программирования, следует избегать смешения различных стандартов оформления программного кода. Например, использование различных соглашений об именах. Или использование табуляции в одних частях вашего кода и использование пробелов – в других. Вам следует придерживаться определенного стиля. Например, если вы поместите открывающую фигурную скобку в одну строку, не помещайте затем ее с новой строки. Подобных примеров можно приводить множество, но я думаю, вы уже поняли.
  • Использование безопасного программирования, такого как NULL-проверки и множество особых случаев, не задумываясь о том, нужны ли они. Это приводит к более сложному коду, который трудно понять и отладить.

Совет. Буду краток. Используйте здравый смысл, чтобы придумать «говорящие» имена там, где это необходимо, выбрать один стандарт кодирования и придерживаться его на протяжении всего собеседования. Кроме того, вы хотите, чтобы ваш код был понятным. В противном случае ваш интервьюер может начать сомневаться в ваших знаниях языка программирования.

Выводы

Если вы дочитали статью до этого места, вы, возможно, заметили, что значительная доля всех ошибок, допущенных кандидатами, имеет мало общего с техническими навыками. Фактически, не технические ошибки (№ 1, № 3, № 6) составляют 44% всех ошибок.

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

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

Именно этим мы занимаемся в Pramp. Мы бесплатно предоставляем комплексную площадку для проведения собеседований. Она уже помогла тысячам программистов избежать ошибок на собеседованиях. Готовы ли вы к собеседованию?

Вот пример практической сессии собеседования по Pramp.

Методология

Чтобы идентифицировать ошибки и рассчитать их частоту, мы рассмотрели данные о последних 20 000 интервью с программистами, проведенных на Pramp.

Сначала о самой платформе. Pramp — бесплатная «точка-точка» площадка для тренировки и самопроверки программистов. Проще говоря, мы проверяем разработчиков программного обеспечения с помощью видеочата и совместно используемой среды программирования, чтобы имитировать проведение собеседований по программированию.

Каждый такой сеанс интервью является двунаправленным. Это означает, что оба эксперта беседуют друг с другом в одной сессии. Каждый из них выбирается случайным образом, быть ли интервьюером или кандидатом, а затем через 30-45 минут они меняют свои роли – интервьюер становится кандидатом, а кандидат становится интервьюером.

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

Часть участников формы обратной связи заполняется в конце каждого сеанса собеседования.

Мы проанализировали ответы в более чем 20 000 интервью на вопрос «Что было не так хорошо».

Первым шагом в нашем анализе было выяснение повторяющийся «категории ошибок» в ответах пользователей на вопрос «Что было не так хорошо?» В форме обратной связи. С этой целью мы выбрали случайные 1 068 интервью из 20 000 интервью. При таком размере выборки результаты статистически значимы (уровень достоверности 95% и допустимая погрешность менее 3%). Затем мы перечислили вручную эти 1 068 ответов.

Мы определили девять категорий. Восемь из них ‑ упомянуты в статье. 9-я категория была «Другая». Эта категория включала отзывы, которые либо не говорили ничего значимого (например: «Вы отлично поработали, мне нечего добавить», «Ничего не могу придумать» и т.д.), или что указывает на проблему, частота которой не была статистически значимой (например,

1% всех обратных связей относились к скорости кодирования сверстников). При расчете распространенности ошибок мы исключили все отзывы, которые попали под категорию «Другие».

Предполагая, что интервью на Pramp является хорошей моделью реальных технических интервью (а у нас нет оснований полагать противное), размер выборки в 1 068 интервью также является репрезентативным и для общего числа технических интервью, проводимых в «реальном мире».

«За время, которое обычный программист тратит на понимание задачи, спортивный ее уже решает»

В сентябре российские школьники привезли две золотые и две серебряные медали с Международной олимпиады по информатике IOI 2020 (International Olympiad in Informatics). Результат неплохой, и это неудивительно: нашим командам это не впервой. Россия держится в пятерке самых успешных команд по числу и достоинству медалей. IOI – вершина олимпиадной цепочки, которая начинается со школьного этапа Всероссийской олимпиады. Как она устроена, кто и как пробивается к вершинам и как России удалось занять вторую строчку в общем количестве золотых медалей после Китая, читайте в материале Indicator.Ru.

Что такое спортивное программирование

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

«За время, которое обычный программист тратит на понимание задачи, спортивный программист ее уже решает», — комментирует технический координатор сборов перед IOI 2020 года, главный судья сборов по программированию Moscow Workshops ICPC Олег Христенко.

Технический координатор сборов перед IOI 2020 года Олег Христенко

Александр Ломакин/Центр развития ИТ-образования МФТИ

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

Как устроен мир спортивного программирования

Путь школьника в спортивное программирование начинается с этапов Всероссийской олимпиады школьников: школьного, муниципального, областного и заключительного. По результатам Всероса и с учетом других заслуг Центральная предметно-методическая комиссия Министерства просвещения отбирает около 20 человек в национальную сборную для поездки на Международную олимпиаду — IOI. Кроме того, школьники участвуют во Всероссийской командной олимпиаде по программированию (ВКОШП) и в ряде перечневых олимпиад таких, как олимпиада «Ломоносов», Открытая олимпиада школьников по программированию, «Когнитивные технологии», «Технокубок» и другие. Перечневые олимпиады бывают трех уровней. Из них только первый обеспечивает поступление в определенные вузы без экзаменов или 100 баллов по информатике за ЕГЭ. Олимпиады второго уровня дают 100 баллов по ЕГЭ, но только в определенных вузах. Льготы по результатам олимпиад третьего уровня каждый вуз определяет сам.

Многие продолжают занятия спортивным программированием и в студенчестве. В самом масштабном соревновании по олимпиадному программированию для студентов — чемпионате мира International Collegiate Programming Contest (ICPC) — за год на отборочных этапах участвует 50 тысяч студентов со всего мира. В отличие от Всероссийской олимпиады и IOI, здесь ребята соревнуются не индивидуально, а в составе команд из трех человек. По правилам ICPC проходят и локальные соревнования при университетах всего мира.

Помимо вузовских олимпиад, существуют популярные онлайн-сообщества с регулярными соревнованиями, в которых участники в личном зачете борются за место в рейтинге. Например, TopCoder или российская платформа Cofeforces.

Свои чемпионаты устраивают и крупные IT-компании. Чаще всего в них предлагается решить «приближенные» задачи. Как правило, у них нет конкретного решения. Участники этих соревнований должны разработать некий продукт, который ближе всего подошел бы к идеальному решению этой проблемы. Обычно такие соревнования проходят в несколько отборочных туров в режиме онлайн, а в финале лучших собирают на очной площадке.

Экскурс в историю

Первые соревнования по спортивному программированию проходили среди студентов. Чемпионат ICPC в первый раз был органиован в 1977 году в Атланте (США). Он начинался как соревнование между четырьмя американскими университетами при поддержке ассоциации вычислительной техники ACM и только в 1990 году вышел на международный уровень.

Участники 13-го чемпионата по спортивному программированию ACM

Идею организовать соревнование среди школьников на двадцать четвертой Генеральной конференции ЮНЕСКО предложил болгарский профессор Благовест Сендов. В болгарском городе Правец, и состоялась первая олимпиада. В ней приняли участие 46 участников из 13 стран. Лучший результат и в индивидуальном, и в командном зачете показала принимающая страна.

С 1989 года Международная олимпиада по информатике IOI проходит ежегодно. В 1991 году соревнования состоялись в СССР, в Минске, и после этого Россия принимала IOI единственный раз – в 2020 году. Делегатов со всего мира встречали в Татарстане, в Казанском федеральном университете. Тогда России, как принимающей стороне, разрешалось выставить на соревнования не одну, а сразу две команды – одна соревновалась «в зачет», вторая – «не в зачет». Наши школьники выиграли три золотые, четыре серебряные и одну бронзовую медали и в итоге заняли второе место после Китая.

Шансов на то, что Россия снова примет IOI немного, но такие случаи были — дважды проводилась олимпиада в Болгарии и Греции. Всего принимали у себя олимпиаду 28 стран.

Как устроена IOI

От каждой страны на IOI отправляется команда из четырех школьников, которых каждая страна выбирает сама. В России — по результатам заключительного этапа Всероссийской олимпиады и решению специальной комиссии Министерства просвещения. Соревнования проводятся в два дня. В каждый из них ребятам дается пять часов на решение трех алгоритмических задач. Чтобы участники освоились и познакомились с правилами, за день до начала олимпиады они решают двухчасовой пробный тур по задачам, которые известны заранее.

Олимпиада проходит на английском языке, но по заявке участников им могут положить в конверт с английским заданием еще и версию на их родном языке. Решать задачи олимпиады можно на любом из трех языков программирования: C++, Pascal или Java. Каждую задачу можно «сабмитить», то есть посылать ее решение в систему, максимум 50 раз. В системе ребята сразу видят статус своего сабмита — прошло решение или нет. Программа выдает им короткий автоматический ответ о наличии ошибок, и участники могут их исправить. На количество полученных баллов влияет способ решения задачи и количество потраченного на это времени. Из нововведений этого года – новые рекомендации по подаче уточняющих вопросов к задачам. Во время соревнования участник может попросить пояснения задачи от организаторов и получить ответ в формате «да», «нет», «без комментариев», «ответ есть в условии задачи» или «invalid question». Это значит, что вопрос надо переформулировать.

Сборы будущих участников олимпиады в МФТИ

Центр развития ИТ-образования МФТИ

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

Общаться нельзя ни лично, ни по телефону, ни в социальных сетях или по e-mail. Запрещается говорить о задачах с теми, кто их еще не видел, чтобы они не передали их участникам. Нельзя даже появляться в местах, где живут участники команды во время соревнования. Обычно олимпиада проводится либо в университетах, либо в выставочных центрах, а размещают ребят в общежитиях или отелях отдельно от остальной делегации.

По итогам решения задач, уже в конце олимпиады, половина участников награждаются медалями. На этом официальная часть в отношении результатов IOI заканчивается. Но многие страны подсчитывают и свой рейтинг по количеству и весу медалей или общему количеству баллов, которые набрали все участники сборной. В рейтинге по медалям наибольший вес имеет количество золотых медалей в команде, затем серебряных, а потом уже бронзовых. То есть «два серебра-две бронзы» будут ниже, чем «золото-три бронзы».

Руководитель национальной сборной на IOI 2020, проректор МФТИ Алексей Малеев поясняет, что соотношение медалей помогает оценить распределение сил между странами год от года. А сравнение количества баллов картину не проясняет: «По баллам результаты сравнивать сложно, каждый раз новые задачи. Если дать легкие задачи, значит будет в среднем больше набрано баллов, если сложные – меньше».

О задачах олимпиады

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

Одну из задач первого тура подготовил россиянин Михаил Пядеркин, который сам был медалистом IOI и двукратным вице-чемпионом мира в командных студенческих соревнованиях по программированию ICPC. В его задаче школьникам нужно было написать программу, которая бы рассаживала гостей в помещении в определенном порядке.

В каждой задаче на IOI выделены подзадачи, за решение которых можно набрать баллы, даже если школьник не справился с задачей целиком. Об этом рассказывает Олег Христенко: «На IOI решение задачи оценивается в баллах от 0 до 100. Баллы выставляются системой по результатам запуска программы участника на тестах. В обычных задачах оценка за каждый тест — «верно» или «неверно». Полный балл выставляется за прохождение всех тестов. За прохождение определенных групп тестов, обычно соответствующих более простым подзадачам, выставляются частичные баллы».

Один из участников российской команды — Егорь Лифарь — на сборах

Центр развития ИТ-образования МФТИ

При этом так называемые оптимизационные задачи оцениваются по-другому: «Там результат проверки задачи на каждом отдельном тесте приносит какие-то баллы, например, от 1 до 100, а итоговый балл за задачу вычисляется по разным схемам: например, в каких-то задачах он равен среднему баллу за все тесты, в каких-то — наименьшему из всех. Могут быть и другие схемы — это все зависит от изобретательности авторов».

Христенко отметил, что на школьной международной олимпиаде по информатике задачи более разнообразные, чем на студенческой: «Бывают интересные задачи с открытыми тестами, задачи на encoder-decoder, когда одна и та же программа участника должна работать в двух режимах».

Как это было в 2020 году

Нынешняя олимпиада в Японии стала тридцатой. Она проходила в Цукубе, научном городке вблизи Токио, с 1 по 8 сентября 2020. В ней приняли участие 335 участников из 87 стран. Абсолютный победитель IOI этого года, член сборной США Бенджамин Ци был единственным среди участников олимпиады, кто носит титул «Легендарный гроссмейстер» в одном из самых популярных сообществ олимпиадных программистов Codeforces. Это означает, что он входит в число 19 программистов, которые набрали на Codeforces более 3000 баллов в регулярных соревнованиях. Сейчас Бенджамин Ци — восьмой в этом рейтинге.

В российскую сборную вошли выпускник Общеобразовательной школы-интерната «Лицей имени Н.И. Лобачевского» КФУ Рамазан Рахматуллин, 11-классник московской школы-интерната имени А.Н. Колмогорова МГУ имени М.В. Ломоносова Владимир Романов, выпускник питерского «Президентского физико-математического лицея № 239» Михаил Анопренко, а также самый юный участник команды – девятиклассник из московской Школы «Интеллектуал» Егор Лифарь.

«Для решения задачи требуется изобрести верный алгоритм, а также правильно и аккуратно реализовать его в программе. Оба этапа важны: не зная алгоритм, нельзя написать программу, но без навыков программирования даже гениальная идея сама по себе не принесет баллов. В некоторых задачах придумать решение сложнее, чем потом написать программу, а в некоторых наоборот: идея решения на поверхности, но кода нужно очень много. В задачах олимпиады прошлого года гораздо сложнее было изобрести правильную идею, чем писать код. В этом году баланс чуть сместился в сторону реализации, написания больших программ, но и дойти до идеи решения тоже было непросто. С отборочными мы хорошо угадали. На отборах было несколько задач, похожих на те, что были в итоге на Межнаре», – рассказал один из тренеров команды, финалист престижных индивидуальных соревнований по спортивному программированию Topcoder Open и Russian Code Cup, тренер Moscow Workshops ICPC и команд-чемпионов ICPC Михаил Тихомиров. Кроме него команду готовил и медалист ICPC, тренер шестикратных чемпионов ICPC, судья Всероссийской олимпиады по информатике Андрей Станкевич. Ранее в течение многих лет команду тренировал Владимир Кирюхин, он совсем недавно передал ее новому поколению.

Мастер Йода рекомендует:  Создание ландшафта на Unity за 24 часа

Как ребята готовились

До того, как попасть на сборы перед IOI, школьники проходят четыре этапа Всероссийской олимпиады школьников: школьный, муниципальный, два тура областного и два тура заключительного. Кроме того, они участвуют в двух профильных сменах образовательного центра «Сириус»: в марте там готовили призеров регионального этапа Всероса к заключительному этапу, в июне —призеров и победителей заключительного этапа к Международной олимпиаде. Дальше 20 участников, отобранных ЦПМК, приезжают на сборы, которые в этом году впервые организовал Физтех.

«Я много участвовал в отборах в сборную, где-то четыре раза, это больше, чем у остальных, – рассказал Рамазан Рахматуллин. – Я очень хотел победить, но, в первую очередь, хотел пройти в сборную, победить уже потом».

Для подготовки школьников к IOI в МФТИ также организовывают лагерь Moscow Workshops Juniors (Зимняя компьютерная школа), в котором школьники из разных стран могут учиться информатике и готовиться к олимпиаде. Трое из четырех участников российской сборной этого года, вся сборная Белоруссии и Казахстана, а также участник сборной Греции тренировались в этом лагере.

Школьники готовились, решая задания десяти соревновательных этапов, четыре из которых были отборочными, а остальные шесть состояли из задач прошлых лет.

Сборы команды в МФТИ

Центр развития ИТ-образования МФТИ

Результаты олимпиады: мы и они

В этом году были награждены 167 участников из 335. 29 золотых медалей вручили тем, кто набрал 336 баллов и больше, 55 серебряных – тем, чей результат перевалил за 272 балла, и 83 бронзовые медали – тем, кто преодолел границу в 187 баллов.


Были среди участников и те, кто не решил ни одну задачу. А вот победитель IOI, Бенджамин Ци, решил четыре задачи из шести на максимальные 100 баллов и в сумме набрал 499 баллов из максимальных 600. В этом году впервые удалось завоевать два золота Грузии, пока это лучший результат страны за всю историю выступлений. В медальном зачете хорошо выступила Белоруссия, завоевав две золотые и две серебряные медали. Благодаря этому в общекомандном зачете они поделила с Россией 4-5 место. За Беларусь с 2006 по 2012 год выступал легендарный олимпиадник Геннадий Короткевич из Гомеля, что много лет выводило страну в лидеры IOI. Короткевич был абсолютным победителем IOI трижды — с 2009 по 2011 годы, еще три раза брал золото и один раз серебро.

Любопытно, что впервые за историю IOI вторая команда принимающей олимпиаду страны (в этом году — Японии), которую стране можно выставлять для соревнования вне конкурса, выступила лучше первой — как по баллам, так и по медалям: одно золото, два серебра и одна бронза против одного золота, одного серебра и двух бронз.

В нашей сборной места и медали распределились таким образом:

Рамазан Рахматуллин — 11 место (золото),

Владимир Романов — 20-21 место (золото),

Михаил Анопренко — 33-36 место (серебро),

Егор Лифарь — 60-64 место (серебро).

Российская команда на награждении. Слева направо: Егор Лифарь, Владимир Романов, Рамазан Рахматуллин, Михаил Анопренко

«Ребята хорошо выступили. Но есть и что доработать, — отметил Михаил Тихомиров. — У кого-то было хорошо с придумыванием идей, но плохо с аккуратным написанием кода. А у кого-то наоборот. Надо, чтобы все было хорошо. У двоих из ребят есть еще несколько лет для участия в IOI, и мы теперь еще лучше понимаем, что с ними делать».

Бонусы

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

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

Итоги разных стран на IOI

Среди лидеров Международной олимпиаде из года в год остаются Китай, США, Республика Корея, Иран и Россия.

Таблица с результатами российских сборных за последние 5 лет и сравнение с другими странами

Год, место Участники от России Их баллы Призеры и Россия
2020, Цукуба, Япония Рамазан Рахматуллин 383 1. Китай
Владимир Романов 353 2. Республика Корея
Михаил Анопренко 326 3. США
Егор Лифарь 294 4-5. Россия и Белоруссия
2020, Тегеран, Иран Владимир Романов 373 1. Япония
Денис Шпаковский 350 2. Китай
Егор Лифарь 310 3. Россия
Александра Дроздова 275
2020 (Казань, РФ) Владислав Макеев 557 1. Китай
Михаил Путилин 531 2. Россия
Григорий Резников 432 3. Иран
Станислав Наумов 370
Денис Солонков 390
Александра Дроздова 363
Михаил Анопренко 335
Асхат Сахабиев 312
2015, Алма-Ата, Казахстан Михаил Ипатов 561 1-4. Южная Корея, Китай, Россия, США
Владислав Макеев 505
Михаил Путилин 498
Николай Будин 335
2014, Тайбэй, Тайвань Николай Калинин 556 1-2. Китай, США
Николай Сивухин 454 3-5. Австралия, Россия, Иран
Константин Семенов 388
Никита Уваров 365

По числу золотых медалей IOI Россия находится на втором месте после Китая, опережая США, Польшу и Республику Корея.

Страна Принимала IOI Золото Серебро Бронза Итого
Китай 2000 81 26 12 119
Россия 2020 58 38 12 108
США 2003 49 34 16 99
Польша 2005 40 39 30 109
Республика Корея 2002 39 38 26 103

На студенческих соревнованиях по спортивному программированию ICPC список стран-лидеров похожий, но Россия уже сильно опережает другие страны. С 2000 года российские студенты на ICPC завоевали 32 золотые медали. Для сравнения: студенты из Китая всего 13 раз удостаивались золота за этот период, европейские участники без учета России — 11, США — всего 6.

Казалось бы, странно: на студенческих олимпиадах наши ребята выступают намного лучше, в чем же дело на школьных соревнованиях? Алексей Малеев считает, что все дело в разнице системы подготовки и дефиците кадров в учительской среде. «Разрыв в уровне преподавания информатики в российских школах огромный. Москва выставляет иногда по 70 человек на заключительный этап Всероса, а есть регионы, от которых и одного человека не могут отправить. Но даже московские школьники порой не добираются до такого учителя, который мог бы вытащить их на абсолютное чемпионство в мире», — объясняет он.

Он также пояснил, что в России очень сильное университетское сообщество, и многие студенческие тренировки проводятся совместными усилиями. Есть международные сборы по спортивному программированию Moscow Workshops ICPC. Сильные тренеры из разных вузов, имена которых у всех на слуху, ездят по сборах в разные города и тренируют студентов. А у школьников такого практически нет. Они большую часть времени готовятся локально в своем городе, в своей школе. И тут уже все упирается в то, повезет или нет с учителем.

«Надо дать возможность школьникам из любого уголка России учиться у сильнейших педагогов. И параллельно готовить сильных тренеров, переманивать лучших специалистов из индустрии в преподавание. Это не только даст возможность стать абсолютными лидерами IOI, но и в перспективе поможет развитию IT-отрасли в нашей стране», — заключил Малеев.

Советы для собеседования на работу

Все, что нужно знать программисту для собеседования

Все, что нужно знать программисту для собеседования

Как найти первую работу в IT: план действий для начинающих

Владислав Фурдак опубликовал на dou.ua план первого трудоустройства в IT. С разрешения автора мы адаптировали для вас материал, заменив некоторые ссылки. Всем привет! Меня зовут Влад, и я около семи лет в.
Читать дальше

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

Подготовка к собеседованию на должность проджект-менеджера

Первые управляющие проектами появились ещё в Древнем Египте при конструировании пирамид, сегодня же сами пирамиды отношений начинаются с проджект-менеджеров. Мы подготовили для вас список вопросов, которые могут задать на собеседовании.
Читать дальше

Как пройти собеседование в Google: советы по подготовке

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

Подготовка к собеседованию на позицию Python-разработчика

На сегодняшний день число Python-программистов продолжает расти, однако количество рабочих мест для них увеличивается не так быстро. Современному разработчику нужно быть конкурентоспособным, чтобы пробиться на желаемую позицию. Мы подготовили статью.
Читать дальше

Наш подписчик интересуется: Поделитесь, пожалуйста, задачками с собеседований, которые вы задаёте кандидатам. Мы передали его просьбу на рассмотрение нашим экспертам, а теперь делимся с вами полученными ответами.
Читать дальше

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

Задача о нахождении средней зарплаты трех работников при ограничении на передаваемую между ними информацию

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

Вопросы, которые программистам на самом деле стоит задавать работодателям на собеседованиях

Большинство разработчиков, когда их спрашивают, почему они хотят сменить работу, отвечают что-то вроде: «Я хочу совершенствоваться, как программист, а моё текущее место не даёт такой возможности». Все ищут новых знаний.
Читать дальше

«Уберите всё со стола» — рассказ разработчика о дистанционном собеседовании в Amazon

Рассказывает Шиван Каул Сахиб Недавно я проходил второй этап собеседования в Amazon на должность разработчика и решил рассказать, через что мне пришлось пройти. Первый этап собеседования уже был описан здесь. Я.
Читать дальше

Как проходит телефонное собеседование в Google: рассказ из первых рук от кандидата на должность технического директора

Рассказывает Пьер Готьер, разработчик G-WAN. Не так давно я проходил собеседование по телефону. Было это весьма неожиданно, и тест я завалил. Перечислю все вопросы, которые мне задавали — вдруг и.
Читать дальше

Что нужно знать PHP разработчику в 2020 году, чтобы устроиться на работу: подробный список без лишней «воды»

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

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

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

Топ-25 вопросов для телефонного собеседования. Часть 2

В предыдущей части этой статьи мы уже рассмотрели 25 вопросов, которые вам могут задать на телефонном собеседовании на должность программиста. В этой части мы рассмотрим еще 17. Диапазон сложности вопросов.
Читать дальше

Как в IT-компаниях смотрят на программистов без диплома при приёме на работу?

В этом выпуске «Ответов экспертов» рассмотрим вопрос о том, как влияет наличие диплома на мнение о программисте при приёме на работу в крупную компанию. Достаточно ли для рекрутёров опыта работы по.
Читать дальше

По версии Явина Пола, автора блога javarevisited.blogspot.sg На дворе XXI век, и уже давно телефонные собеседования являются самым популярным способом отбирать кандидатов на работу. У такого подхода есть свои преимущества —.
Читать дальше

Собеседования для айтишников — Станислав Протасов рассказывает о роли диплома, олимпиадном программировании и задачах для кандидатов

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

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

22 самых распространенных вопроса на собеседованиях на должность веб-разработчика

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

28 cайтов, на которых можно порешать задачи по программированию

Не секрет, что лучший способ повысить свои навыки в программировании — это практиковаться и только практиковаться. Мы подготовили для вас огромную подборку сайтов с задачами по программированию на самые разные темы.
Читать дальше

При приеме сотрудника в офис на должность программиста, работодатель испытывает кандидата не только вопросами о навыках, но и всевозможными логическими задачами, IT-кейсами и заданиями по разработке для профессиональных программистов. Как.
Читать дальше

10 интересных вопросов по Java, которые вам могут задать на собеседовании

Мы собрали 10 каверзных примеров программ, которые выводят какую-либо информацию. Вы должны взглянуть на код и сказать, что же выведет программа. Не исключено, что программа даже не скомпилируется. В этом.
Читать дальше

Как вести себя на собеседованиях? Что там будут спрашивать? Как лучше готовиться?

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

Десять наиболее частых ошибок программистов при подготовке к собеседованию

Автор этих советов, Гейл Лакман Макдауэлл — основатель и CEO CareerCup, автор известных книг по подготовке к собеседованиям. Гейл работала программистом в Microsoft, Apple и Google. У неё есть степени.
Читать дальше

Подборка полезных алгоритмов для собеседований: задачи на строки

В этом материале мы решили разобрать алгоритмы, которые часто встречаются на собеседованиях. В качестве инструмента реализации мы использовали Java. Стоит сразу заметить, что нашей задачей является не подробное описание алгоритмов.
Читать дальше

Материалы для подготовки к собеседованию и разборы распространенных задач

Источник:
Все, что нужно знать программисту для собеседования
Материалы для подготовки к собеседованию, топ вопросов для подготовки, разборы распространенных задач и многое другое Вы найдете на нашем сайте.
https://tproger.ru/tag/job-interview/

Заговоры, перед проведением собеседования о приеме на работу

Заговоры, перед проведением собеседования о приеме на работу

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

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

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

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

И добиться всего этого, помочь вам пройти собеседование, смогут народные заговоры, чтобы вас взяли на работу.

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

  • Одни обряды помогут вам отыскать самую лучшую вакансию для вас, даже если долгое время подобные поиски не заканчивались успехом.
  • Другие способны сделать вашу работу более прибыльной либо же помочь привлечь именно такое место, если вы еще не работаете.
  • Есть и обряды, совершив которые вы сможете подняться по карьерной лестнице вверх.
  • Также вы сможете сменить место работы или должность, если предыдущая совершенно вас не устраивает.
  • Многие привороты способны помочь вам в прохождении собеседования, если совершенно не уверены своих силах и испытываете чувство беспокойства. Это поспособствует тому, чтобы вас взяли на работу.

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

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

Советуем вам обратить внимание перед проведением обряда на следующие моменты:

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

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

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

«Шепчу-зашептываю, будет рабу Божьему (имя) удача в дороге, успехи в работе. Куда ни пойду – там работу и найду. Не видать мне отказов, не слыхать слова «нет». Аминь!»

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

А вот если вы нашли работу вашей мечты и впереди вас ожидает ответственное собеседование, примените этот приворот. Именно он способен придать вам уверенности в себе и повернуть высшие силы в вашу сторону.

Для его совершения вам не потребуется никакая дополнительная атрибутика, только ваша вера в силу заговора. Непосредственно по дороге на предстоящее собеседование проговорите следующую фразу:

«По дороге иду я, в новую жизнь иду! Хозяину чтоб понравился я, лицо ему мое по душе пришлось, Характер приглянулся, работоспособность удивила. Чтобы все умилялись, удивлялись да не нарадовались! Боже помоги мне, сил дай, уверенности и удачи! Аминь!»

Читать слова следует семь раз шепотом. После этого желательно до самого собеседования на улице ни с кем не разговаривать.

Заговор на успешный поиск высокооплачиваемой работы

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

Чтобы правильно его провести, следует каждое утро на рассвете, пока вы находитесь в поиске работы, читать такую магическую фразу:

«Боже помоги, Иисусе сохрани! Разрешить помоги проблему мою, Работу найти, деньги получить! Жизнь мою наладить, успешность получить! Аминь!»

Если вы будете строго каждое утро совершать ритуал, то в течение месяца сможете выйти на новую работу.

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

Для его осуществления приготовьте заранее святую воду, достаточно одного стакана. Над этой водой следует прочесть заговорные слова:

«Сила воды, мне помоги! Чтобы купцы золотые меня к себе на работу взяли, Чтобы золотом не обидели, да вниманием не обделили. Покажу я себя как мастер лучший из всех мастеров, Знаток лучший из всех знатоков. Радоваться да дивиться на меня все будут, Золотом да почестями одаривать! Аминь!»

Проговорите слова три раза и выпейте всю воду. Это может вам удачно пройти этап важного собеседования.

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

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

«Не монетки кладу, а откуп даю!»

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

«Как трудятся животные в лесах да на лугах, Так и я раб Божий (имя) тружусь, света белого не вижу, спину не разгибаю. Пошли, Боже, благодать мне, награду заслуженную За старания мои, за заслуги. Слава тебе! Аминь!»

Повторите эти слова ровно семь раз, и смело отправляйтесь домой. Уже меньше чем через месяц вам прибавят жалованья или переведут на более оплачиваемую вакансию.

Собеседования для айтишников — Станислав Протасов рассказывает о роли диплома, олимпиадном программировании и задачах для кандидатов

Международный студенческий чемпионат по программированию Assoсiation for Computing Machinary International Collegiate Programming Contest (далее — ICPC) проводится с 1977 года. До финала, который каждый раз проходит в разных странах, доходит 100–120 команд, состоящих из трех человек. Организаторы турнира разыгрывают 12 комплектов медалей — по четыре золотые, серебряные и бронзовые награды.

За все время проведения ICPC чемпионами становились студенты в основном двух российских вузов — Санкт-Петербургского государственного университета (СПбГУ) и Санкт-Петербургского национального исследовательского университета информационных технологий, механики и оптики (ИТМО). В 2006 году победу одержала команда Саратовского государственного университета.

Соревнование студенческое, но даже через пять-десять лет участие в нем котируется при найме на работу, рассказал журналу РБК руководитель группы рекрутмента платформы Amazing Hiring Александр Пашинцев. Чаще всего медалистов и чемпионов таких олимпиад нанимают интернет-гиганты — «Яндекс», «ВКонтакте», Facebook, Google, Amazon, Mail.Ru Group, Avito или специализированные компании, занимающиеся, например, высокочастотным трейдингом, отмечает Пашинцев. По его данным, в крупных IT-компаниях 5–10% общего числа сотрудников — специалисты, прошедшие через турниры ICPC.

Молодежь, побеждающая на специализированных олимпиадах, может интересовать крупные западные компании, которые привыкли обучать сотрудников самостоятельно, считает старший консультант департамента «IT и телеком» кадрового агентства Cornerstone Ирина Лукавская. Уровень зарплат таких сотрудников зависит от современности технологии, в которой они разбираются, и числа профессионалов-конкурентов на рынке. Например, для тех, кто работает с программным обеспечением «1С» месячная заработная плата в 150 тыс. руб. — достойная, продолжает Лукавская, а АВАР-разработчики (знают внутренний язык программирования немецкой SAP) еще до кризиса 2008 года зарабатывали более 200 тыс. руб. в месяц.

Несколько участников ICPC отказались общаться из-за корпоративной политики компаний, в которых они сейчас работают. Журнал РБК поговорил с четырьмя чемпионами и медалистами ICPC и узнал, как сложилась их карьера и помогло ли им «олимпийское» прошлое.

Играющий тренер

Андрей Лопатин, двукратный чемпион мира по программированию (2000 и 2001 годы), считает, что ему удается совмещать карьеру в IT и педагогику. Его бывший наставник, старший преподаватель факультета информационных технологий и программирования СПбГУ Наталья Вояковская, ушла после 15 лет работы, и Лопатин после второй победы в ICPC занял место главного тренера вуза. «Я хотел, чтобы дело жило. Если бы я не подхватил, оно бы развалилось», — рассказывает чемпион-преподаватель.

Интерес к соревнованию в СПбГУ растет: еще десять лет назад число желающих заниматься спортивным программированием не превышало 100 человек в год. Теперь количество студентов, которые хотят испытать свои силы в чемпионате, достигает 200 человек ежегодно: к Лопатину приходят студенты с различных факультетов СПбГУ. В основном это студенты-математики — у каждого свои успехи, но в среднем обучение занимает около трех-пяти лет. Итоговый отбор на участие в конкурсе проходят примерно 50 человек, а в финал ICPC выходят лишь три человека.

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

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

Периодически сборы проходят и за рубежом, но они, как правило, «гораздо слабее, чем в России» — из-за среднего уровня подготовки участников, рассказывает один из главных тренеров страны. Россия в последние годы доминирует в ICPC. В числе тех, кто может полноценно соперничать с российскими программистами, Лопатин называет американских, но это происходит за счет «импортированных» студентов — поляков, китайцев и других, поскольку в ведущие вузы США приезжают учиться со всего мира.

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

Программирование требует «больших математических знаний», продолжает он: если начинать знакомство с математикой с детства, то развивается определенный склад ума. На ICPC участнику нужно не просто написать код — необходимо решить сложную проблему и открыть что-то новое, и без математического мышления и знания алгоритмов никуда, категоричен тренер. С каждым годом задания на чемпионате усложняются — задачи, которые 15 лет назад казались нереальными, сейчас можно решить за 15 минут.

Многие IT-компании проводят собственные соревнования по программированию: это позволяет им искать будущих сотрудников. Однако ICPC — самый престижный конкурс: его участники — не просто кодеры, которые создают программы, а специалисты, придумывающие, как такая программа может быть устроена, объясняет Лопатин. Финалисты ICPC могут сэкономить работодателю бюджет: 10 тыс. серверов обойдется компании в $50 млн, а два толковых программиста могут рассказать, что необходимо сделать, чтобы не закупать эти серверы, объясняет тренер.

Подготовка команд СПбГУ к соревнованиям по программированию — основная работа Лопатина. В разные годы он работал во «ВКонтакте» и Telegram, созданных Павлом Дуровым, но сейчас параллельно с педагогикой занимается консультированием российского сервиса для построения логистических маршрутов VeeRoute. Лопатин признается, что с момента последнего своего личного чемпионства 15 лет назад он отказал примерно десяти крупным компаниям, которые звали его на работу.

Главный по котикам

Чемпионом мира ICPC Дмитрий Егоров стал в 20 лет — в 2014 году, когда учился на третьем курсе математико-механического факультета СПбГУ. Сейчас он возглавляет отдел разработки и оптимизации баз данных крупнейшей соцсети России «ВКонтакте» и продолжает учиться в магистратуре НИУ Высшей школы экономики. Впрочем, совмещение университета с работой — привычное для Егорова дело.

Будущий чемпион мира окончил физико-математический лицей № 239 в Санкт-Петербурге — престижную школу, в которой учились, к примеру, математик Григорий Перельман, доказавший гипотезу Пуанкаре, и родной брат основателя «ВКонтакте» Павла Дурова Николай, вместе с ним работавший над созданием и развитием соцсети.

В 2014 году финал чемпионата ICPC проходил в первых числах июля в Екатеринбурге. Команда СПбГУ, в которой выступал Егоров, заняла первое место — это была третья подряд победа России на мировом турнире.

В первые годы учебы в университете Егоров стажировался в «Яндексе» — с 2012 по 2014 год. В компании прием «практикантов» поставлен на поток, поэтому при желании и «некотором уровне базовой подготовки» попасть туда совсем несложно, рассказывает студент. Стажировку в «Яндексе» он называет «крайне полезной» — не только с точки зрения полученных навыков программирования, но и с точки зрения организации внутри большой компании. После стажировки Егоров понял, что не видит себя рядовым сотрудником большой корпорации. «Я всегда был готов работать заметно больше и лучше других, но и ожидаю большей отдачи», — объясняет бывший студент СПбГУ. В больших компаниях недостаточно возможностей для роста и развития, им не хватает индивидуального подхода, сетует Егоров. И это касается не только «Яндекса», но и других IT-гигантов вроде Google. «Если хочется спокойной жизни с хорошей зарплатой и уверенностью в завтрашнем дне, то крупные IT-компании — отличный вариант. Но это не для меня», — считает чемпион ICPC.

Сразу же после церемонии награждения к Егорову подошел один из сотрудников «ВКонтакте» и предложил присоединиться к команде. Через несколько месяцев студент пришел на работу в крупнейшую соцсеть. Перспективы для него очевидны: весной 2014 года из «ВКонтакте» ушел Павел Дуров, вслед за ним компанию покинули многие разработчики. «Несмотря на десятки миллионов пользователей в день, вокруг вновь витал дух стартапа», — улыбается чемпион. Меньше чем через год Егоров возглавил отдел, в который пришел на рядовую позицию. В его отделе — семь человек: все они в разные годы участвовали в ICPC, четверо становились чемпионами мира.

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

Степень важности своего отдела для компании студент магистратуры оценивать не готов: во «ВКонтакте» сложно выделить ключевые и второстепенные отделы разработки. Для полноценной работы и развития необходимы все составляющие — и базы данных, и бэк-энд, и фронт-энд, и группа системных администраторов, и мобильная разработка. Без любой из этих частей сайт начнет деградировать довольно быстро, уверен Егоров. «Вы же не спрашиваете, какой орган у человека важнее — мозг или сердце? Без любого из них человек может жить разве что в анекдотах», — говорит он.

Все победители чемпионатов ICPC, как правило, могут выбирать место работы из довольно большого списка. Например, генеральный спонсор чемпионата мира компания IBM во время награждения раздает всем призерам приглашение связаться с их HR-службой и обсудить вакансии, вспоминает Егоров. Для себя он сразу решил, что не хочет уезжать из России.

«Для многих айтишников переезд за границу — нечто вроде навязчивой идеи, которую они культивируют друг в друге», — говорит Егоров. О выборе «ВКонтакте» в качестве работодателя он не жалеет, а массовую миграцию IT-специалистов за рубеж называет «абсолютной катастрофой для страны».

Поле возможностей

Студент 1-го курса механико-математического факультета СПбГУ Глеб Леонов и двое друзей увидели на стенде университета объявление о наборе желающих заняться олимпиадным программированием. Выпускник математической школы — Академической гимназии СПбГУ, в которой учился Павел Дуров, — заинтересовался. Так он попал в «класс» Андрея Лопатина. Дважды Леонов становился финалистом ICPC, один раз завоевал серебряную медаль.

Во время учебы в СПбГУ Леонов не подрабатывал: в этом не было особой необходимости, а учеба и тренировки по программированию занимали много времени, вспоминает он. После университета Леонов поступил в аспирантуру, но через год ушел: захотел сконцентрироваться на программировании.

Сейчас финалисты ICPC получают массу предложений от потенциальных работодателей: десять лет назад их возможности были скромнее. Впрочем, уже тогда Google звал программистов на собеседования. Леонова перспектива работы в одной из крупнейших американских IT-корпораций никогда не прельщала.

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

Участие в чемпионатах и работа в компаниях — не одно и то же. Если речь идет о спортивном программировании, то твоя цель — как можно быстрее решить задачу и написать программу. А во время работы в компании цель специалиста — разработать софт, который можно модифицировать. Иногда необходимо «порезать» программу на части и заменить одну из «деталей», не трогая остальные, поэтому главное в работе программиста — практический навык. В университете его приобрести сложно, говорит Леонов. Более того, чем выше должность, тем больше дополнительных навыков необходимо.

Уже семь лет Леонов работает в компании JetBrains в Санкт-Петербурге. Созданная в 1999 году в Праге российскими программистами Сергеем Дмитриевым, Евгением Беляевым и Валентином Кипятковым JetBrains разрабатывает софт для IT-специалистов. Сейчас помимо Праги и Санкт-Петербурга у компании работают офисы в Москве, Мюнхене, Бостоне и Новосибирске. На работу в JetBrains Леонов устраивался сам — попросил контакты у сотрудников компании и отправил резюме.

«Если студент дошел до финала чемпионата мира, то у него, скорее всего, есть способности и он достаточно легко пройдет собеседование на должность младшего программиста», — улыбается Леонов.

Сейчас финалист ICPC занимается разработкой инструментов, правда не для программистов. Для кого — Леонов отвечать отказался, сославшись на внутренние правила компании. Несколько раз в год он участвует в индивидуальных соревнованиях по программированию, которые проводят Google, Facebook, Mail.Ru Group и др. Отборочные этапы проходят через интернет, а финалистов зовут на итоговый этап в разные города мира. «В финалы я, конечно, не попадаю, поскольку занимаюсь больше для себя», — признается Леонов.

Ядро Google

Увлечение математикой Петр Митричев перенял у старшего брата, который также занимался программированием. Мама, химик по образованию, покупала Петру книги по математике. Когда в доме не было компьютера, Митричев-младший читал литературу о программировании и ходил с братом в Центр детского и юношеского творчества, где они занимались в компьютерном кружке. В семь лет он поступил в районную школу № 827, а в 14 лет перешел в специализированный класс школы № 57 в Москве, а затем подал документы на мехмат МГУ.

В школе учительница по информатике предложила Митричеву поучаствовать в олимпиаде Северо-Западного округа Москвы по программированию. «После того как ты попадаешь в эту систему, легче участвовать в других олимпиадах», — вспоминает Митричев. Он также участвовал во Всероссийской олимпиаде для школьников, ездил несколько раз на двухнедельные сборы в разные города, где тренируют в том числе будущих участников ICPC.

В отличие от студентов СПбГУ и ИТМО у Митричева и его одногруппников с мехмата не было одного тренера. В качестве неформальных наставников выступали бывшие участники ICPC, которые делились своим опытом как онлайн, так и на сборах. Ведущий научный сотрудник лаборатории вычислительных методов мехмата МГУ Евгений Панкратьев помогал участвовать в соревнованиях: организовывал поездки и содействовал в оформлении документов. Митричев дважды дошел до финала ICPC — в 2003 году в США и в 2005-м в Китае, когда учился на первом и на третьем курсах соответственно. Оба раза в составе команд он занял второе место.

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

Финалисты ICPC могут заниматься организацией похожих соревнований внутри крупных корпораций или аналитикой (например, торговля на бирже). Последний вариант Митричев рассматривал для себя после окончания университета. «Там можно за более короткий срок заработать себе на старость», — признает он.

Однако с 2007 года Митричев работает в Google — сначала в московском офисе, с 2015 года — в швейцарском. На собеседовании в одну из крупнейших IT-компаний мира Митричеву пришлось решать задачи, которые похожи на те, что встречаются в финалах ICPC, вспоминает программист. Правда, сейчас он занимается поисковым ядром сайта Google, и эта работа больше связана с теорией вероятностей, которую Митричев изучал в университете. Скорость, приобретенная в ходе соревнований, помогает, когда нужно, к примеру, создать прототип программы и понять, работает ли она.

Сейчас Митричев помогает Google проводить собственные соревнования по программированию — Google Code Jam, придумывает задачи для турниров вместе с коллегами. Митричев сам дважды принимал участие в этом конкурсе и занимал третье место в 2005 году и первое в 2006-м. Программист признается, что обсуждал возможное сотрудничество с представителями «ВКонтакте», Facebook и «Яндекс», но сейчас ему кажется, что Google — лучший вариант, «потому что компания решает интересные задачи, а ее сотрудники — умные люди, с которыми приятно работать».

Собеседование: 8 самых распространенных ошибок программистов

Эта статья уникальна тем, что все описанные ошибки являются выводами по результатам статистического исследования более 20 000 интервью, смоделированных на тренировочной вэб-платформе, предназначенной для тренировки навыков прохождения собеседования при устройстве на работу.

Изучим ошибки и поймем, как их избежать

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

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

Мы уверены, что вы бы провели полномасштабное статистическое исследование. Именно потому, что у нас такая возможность была, мы за это и взялись.

Мы изучили более 20 000 интервью, которые проводились на нашей платформе для собеседований с программистами Pramp. Рассмотрели взаимные отзывы, сгруппировали их по тематике и выявили статистически значимые тенденции.

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

В конце вы найдете описание методологии, примененной нами для написания статьи.

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

Давайте сначала бросим взгляд на проблему с высоты птичьего полета:

Общее количество всех столбцов составляет более 100%, поскольку некоторые отзывы описывают более одной ошибки.

#1: Написание кода до записи наброска решения

Частота ошибки на собеседовании: 20.66%.

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

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

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

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

Если вы потерялись и не можете сдвинуться с места, вот несколько отличных советов о том, как сдвинуться с мертвой точки в процессе прохождения технических собеседований.

#2: Слабые знания основ Computer Science

Частота ошибки на собеседовании: 20.05%.

Понравится вам это или нет, но большинство ключевых тем собеседований с программистами сегодня по-прежнему вращаются вокруг проблем, связанных с структурами данных и алгоритмами (DS&A). Это справедливо как для стартапов так и крупных компаний, таких как Dropbox, Airbnb, Uber & Palantir и, конечно же, для таких гигантов, как Google, Facebook, Amazon & Apple.

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

Совет. Потратьте какое-то время на изучение структур данных и алгоритмов. Это поможет не только в программировании, но и в профессиональном росте. Понимание базовых DS&A является важной составляющей при разработке любого программного обеспечения.

Примечание переводчика: в англоязычной литературе DS&A — аббревиатура для фразы Data Structures & Algorithms – структуры данных и алгоритмы.

Помимо Pramp.com, вот список ресурсов, которые мы рекомендуем:

  1. Отличный курс от Courcera, предоставляющий всю важную информацию об алгоритмах и структурах данных, необходимую каждому серьезному программисту: Алгоритмы, часть 1, Алгоритмы, часть 2.
  2. «Cracking Coding Interviews» Гейла Лаакманн Макдауэлла — хорошая книга, в которой есть примеры задач, решения и рассказы о том, как разные компании подходят к найму.
  3. Два хороших бесплатных учебных курса, посвященных тому, чтобы помочь вам добиться успеха в техническом собеседовании:
  • Подготовительный курс по техническому собеседованию от Udacity & Pramp
  • Подготовка к собеседованию по программной инженерии от Coursera

#3: Успокойтесь

Частота ошибки на собеседовании: 15.80%.

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

Совет. Самое распространенное когнитивное искажение – думать, что ваши мысли очевидны и понятны для других. Выполняя задачу, объясняйте каждый шаг рассуждений. Говорить и писать код одновременно для многих из нас не является естественным. К счастью, есть отличная платформа, которая поможет вам практиковаться :). Если волнение мешает правильно высказывать мысли, можете попробовать эти методы, чтобы овладеть собой.

«Скажи мне, что такое алгоритм».

#4: Слабое знание языка программирования

Частота ошибки на собеседовании: 12.56%.

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

Однако, если вы не справились с такими элементарными вещами, как, например, управление памятью в C, наследованием в Java, генератор списков в Python или замыкания в JavaScript, ваше собеседование обречено на провал. Хотя подобные ошибки обычно совершают новички, она также распространена и среди специалистов из академической среды, имеющих глубокие теоретические знания, но скудные практические инженерные навыки.

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

Если это не так – например, если вы проходите собеседование на позицию фронтэнд-разработчика, где требуется знание JavaScript, заранее потренируйте навыки программирования на этом языке.

Изучение книг здесь сильно не поможет, вам нужно будет набить руку. Запрограммируйте несколько проектов, внесите свой вклад в открытый исходный код или, еще лучше, сделайте то и другое.

Разработка собственного проекта – единственный способ на практике освоить язык программирования. Нет идей? Вбейте простой поисковый запрос в Google.

#5: Отсутствие тестирования

Частота ошибки на собеседовании: 10.33%.

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

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

Совет. Рекомендуется трижды использовать тесты во время собеседования. В первый раз – сразу после того, как ваш интервьюер закончил задавать вам вопросы по вашему коду. Используйте один-два примера, чтобы проверить, что вы поняли вопрос (подробнее см. # 6 ниже). Второй раз после того, как вы набросали свое решение. Используйте нетривиальный тестовый пример, чтобы вместе с интервьюеров пройтись по вашему псевдокоду и проверить его правильность. Наконец, как только вы закончите программировать свое решение, проверьте еще раз, что в вашем коде нет ошибок.

#6: Неправильное понимание вопроса

Частота ошибки на собеседовании: 9.11%.

Среди всех перечисленных нами ошибок избежать эту легче всего. Довольно удивительно, что около 9% всех кандидатов все еще совершают эту ошибку.

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

Совет. Первое, что вы должны сделать после того, как ваш интервьюер закончил объяснять свой вопрос ‑ повторить этот вопрос своими словами, чтобы убедиться, что вы все правильно поняли. Если вы ошибаетесь, вам подскажут. Это избавит вас от ошибочного ответа на совершенно другой вопрос. Иногда мы слишком поздно понимаем, что совершили ошибку и времени на исправление уже не остается.

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

#7: Игнорирование граничных случаев

Частота ошибки на собеседовании: 8.31%.

Не учет граничных случаев, может являться признаком неразвитых навыков решения задач программирования. Во-первых, если ваш алгоритм не обрабатывает все корректные данные — решение является неполным. Во-вторых, не учитывая граничные случаи, вы упускаете возможность придумать более удачный алгоритм решения. Например, в задаче «Поиск недостающего числа» прямое («силовое», грубое) решение заключается в том, чтобы вычесть сумму входного массива из общей суммы (1, …, n). Однако при достаточно большом «n» решение будет неверным из-за переполнения целочисленного значения. Осознание этого граничного случая заставит вас подумать о более подходящем решении. И действительно, используя побитовый оператор XOR, мы можем разработать решение, которое больше не подвержено переполнению (более подробно см. второе решение в ссылке выше).

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

#8: Сырой код

Частота ошибки на собеседовании: 7.69%.

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

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

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

  • Использование непонятных имен для переменных, функций и т.д. Обычно это использование одиночных символов в качестве имен переменных. Или вызов функции с именем«func». Особенно внимательным нужно быть спортивным программистам, поскольку они привыкли использовать сверхкороткие имена в своих программах, чтобы быстрее кодировать. Это не сработает во время собеседования.
  • Непоследовательный стиль кодирования. Несмотря на то, что у каждого имеется свой стиль программирования, следует избегать смешения различных стандартов оформления программного кода. Например, использование различных соглашений об именах. Или использование табуляции в одних частях вашего кода и использование пробелов – в других. Вам следует придерживаться определенного стиля. Например, если вы поместите открывающую фигурную скобку в одну строку, не помещайте затем ее с новой строки. Подобных примеров можно приводить множество, но я думаю, вы уже поняли.
  • Использование безопасного программирования, такого как NULL-проверки и множество особых случаев, не задумываясь о том, нужны ли они. Это приводит к более сложному коду, который трудно понять и отладить.

Совет. Буду краток. Используйте здравый смысл, чтобы придумать «говорящие» имена там, где это необходимо, выбрать один стандарт кодирования и придерживаться его на протяжении всего собеседования. Кроме того, вы хотите, чтобы ваш код был понятным. В противном случае ваш интервьюер может начать сомневаться в ваших знаниях языка программирования.

Выводы

Если вы дочитали статью до этого места, вы, возможно, заметили, что значительная доля всех ошибок, допущенных кандидатами, имеет мало общего с техническими навыками. Фактически, не технические ошибки (№ 1, № 3, № 6) составляют 44% всех ошибок.

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

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

Именно этим мы занимаемся в Pramp. Мы бесплатно предоставляем комплексную площадку для проведения собеседований. Она уже помогла тысячам программистов избежать ошибок на собеседованиях. Готовы ли вы к собеседованию?

Вот пример практической сессии собеседования по Pramp.

Методология

Чтобы идентифицировать ошибки и рассчитать их частоту, мы рассмотрели данные о последних 20 000 интервью с программистами, проведенных на Pramp.

Сначала о самой платформе. Pramp — бесплатная «точка-точка» площадка для тренировки и самопроверки программистов. Проще говоря, мы проверяем разработчиков программного обеспечения с помощью видеочата и совместно используемой среды программирования, чтобы имитировать проведение собеседований по программированию.

Каждый такой сеанс интервью является двунаправленным. Это означает, что оба эксперта беседуют друг с другом в одной сессии. Каждый из них выбирается случайным образом, быть ли интервьюером или кандидатом, а затем через 30-45 минут они меняют свои роли – интервьюер становится кандидатом, а кандидат становится интервьюером.

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

Часть участников формы обратной связи заполняется в конце каждого сеанса собеседования.

Мы проанализировали ответы в более чем 20 000 интервью на вопрос «Что было не так хорошо».

Первым шагом в нашем анализе было выяснение повторяющийся «категории ошибок» в ответах пользователей на вопрос «Что было не так хорошо?» В форме обратной связи. С этой целью мы выбрали случайные 1 068 интервью из 20 000 интервью. При таком размере выборки результаты статистически значимы (уровень достоверности 95% и допустимая погрешность менее 3%). Затем мы перечислили вручную эти 1 068 ответов.

Мы определили девять категорий. Восемь из них ‑ упомянуты в статье. 9-я категория была «Другая». Эта категория включала отзывы, которые либо не говорили ничего значимого (например: «Вы отлично поработали, мне нечего добавить», «Ничего не могу придумать» и т.д.), или что указывает на проблему, частота которой не была статистически значимой (например,

1% всех обратных связей относились к скорости кодирования сверстников). При расчете распространенности ошибок мы исключили все отзывы, которые попали под категорию «Другие».

Предполагая, что интервью на Pramp является хорошей моделью реальных технических интервью (а у нас нет оснований полагать противное), размер выборки в 1 068 интервью также является репрезентативным и для общего числа технических интервью, проводимых в «реальном мире».

Станислав Станиславович Протасов

Станислав Протасов
Дата рождения 12 марта 1970 ( 1970-03-12 ) (49 лет)
Место рождения Ташкент, УзССР
Образование МФТИ
Компания Acronis
Должность Старший вице-президент по проектированию и разработке ПО

Протасов Станислав Станиславович (12 марта 1970, Ташкент, УзССР) — сооснователь и старший вице-президент по проектированию и разработке ПО компании Acronis [1] , кандидат физико-математических наук, обладатель 71 международного патента [2] , входит в топ ИТ-директоров по версии «Коммерсантъ». [3] Станислав Протасов является соавтором контейнерной технологии. [4]

Содержание

Биография [ | ]

Родился 12 марта 1970 года в Ташкенте в семье ученых. [5]

Окончил экстерном общеобразовательную школу во Владивостоке. В 15 лет поступил в МФТИ на факультет радиотехники и кибернетики.

В 1993 году окончил университет с дипломом инженера-физика. В том же году поступил в аспирантуру МФТИ, позднее защитил кандидатскую диссертацию. [6]

В 1993 Станислав начал работать научным сотрудником в одном из НИИ в структуре МИЭТ. [7] В этот период начал активно программировать [8] .

В 1996 году Станислав Протасов в качестве технического специалиста ИТ-компании Standard & Western Software переехал в Сингапур. Вскоре компания стала партнером-дистрибьютором ERP-систем Solomon Software в Юго-Восточной Азии. [9] В дальнейшем после цепочки поглощений компания была продана Microsoft и переименована в Microsoft Dynamics. [10]

В 2000 году Протасов совместно со знакомыми по учёбе в МФТИ организовали компанию SWsoft. Компания под его руководством открыла в МФТИ R&D-центр и начала работать над собственными продуктами. [11] В том же году он возглавлял проект по созданию ASPLinux, версии ОС Linux, которая выпускалась в трех редакциях и продавалась в десяти странах. [6] В этот период в компании была разработана новаторская контейнерная технология виртуализации. На сегодняшний день она является основой облачной инфраструктуры и используется не менее чем 10 миллионами серверов по всему миру. Её ы частично используются такими компаниями, как Google, а также в популярных Linux-разработках. [12] Станислав Протасов является соавтором контейнерной технологии.

В 2003 году один из самых успешных продуктов SWsoft — ПО для бэкапа без необходимости перезагрузки системы — был выделен в отдельный бизнес, который назвали Acronis. [13]

В 2007 году, после покупки нескольких успешных конкурентов, компания SWsoft была переименована в Parallels. Компания стала одним из глобальных лидеров на своем рынке. Позже под влиянием работы Станислава Протасова были открыты учебные лаборатории Parallels в пяти ведущих вузах Москвы, Санкт-Петербурга и Новосибирска. [14]

В 2012 году под руководством Станислава Протасова Parallels вошёл в число самых активных контрибуторов ядра Linux, наравне с Google, AMD, Cisco и HP. [4] [15]

Летом 2013 года Станислав стал старшим вице-президентом компании Acronis. [16] [17] Станислав отвечает за всю техническую часть бизнеса, разработку продуктовой линейки, в том числе выпуск новых продуктов и обновлений. [18] Сейчас Acronis один из лидеров рынка решений резервного копирования и восстановления данных.

В 2014 и 2015 годах компания Acronis под руководством Станислава Протасова становилась лауреатом «Премии Рунета» в номинации «Технологии и инновации». [19] [20]

В 2015 году под руководством Станислава компания Acronis вошла в 20 крупнейших поставщиков облачного хранения данных по версии CRN [21] В том же году одно из крупных направлений Parallels — Odin — купила корпорация Ingram Micro, которую вскоре приобрела китайская компания HNA Group за $6 млрд. [22]

С 2015 года входит в экспертный клуб «Премии Рунета» [23] и в экспертный совет «Института Развития Интернета». [24]

В мае 2020 года стал руководителем комитета «ИТ+Суверенитет»«Института Развития Интернета». [25]

Личная жизнь [ | ]

Станислав Протасов женат, у него трое детей.

Добавить комментарий