Главная » Хабрахабр » Упрощаем написание резюме разработчика

Упрощаем написание резюме разработчика

Проблема

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

А для тех, кому важна механика и история проекта — собственно и посвящена статья. Для тех, кому не интересна лирика, и кто хочет сразу перейти к делу — то вперед на github.

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

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

И несмотря на обилие 'информационного мусора' во всей этой цепочке, приходится адаптироваться и играть по правилам большинства — иначе никто не возьмет кандидата на работу, т.к. Но где бы вы не откликнулись на вакансию, всегда есть поле приложить резюме в .doc или .pdf. о нем просто не узнают.

В теории проблему можно было бы решить, имея 'единый центр' — если:

  1. все площадки для размещения и отклика вакансий объединятся на уровне ресурса / единого протокола;
  2. 'как писать резюме' перестанет быть вопросом искусства и исследований, а будет единый принятый всеми стандарт;
  3. будет единая онтология наиболее популярных вакансий, по которой можно понять характер оценки навыков/опыта/качеств кандидатов для данной вакансии;
  4. кандидаты не будут врать и преувеличивать в своих резюме;
  5. конкуренция кандидатов по умению продавать себя отсутствует.

В реальном мире такое вряд ли возможно, поскольку биржи труда развивается децентрализовано, а про 4-5 пункты, наверное, невозможно решить даже с единым центром.

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

Идея

Так или иначе, резюме:

  1. описывает качества кандидата;
  2. доказывает это опытом.

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

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

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

В идеале такой "журнал" должен:

  1. только дополняться, старые записи остаются без изменений;
  2. заполняется при появлении новой релевантной информации (окончание работы на текущем месте, новая публикация, завершенный проект) — именно так можно будет дать наиболее удачное описание;
  3. содержать информацию, выставляющую кандидата в выгодном свете (но, помимо этого, есть смысл отмечать важные для себя моменты, даже если они негативные — в печать пойдет только то, что нужно).

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

Моя история

Искал примеры, пытался удачно скопировать. Начинал я как все, открывал MS Word, искал красивый шаблон, начинал писать. Перебрал разные визуальные формы, экспериментировал с формами. В какой-то момент перешел на LaTex, более-менее структурировал опыт. Это длилось примерно 10 лет, и, наконец, пришло время количеству перерастать в качество.

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

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

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

Составление резюме как подача истории

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

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

Если представить этот процесс упрощенно в виде блок-схемы, то получится следующее: Я попытался промоделировать, как HR будет читать резюме, где как только он находит доказательство непригодности кандидата — он закрывает его и не читает дальше.

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

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

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

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

Требования к навыкам вполне однозначны к конкретным вакансиям. Навыки. Если ищут опытного C++ для разработки драйверов, а в топе навыки JS, Ruby on Rails и Java — то дальше можно не читать.

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

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

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

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

Как выделять навыки

Например, где-то можно написать C++, где-то boost (и при этом не написать C++), а где-то C++, STL, boost. Что такое 'навыки', и какая детализация нужна при заполнении — это вопрос открытый. И при этом иметь в виду одно и то же.

А значит, что для них может быть далеко не очевидно, что STL и boost включает в себя C++. Стоит понимать, что рекрутеры и HR-ы редко имеют техническую специальность, и тем более опыт. Поэтому здесь нужно ориентироваться в первую очередь на вакансии, и смотреть какие там используются ключевые слова.

Для себя при заполнении журнала я решил заполнять подробней (пусть даже со смысловым дублированием), а потом я надеюсь добавить "фильтр" релевантных навыков на основании вакансии.

Опыт в виде журнала

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

Далее рассмотрим подробнее описанные сущности с примерами, а в качестве языка реализации воспользуемся JSON-ом.

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

Также считаю полезным поместить специализацию для широких профилей, и название диплома. В образование помещается учебное заведение, статус диплома (phd, specialist, master, etc.), название диплома, период обучения и средняя оценка.

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

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

{ "name" : "Photoshop", "icon" : "photoshop_project.png", "period" : "01.09.2015-30.08.2016", "description" : "Raster graphics editor", "team-size" : "9", "web" : "https://www.adobe.com/products/photoshop.html", "tasks" : [ "..." ] }

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

