Задачи на собеседованиях, спецподгон. Пять советов от HeadHunter и crackme от Dr.Web

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

1. Начни работать как можно раньше

Первый совет адресован студентам и молодым специалистам, которые раздумывают над тем, идти или нет работать во время учебы. Мой ответ однозначен: работать как можно раньше. Чем раньше ты начнешь свою профессиональную жизнь, тем больше опыта в итоге получишь. Я занялся коммерческой разработкой сайтов с первого курса, но обычно студенты идут работать со старших курсов, что вполне достаточно для быстрого профессионального роста в будущем. У молодых специалистов есть несколько вариантов начать работать: летняя стажировка, работа на неполную ставку, работа фрилансером и специальные обучающие программы. Я крайне рекомендую постараться устроиться в успешную компанию на летнюю практику и попробовать себя на реальных задачах. Работать на неполную ставку могут себе позволить прежде всего студенты старших курсов, у которых учебная нагрузка не такая большая и уже есть определенные профессиональные знания и навыки. Фриланс для студентов хорош тем, что можно максимально гибко настраивать нагрузку, и большим разнообразием задач. Отдельно хочу сказать про различные обучающие программы, которые проводят последние несколько лет топовые компании. Некоторые из программ ориентированы на студентов конкретных вузов, например, Mail.ru Group организует два проекта: Технопарк совместно с МГТУ имени Н. Э. Баумана  и Техносфера совместно с факультетом ВМК МГУ имени М. В. Ломоносова, а у компании «Яндекс» целый пакет образовательных проектов, из которых выделю Школу анализа данных и Школу разработки интерфейсов. Мы в HeadHunter тоже проводим каждый год свою Школу программистов. В прошлом году мы готовили фронтенд-разработчиков и мобильных разработчиков, а в этом году проводим ее в традиционном формате и готовим фуллстек веб-разработчиков.

2. Составь грамотное резюме

По своему опыту могу сказать, что у разработчиков (и ИТ-специалистов в целом) одни из самых качественных резюме, тем не менее и у них имеют место некоторые распространенные ошибки. Я опрашивал руководителей в нескольких компаниях, которые проводят технические собеседования с кандидатами. Все выделили одну «особенность» резюме разработчиков: любой язык программирования, библиотека, фреймворк, технология, с которыми кандидат знаком мельком, тут же попадает в резюме :). Кроме всего прочего, это еще и усложняет понимание основных навыков кандидата: не очень ясно, какой у него главный язык программирования, с какой базой данных он больше всего работал и тому подобное. Если очень уж хочется показать свой кругозор, я бы порекомендовал сделать отдельный раздел в резюме и перечислить там то, чем ты интересуешься, но с чем не имеешь практического опыта. Вторая рекомендация по составлению резюме относится не только к ИТ-специалистам, но и почти ко всем кандидатам: четко указывай свои достижения за время работы. Укажи проекты, в которых ты участвовал, какова была твоя роль, какую часть работы сделал ты и какие технологии использовал при реализации задач. Также рекомендую указать бизнес-результаты проекта, особенно ценно, если они будут количественными, например: «Конверсия чекаута интернет-магазина выросла на 3%».

3. Участвуй в Open Source проектах

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

4. Постоянно точи пилу

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

Топ-5 фундаментальных книг

  1. Стив Макконнелл «Совершенный код»
  2. Эрих Гамма, Ричард Хелм, Ральф Джонсон, Джон Влиссидес «Приемы объектно-ориентированного проектирования. Паттерны проектирования»
  3. Мартин Фаулер, Дейвид Райс, Мэттью Фоммел, Эдвард Хайет, Роберт Ми, Рэнди Стаффорд «Шаблоны корпоративных приложений»
  4. Мартин Фаулер, Кент Бек, Джон Брант, Уильям Апдайк, Дон Робертс, Эрих Гамма «Рефакторинг. Улучшение существующего кода»
  5. Майк Кон «Scrum. Гибкая разработка ПО»

Вторая часть совета относится к достаточно новому способу получения знаний, который последнее время набирает обороты, — онлайн-курсы (MOOC — Massive Open Online Course). На сегодняшний день есть несколько вариантов прохождения онлайн-курсов, большинство из которых бесплатны или достаточно дешевы. Я хочу вернуться ко второму совету и подчеркнуть, что пройденный курс (или несколько курсов), в отличие от нескольких прочитанных статей, позволит расширить свое резюме.
Есть ресурсы, посвященные изучению конкретных языков программирования и технологий, но самые востребованные курсы обычно можно найти на сайтах типа www.coursera.org и www.edx.org, потому что контент для них предоставляют ведущие мировые университеты. Фактически на таком сайте можно получить дополнительное заочное образование.

# 5. Расширяй кругозор, но не гонись за модой

Важно расти не только «вглубь», но и «вширь», чтобы твой кругозор постоянно расширялся. Для этого нужно следить за появляющимися языками программирования, технологиями, библиотеками, фреймворками и тому подобным. Однако обрати внимание, что модная технология, которой посвящено немало хвалебных отзывов в интернете, может быть на самом деле не востребованной рынком.
Для примера я взял топ-20 языков программирования по индексу TIOBE за октябрь 2014 года и сравнил его с данными по вакансиям на hh.ru. Запросы делались по названию языка программирования в профобласти «Информационные технологии, интернет, телеком» по всем регионам.

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

Crackme от «Доктора Веба»

Специально для нашей рубрики специалисты Dr.Web написали crackme, который тебе совершенно точно надо попробовать отломать. Качаем.
Задача: Найти правильное имя и пароль. Решения присылай на lozovsky@glc.ru.

ЧИТАТЕЛИ, ШЛИТЕ НАМ ВАШИ РЕШЕНИЯ!

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

IT-КОМПАНИИ, ШЛИТЕ НАМ СВОИ ЗАДАЧКИ!

Миссия этой мини-рубрики — образовательная, поэтому мы бесплатно публикуем качественные задачки, которые различные компании предлагают соискателям. Вы шлете задачки на lozovsky@glc.ru — мы их публикуем. Никаких актов, договоров, экспертиз и отчетностей. Читателям — задачки, решателям — подарки, вам — респект от нашей многосоттысячной аудитории, пиарщикам — строчки отчетности по публикациям в топовом компьютерном журнале.