{ "description" : "Development of text-recognition filter from raw image", "period" : "01.09.2015-28.02.2016", "skills" : ["CI", "C++", "ML"], "achievements" : [ "achievied recognition accuracy up to 85%" ] }

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

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

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

Реализация

Всю реализацию с сопутствующем описанием можно найти на github.

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

Для работы нужен docker, но если с этим проблема, то главное поставить imagemagick, latex и python.

FROM ubuntu:latest
RUN apt-get -qq update && DEBIAN_FRONTEND=noninteractive apt-get install -yq --no-install-recommends build-essential librsvg2-bin lmodern inkscape zip python3 python3-dev python3-pip libcairo2-dev apt-utils pkg-config python3-setuptools texlive-fonts-recommended texlive-latex-extra dvipng texlive-latex-recommended texlive-xetex && pip3 install --upgrade pip

Для логотипов можно использовать векторные (svg) или растровые (png) изображения с альфой. Резюме собирается в PDF формат с помощью Latex-a. Шрифт — Arial Narrow, который популярен в резюме из-за своей ширины.

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

  • группированный список с градациями (эксперт, новичок);
  • таблица (сетка — градация / навык);
  • замешивание навыков в проекты;
  • дополнение предыдущих пунктов опытом в годах в скобках.

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

Пять лет назад я считал свой уровень C++ значительно выше, чем считаю сейчас, хотя за это время многократно вырос в этом направлении. Более того — собственная оценка своего уровня (новичок/эксперт) не несет большого конструктива. Это и легло в основу реализации данной секции. Единственная объективная оценка, которую я могу дать своему навыку — это сколько времени я его использовал.

Я помню, что первую программу на C++ написал в 7м классе, а последний раз что-то писал сегодня. Но как же оценить этот временной отрезок? Ведь неправильно же отнять от своего возраста 13 лет и написать результат в опыт — ведь были временные отрезки, когда я ничего не писал, и навык не рос.

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

Более того, мне и самому интересно иногда посмотреть на свою статистику — так ли я опытен, как мне казалось, и наоборот. А глядя на такую статистику HR уже может быстро сориентироваться — подходите ли вы на вакансию или нет.

Как это выглядит

Все в совокупности выглядит вот так:


Для статьи специально привожу версию на A5 формате, по умолчанию же компилятор настроен на A4.

Обратная связь

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

Но не исключаю, что это возможно. Я также делал проект из расчета на позиции Software Engineer / Software Developer, поэтому понятия не имею, насколько мои наработки пригодны для других позиций.

Куда двигаться дальше

Дальнейший план развития весьма тривиален, правда включает в себя нетривиальную реализацию:

  • Реализовать умную компрессию. Давать минимум информации на старые проекты, максимум — на актуальные и релевантные. Сейчас это реализовано только для отсечения старых публикаций, но они и так занимают немного места. Нужно соблюдать лимиты объема и не нарушать правила жанра.
  • Реализовать фильтр релевантной информации. В простейшем случае создается онтология навыков с профилями (embedded, C++, fintech, front-end и др), и профиль является параметром для компилятора. В идеале — даем ссылку на вакансию (пусть это страница на linkedin), компилятор в простейшем случае ищет на ней ключевые слова или анализирует с использованием БД/ML и фильтрует релевантные навыки и проекты.

А пока, всем добра и удачи с поиском работы!


Оставить комментарий

Ваш email нигде не будет показан
Обязательные для заполнения поля помечены *

*

x

Ещё Hi-Tech Интересное!

MIDI-router на Raspberry Pi

Хочу рассказать о том, как решить проблему, которая наверняка знакома любителям аппаратных синтезаторов. Причем, по понятным причинам хочется все это сделать не используя компьютер. Что делать, если хочется состыковать MIDI-контроллер и синтезатор, но у одного из них есть только USB ...

DynamicData: Изменяющиеся коллекции, шаблон проектирования MVVM и реактивные расширения

В феврале 2019 года состоялся релиз ReactiveUI 9  —  кроссплатформенного фреймворка для построения приложений с графическим пользовательским интерфейсом на платформе Microsoft .NET. ReactiveUI  — это инструмент для тесной интеграции реактивных расширений с шаблоном проектирования MVVM. Знакомство с фреймворком можно начать с ...