Русский
Русский
English
Статистика
Реклама

Вакансии

Ускоряем нейросеть на уровне железа интервью с разработчиком компиляторов

25.03.2021 18:04:40 | Автор: admin

Обыденное представление о Deep Learning состоит в том, что для достижения успеха нужно хорошо знать математику и уметь программировать на Python. Но все становится немного сложнее, как только мы начинаем говорить о реализации нейросетевых решений в железе, где критична производительность. Мы пообщались с руководителем направления российского Исследовательского центра Samsung Вячеславом Гарбузовым, чтобы понять, как ускоряют работу нейросетей на аппаратном уровне, при чем тут компиляторы и какие знания требуются в этой редкой профессии. И самое интересное - какие вакансии в его подразделении открыты в настоящий момент.

Примеры работы нейросети на смартфоне: оптимизация сцены,классификация изображений, подсказка лучшей композиции кадраПримеры работы нейросети на смартфоне: оптимизация сцены,классификация изображений, подсказка лучшей композиции кадра

Слава, привет! Расскажи о себе, чем занимается твоя команда сейчас.

Привет! Я руковожу управлением разработки ПО для систем на кристалле Исследовательского центра Samsung. Мы занимаемся разработкой SDK для ускорения исполнения моделей глубинного обучения (Deep Learning)на процессорах Exynos.

Кто твои непосредственные заказчики?

Наша работа связана с компонентным бизнесом и нашим заказчиком является Samsung Semiconductor. Мы ближе к земле.

Правильно ли я понимаю, чтомобильныйпроцессор Exynosв основном используется в телефонах Samsung и больше нигде?

Вовсе нет. Exynos используется в смартфонах других производителей. Кроме того, Exynos - это не только мобильные системы на кристалле (SoC). Есть микроконтроллеры, компоненты Интернета вещей. Крупные игроки на автомобильном рынке тоже заинтересованы в наших продуктах.

Расскажи про новый Exynos и AI-ускоритель в нем

Разработкой Exynos SoCи SDK к нему занимается подразделение Samsung System LSI (large-scale integration - высокоинтегрированные чипы). Узнать подробнее про новый Exynos 2100 можно извидеопрезентации. В разделе AI and Camera кратко рассказывается, что такое AI-ускоритель. Это железо для ускорения работы нейросетей. Обучение сети производится заранее, а исполнением (inference) как раз занимается это железо.

Что такое inference, что значит выполнить сеть на устройстве? Есть нейросеть, она уже натренирована. На вход готовой нейросети мы подаем картинку с собачкой или кошечкой, а на выходе это устройство дает 0 или 1. То есть наш сопроцессор не занимается обучением нейросети самостоятельно, его задача просто отработать готовую сеть.

Для работы нейросетевого сопроцессора нужен программный инструментарий. Такой инструмент есть, он называется Samsung Neural SDK.

Для каких задач это всё используется?

Применения в телефоне в основном связаны с камерой: живой фокус, ночная съемка, Bixby Vision, обнаружение лиц, улучшающее картинку.

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

Сегментация людей и животных на фотоСегментация людей и животных на фото

Расскажи, как устроен этот AI-ускоритель.

Он состоит из двух частей:

  1. NPU (Neural Processing Unit - обработчик нейросетей). Фактически это ускоритель операций с тензорами. Он умеет быстро делать свертки (convolution), пулинги (pooling) - набор операций, популярных в глубинном обучении.

  2. DSP (digital signal processor - цифровой обработчик сигналов).Это процессор, специализированный под выполнение определенных задач. Его разрабатывают изначально под конкретные алгоритмы. Ребята проектируют этот DSP под распознавание лиц или под более широкий круг задач.

Это единый кластер в составе одной системы на кристалле. Для него мы и разрабатываемSDK. У нас две команды, одна работает над NPU, другая, соответственно, над DSP.

Какие компиляторные задачи у вас с NPU?

Компилятор для NPU - это та штука, которая превращает граф на выходе Deep Learning-фреймворка в последовательность процессорных команд. Отличие от обычного компилятора в том, что мы генерируем код не для CPU, а для нейросетевого ускорителя. Это другой процессор со своим языком. И чтобы вся система работала быстрее, мы оптимизируем ее на уровне компилятора.

В чем суть оптимизации? По большей части это memory allocation (оптимизация работы с памятью) и instruction scheduling (параллелизм на уровне инструкций). Наш процессор может несколько инструкций выполнять одновременно, например, считать ту же самую свертку и загружать данные для свертки. Мы должны сгенерировать код для этого процессора так, чтобы оптимизировать работу с памятью и максимизировать параллелизм.

А что с DSP? Какие задачи там?

Это уже более-менее похоже на традиционный процессор. Если свертку наш NPU умеет делать на уровне железа, то здесь мы должны эту свертку описать на языке C++ и исполнить на DSP. Зачем нужен отдельный сопроцессор, чтобы выполнять ту же самую свертку? Например, NPU занят в какой-то момент, и мы хотим параллельно решать другую задачу. Некоторые операции мы в принципе на NPU выполнить не можем.

У нас достаточно простой DSP, основанный на VLIW-архитектуре (very long instruction word очень длинная машинная команда). Особенность нашего DSP в том, что он аппаратно достаточно простой, и от компилятора требуется серьезная оптимизация.Мы делаем на базе LLVM компилятор для этого DSP.

Поговорим о других вещах. Где ты работал до Samsung?

Непосредственно до Samsung я работал в Topcon Positioning Systems и в Lynx Software Technologies. Занимался разработкой RTOS и инструментов.

Где и на кого ты учился?

Учился в МГУ на физика. Занимался ускорителями элементарных частиц, электронов в частности. Занимался автоматизацией физического эксперимента, системой управления для промышленного ускорителя.

Как помогает образование физика в твоей профессии?

В профессии руководителя это очень сильно помогает, позволяет смотреть на вещи широко.

Работая в твоем отделе, насколько важно хорошо разбираться в железе?

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

А в глубинном обучении?

Базовое представление надо иметь. Я полагаю, что современные выпускники вузов это всё уже знают на определенном уровне. Это всегда хорошо иметь в бэкграунде. Например, курс Нейронные сети и компьютерное зрение Samsung Research Russia на Stepik я добавил в закладки, но пока не прошел. И кстати, вчера в рамках этого курса былалекцияна YouTube про Embedded Inference как раз на эту тему - "Мобильные архитектуры нейросетей и фреймворки для их запуска".

Когда мы начинали этот проект в 2018 году, мне сказали: нужен компилятор для Deep Learning. Нам потребовалось найти людей, которые одновременно умеют и в Deep Learning, и в железо, и в компиляторы. И это сложно, потому что таких людей очень мало. Потом мы поняли, что требование знания Deep Learning не столь критично, всё-таки заказчики от нас просили только компилятор.

С выпускниками каких вузов тебе интересно работать?

Мне приятно работать с выпускниками МФТИ, особенно с теми, которые прошли через базовые кафедры ИСП РАН или Intel. У нас в отделе достаточно много ребят из Intel. По факультетам - ФУПМ, ФРКТ. Если говорить о других вузах, то это и МГУ - забавно, что много моих знакомых компиляторщиков заканчивали физфак. Также это ВШЭ, где есть МИЭМ, там учат проектировать железо, FPGA. А компиляторы можно условно рассматривать как часть железа в принципе.

В нашем Исследовательском центре мы проводили вечернюю школуSamsung Compiler Bootcamp, и , в основном, в ней учились студенты из Бауманки, МГУ и Вышки.

На тему FPGA - полезно ли это изучать?

Как бэкграунд - да, это правильно.

А вообще, много ли таких центров в Москве, где занимаются компиляторами?

Intel, JetBrains, Positive Technologies, Huawei. Из российских - МЦСТ, которые Эльбрус, они тоже компиляторы делают. Например, Роман Русяев, наш коллега из Исследовательского центра Samsung и разработчик компиляторов, как раз оттуда пришел (см. егостатьюна Хабре о Concept-Based Polymorphism), он часто выступает на конференциях и пишет статьи.Он активный участник C++ Community. Например, вот пара его выступлений где затрагивается тема оптимизации при помощи компилятора :"Исключения C++ через призму компиляторных оптимизаций","Настоящее и будущее copy elision".

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

О каких мировых трендах в компиляторов можно сейчас говорить?

Можно выделить такие тренды:

  1. Доминирование проекта LLVM

  2. Обобщение компилятора для различных предметных областей посредством универсального промежуточного представления (MLIR)

  3. Объединение различных инструментов для анализа и преобразования кода (компиляторов, анализаторов, performance estimators, линтеров и пр.) в рамках одного проекта

  4. Активные попытки использования высокой науки в промышленных компиляторах (formal verification, polyhedral optimizations, более подробно встатье)

Какие требования к соискателям, будущим разработчикам компиляторов, ты бы озвучил?

Обязательные требования: знание С/С++ на хорошем уровне. Понимание того, как устроены компиляторы, опыт их разработки. Понимание устройства операционной системы. Умение разбираться в больших объемах чужого кода. Навыки отладки embedded-устройств. Знание практик программной инженерии - непрерывная интеграция, ревизия кода, отслеживание задач. Владение скриптовыми языками - Bash или Python.

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

Работая в международной компании, как складывается коммуникация с иностранными коллегами? Как вы решаете вопросы взаимодействия с коллегами в пандемию?

Мы активно взаимодействуем с командами из других стран Корея, Китай, Индия, Израиль, США. До карантина они частенько приезжали к нам в гости, а мы к ним.

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

Какие книжки о компиляторах ты бы посоветовал?

Коллеги рекомендуют начинать с "Modern Compiler Implementation in ML", автор Andrew W. Appel.

Какие твои любимые книги о программировании вообще?

Керниган и Ричи Язык программирования С. Они классные. Еще Керниган и Пайк, Практика программирования. Там настолько все четко сделано.

Что скажешь об онлайн-курсах?

Если говорить о курсах по смежным темам, то по глубинному обучению это курс Samsung о нейронных сетях в компьютерном зрении, и известный курс Эндрю на (Andrew Ng). Полезенкурс по С++от Яндекса.

LLVM или GCC - что полезнее изучать?

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

Какие инструменты командной работы используете?

Используемgit, точнее корпоративный github. Важно сказать, что мы делаем Code Review, и это неотъемлемая часть работы наших инженеров. Здорово, что все друг другу помогают и делятся знаниями. Также мы делимся знаниями с помощью Confluence, у нас есть вики-портал с внутренней документацией по нашим разработкам. Есть Jira для отслеживания задач. И есть свой чат на основе Mattermost, то есть практически Slack - без него на удаленке мы бы вообще не выжили. Исповедуем ContinuousIntegration, а также автоматизируем все, что можно автоматизировать.

А что насчет методов Agile?

Мы не привязаны к какой-то конкретной методологии. Берем полезные практики, которые подходят нашему проекту, из разных методологий. Например, из скрама мы берем Daily Scrum - ежедневные собрания. У нас есть итеративное планирование. И так далее.

Не могу не спросить. А вот во время пандемии, когда все по видео общались, вы все равно Daily Scrum стоя проводили?

Ну нет, всё-таки все сидели.

Сколько у вас длится Daily Scrum?

От 15 минут до часа, потому что иногда он перетекает в технические дискуссии.

Что еще интересного бывает?

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

----

А сейчас самое интересное: ВАКАНСИИ!

У нас открыты две вакансии, соответственно поNPUи поDSP. Если вас заинтересовало, откликайтесь на вакансию прямо на HeadHunter, и возможно, мы с вами встретимся на собеседовании.

Вопросы задавала: Татьяна Волкова, куратор трека по Интернету вещей социально-образовательной программы для вузов IT Академия Samsung

Отвечал: Вячеслав Гарбузов, руководитель направления, российский Исследовательский центр Samsung

Подробнее..

Идеальная вакансия для разработчика

01.02.2021 14:09:27 | Автор: admin

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

Плохая вакансия

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

Чем это чревато:

  • Часть потенциальных кандидатов просто-напросто игнорируют такие вакансии, хотя их ценности и желания могут совпадать с тем, что предлагает компания. Компания теряет кандидатов.

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

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

Примеры плохих вакансий: DOU, HH, Djinni, LinkedIn. Если вы смотрите ссылки, а вакансии внутри не доступы, значит, прошло уже много времени с момента публикации статьи.

Хорошая вакансия

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

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

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

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

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

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

Плохо: не указывается.

Хорошо: 2 миллиона пользователей, 15 миллионов доставок в месяц. К концу года мы планируем уменьшить time to house на 20 процентов, до 40 минут и делать 20 миллионов доставок в месяц.

Команда. Расскажите про работников компании.

Плохо: талантливый и дружный коллектив.

Хорошо: над продуктом трудится несколько команд (в сумме больше 50 инженеров): фронт-энд, бэк-энд, бизнес-аналитики, дата-сайентисты, тестировщики, мобильные разработчики на iOS и Android, product и project менеджеры, фаундеры активно принимают участие в процессах. Ты будешь работать в команде из 4 дата-сайентистов, будешь активно взаимодействовать с вышеперечисленными командами каждый день.

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

Плохо: не указывается.

Хорошо: покрываем 100% кода тестами на pytest; поддерживаем 25 микросервисов, написанных на Go, Python, и Java, в GCP c Kubernetes; для хранения кода используем Github.

Требования. Указывайте четко сформулированные и реальные требования к кандидату.

Плохо: Python, Django, PostgreSQL, знание микросервисов, самостоятельность.

Хорошо: знает Python не только в контексте фреймворков; был опыт написания веб-приложений и RESTful API; знает и умеет масштабировать базы данных; знает как мониторить и оптимизировать запросы к базе данных; понимает преимущества и недостатки микросервисной архитектуры; может собрать и прояснить требования, написать код и покрыть тестами, развернуть на продакшене.

Будет плюсом. Указывайте, что вы еще цените в кандидатах, на случай, если он не подходит по некоторым основным требованиям.

Плохо: не указывается.

Хорошо: опыт работы в продуктовых компаниях; свои open source проекты либо вклад в чужие; английский на уровне Advanced (C1).

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

Плохо: интересные проекты.

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

Условия. Расскажите то, насколько вы заботитесь про сотрудников компании.

Плохо: команда профессионалов, нет бюрократии.

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

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

Плохо: не указывается, либо указывается с большим разбросом типа $1500-4500, что, зачастую, сигнал для кандидата о недобросовестности компании.

Хорошо: указывается, с маленьким разбросом $2500-3300, или вообще без.

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

Плохо: не указывается.

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

Ссылки. Познакомьте кандидата с вашей компанией, продуктом, командами, культурой заранее.

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

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

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

Заключение

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

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

Подробнее..

4-в-1, суперкоманда и Jira-разработчик, который на самом деле Java самые странные вакансии в IT

03.11.2020 18:06:31 | Автор: admin

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

За себя и за Сашку: столичная вакансия

Начинаем с многорукого многонога. Компания хочет закрыть сразу четыре позиции одним человеком: и администрируй, и с базами данных поработай, и на С# нам напиши, и бухгалтерам помоги. В общем, работать надо будет и за себя, и за Сашку. При этом платить ему будут всего 150 тысяч рублей. И это в Москве! Примечательно, что вакансия уже в архиве: неужели кто-то согласился? На внезапное озарение работодателя, что вообще-то это несколько разных специальностей, не надеемся.

Фронтенд, но немножечко бэкенд

Ещё одному работодателю тоже хочется всего и сразу: Javascript, 1C Bitrix, PHP и Linux. HTML5, видимо, на сдачу. Интересно, а платят сколько? Платят ли вообще? На что надеется работодатель? Очень маловероятно, что найдётся человек, который удовлетворит всем требованиям. Так много вопросов и так мало ответов.

Jira или Java?

А теперь внимание, знатоки! Что тут не так?

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

Сеньор, который знал всё

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

Главное как следует повеселиться! И соблюдать ТК

А этот работодатель очень мило рассказывает, что в компании постоянно проводятся корпоративы. Но снова: и C++, и Golang, и Linux. Кажется, это многовато. Хотя есть мнение, что связка Golang и C++ весьма распространена. В одном только Гугле 2,6 млн. ответов по такому запросу.

Есть подозрение, что следующие три вакансии опубликовали люди, которые не до конца понимают, что происходит в IT-блоке, и ищут того, кто понимает хоть немного. Смотрите сами.

Невнятные требования, зато официальный дилер

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

Программировать коров

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

Руководить сервис-деском и разрабами: а что, так можно было?

Помните, по интернетам ходила такая картинка?

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

Работа в команде профессионалов

Нас всегда смущают вакансии, где ищут супергероев или разбрасываются высокими словами. Как вот эта:

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

А на сладкое

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

Какие самые странные вакансии встречались вам? А может, вы даже ходили на собеседование к этим компаниям? Поделитесь своим опытом в комментариях.

А чтобы не встречаться с подобными описаниями, заходите на headz.io. Наша модерация не пропускает неинформативные вакансии и выясняет у работодателя всё, что понадобится разработчикам, чтобы принять решение откликаться или нет на предложения.

Подробнее..

Много эпитетов, ни слова о команде и другие ошибки в составлении вакансии

14.11.2020 14:23:20 | Автор: admin

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

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

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

Слишком много эпитетов или слишком мало информации

Здесь два варианта событий.

Ноль информации

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

Такое бываетТакое бывает

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

Как исправить. Просто добавьте больше информации и контакты.

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

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

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

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

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

Или так.

Трудно понять кто нужен и зачем

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

Как исправить. Банально, но добавить подробностей, например, разработка какого именно функционала в каком именно ПО. Примерно так.

Разносторонние обязанности также настораживают.

Настораживает также, что не требуется опыта работыНастораживает также, что не требуется опыта работы

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

Старайтесь не писать банальные требования к кандидатам. Знания и опыт понятия расплывчатые. Обязанности программиста-разработчика явно не могут уместиться в одну строку из шести слов, но постоянно встречаются вакансии в которой требуются знания (подставьте слово). Этой болезнью страдают как фермерские хозяйства, так и серьезные IT-компании.

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

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

Ни слова о команде

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

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

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

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

Условия работы

Обычно этот пункт описывают достаточно подробно.

Но часто описания стандартные: офис, 5/2, соблюдение ПК. Чем они отличаются от остальных непонятно.

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

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

Об этом важно писать. Если у в компании частые переработки, нужно предупредить. Скрывать нет смысла: хорошо, если кандидат узнает об этом на собеседовании, а если на испытательном сроке?Не все готовы к переработкам, но зато откликнутся те, кого это не смущает.

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

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

Итого по пунктам

Как составлять вакансию для IT-специалиста? Подходить со здравым смыслом:

  • Добавлять описание компании, но без высокопарности и хвастовства.

  • Чётче формулировать требования и обязанности. Писать код или поддерживать старые проекты и создавать новые звучит также, как работать работу.

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

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

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

Подробнее..

Разведопрос из жизни программиста Группы М.Видео-Эльдорадо

17.02.2021 14:23:34 | Автор: admin


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

Если вдруг вы пропустили начало сериала Из жизни программиста Группы М.Видео-Эльдорадо: взгляд изнутри, то по ссылке, можно прикоснуться к истокам. А пока под катом с рассказом от первого лица вас уже заждался Евгений Воробей, руководитель направления разработки, Офиса Данных Группы М.Видео-Эльдорадо.



My way


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

На самом деле, отправлялся на собеседование в М.Видео-Эльдорадо, уже имея на руках предложение от компании на букву Я. Шел на интервью с целью, скорее, потроллить ритейлеров, возомнивших себя ИТ-компанией, нежели реально устраиваться на работу. Помню, как удивился после первого же общения с людьми меня собеседовавшими. Приятно впечатлил их уровень знаний, амбиции и кругозор. Оказалось, что эти люди точно знают, чего хотят и, главное, понимают, как этого добиться.

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

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



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


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

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

Офис цифровой трансформации отвечает за фокус на цифровизации, продуктовую методологию и прозрачность по реализации стратегических задач.

Офис данных отдельное направление, которое входит в ИТ-департамент. Мы выстроили рабочие процессы таким образом, что есть R&D, тестирующий гипотезы (и делающий это быстро) и есть офис разработки, реализующий проверенные и подтвержденные бизнесом решения, стабильно работающие в продакшене.



Топовые технологии


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

Мы стремимся использовать исключительно современные решения, (предпочитаем open-source) и самые распространенные инструменты. Хотите прокачаться в новых актуальных технологиях? Приходите к нам, они у нас точно есть.

Виртуализация у нас только Kubernetes, контейнеризация только docker, операционная система только Linux и дистрибутивы (на самом деле на рабочем ноутбуке ты можешь поставить что хочешь, главное не пиратить мы сами закупаем нужный софт), базы PostgreSQL+redis+s3 и так далее. Мы берем топовые технологии, которые только доступны, в плане распространенности, избегая маргинальных вариантов за исключением каких-то внутренних решений, которые оправданы в конкретных ситуациях.

Творчество и гибкость


Например, для управления пайплайнами обработки данных, мы не используем популярные фреймворки типа MLFlow, Airflow и другие. У нас для этого написана собственная система. Да, это велосипед, но он вполне оправдан. Мы прекрасно знали, зачем он был нам нужен и почему мы до сих пор не перешли ни на что другое.

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



Все ты можешь


Процессы сложно пока назвать идеальными. Все таки компании 30 лет, и это действующий бизнес. 1,2 триллиона клиентских визитов в год означают, что пока ты читал этот материал, тысячи человек зашли на сайт, в магазин, в апп, что-то посмотрели и заказали. Каждый день, 24 на 7.

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

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

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

Кому рады


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

Основной язык у нас python (удобно писать с data-science специалистами на одном языке), но мы разделяем специалистов на отдельные направления:

  • Классических backend-разработчиков (которые занимаются задачами реализации нагруженных и не очень api, и не обязательно http и тем более не обязательно rest)
  • Прикладных или разработчиков общего профиля. Они занимаются остальными задачами превращением прототипов от data-science специалистов в продакшен проекты, разработкой внутренних программных решений, оптимизацией алгоритмов.
  • Инженеров данных тут все как у всех, сильное знание sql, аналитических инструментов и подходов.



Помимо этого нам нужны:
  • Фронтенд-разработчики. Не для сайта компании, а для разработки интерфейсов к нашим аналитическим инструментам (typescript, sccs, react)
  • Devops-инженеры. Мы не привыкли совмещать разработчиков и девопсов, каждый должен заниматься тем, что ему интересно
  • Тестировщики и автоматизаторы. Задачи тестирования у нас осложнены нашей спецификой большими данными и машинным обучением, а также огромной сложностью бизнес процессов. Вызов для настоящего спеца!
  • Аналитики качества данных у нас их много и мы хотим, чтоб в них был порядок и не готовы этим жертвовать
  • Бизнес\системные аналитики\ПМ на наш взгляд важно, чтобы в рамках одной компетенции аналитик мог пообщаться на одном языке и с бизнесом и с разработчикам, а кроме того помог бы команде приоритизировать задачи и управлять релизным циклом. Микроменеджмент от аналитика не требуется наши разработчики достаточно сознательны и самостоятельны, именно таких ты всегда и искал (тут без сарказма)
  • Delivery Manager куда же без них. У нас много продуктов и проектов, мы активно развиваемся и технически можем делать еще больше но нам нужны люди, которые возьмут на себя развитие конкретных проектов и направлений.

Самое интересное впереди. Приходи, будет интересно.
Подробнее..

Как я ходил на удалённые собеседования JAVA-разработчика, чтобы лучше нанимать людей

16.03.2021 10:10:28 | Автор: admin

Если обычные разработчики ходят на собеседования тренироваться и набирать опыт, то я пошёл выписывать все косяки. Чтобы их не было у меня, потому что я нанимаю людей. Собственно, стало интересно, как устроено в других компаниях и я пошёл собеседоваться. Началось всё c базового набора: аккаунт зума, почта, резюме. Дальше можно пройти за неделю 10-12 собеседований, на что до тотальной удалёнки ушёл бы месяц.


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


image


Выложил на HH. Дальше ждать пришлось недолго. Первый час уже несколько откликов и звонок. Всего за сутки было 20 откликов и пять звонков. Предложений много, все с самыми интересными проектами, стеком, ДМС и макбуком (которого пока нет, но обязательно пришлём через месяц-два).


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


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


Первичный отсев


Что сразу попадало в отсев:


Когда HR пишет или говорит, что проекты классные, но не может сказать, чем они классные. Или хотя бы какие это проекты. Будет что-то там-то это не объяснение. Ещё одна интересная фраза команда 30 человек по скраму, но это не точно. Сразу в мусорник, нам не нужны неудачники.


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


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


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


Организация


Интересное:


  • Ачивка Самая быстрая рука на Диком Западе 40 минут на собеседование, обратная связь я бы взял и оффер.
  • Ачивка Тяжело, как поцеловать кобру обещанный один этап превратился в два по два часа, потом я получил оффер.
  • HR-специалисты в большинстве своём сами адекватны. Девушек больше, чем парней, но до этого много лет назад парней я вообще не видел на первичных собеседованиях. Почти никто не путал Java и Javascript. Несколько раз делали технический скрининг. Мало кто пытался копаться в моём личном текущей зарплате, сколько у меня детей или домашних животных, чем я занимаюсь в свободное время и так далее. Иногда собирают информацию о текущих офферах. В целом очень положительное впечатление.
  • Во всех отобранных мной вариантах собеседования назначались оперативно, с учётом моих хотелок. На собеседование все пришли вовремя.

Интересный момент кто собеседует. В моём случае я собрал большинство доступных вариантов: нанимающий менеджер, архитектор направления, ведущий разработчик проекта, все подряд по кругу. Самый непонятный момент это когда приходит чуть ли не вся команда посмотреть на тебя, всем надо позадавать вопросы. А про тайминг они как-то забыли. Тут мой совет напомнить где-то за 15 минут до конца отведённого времени, что осталось его не так много и пора финализироваться. Работает, причём в вашу пользу.


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


Везде предлагали белое оформление и всё по ТК.


Что спрашивали


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


  • Java 8/11.
  • Spring.
  • Rabbit/Kafka.
  • Camunda.

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


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


Были задачи на алгоритмы, но редко.


По проектам могу сказать, что чаще всего это:


  • T&M.
  • Пресейлы.
  • Продуктовая разработка.
  • Архитектура.

Команды в проектах были от 5 до 30 человек с эджайлом в придачу.


  • Пять человек одна компания.
  • Пятьсемь три компании.
  • Продуктовые команды больше десяти человек десять компаний.
  • По-разному (от 5 до 30) остальные.

Проектный подход в примерно одинаковых долях:


  • Agile в разных вариациях.
  • Waterfall.
  • Всё подряд.

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


Обратную связь мало кто даёт просто так. Обычно надо просить, уверен, что есть ситуации спасибо, мы сами с вами свяжемся в случае успеха, мы перезвоним, но я их не нашёл. Я так понял, что лучше сразу попросить самому на собеседовании: и вам время экономит, и бонусом может быть, потому что показывает, что вы хотите развиваться через обратную связь. Офферы присылали либо в тот же день, либо через один-два дня, неделями не ждал.


Результаты


Основными критериями для принятия решения я обозначил:


  • Задачи.
  • Деньги.
  • Стек.
  • Компания (бренд/польза для меня).

Дополнительно при прочих равных:


  • Скорость процесса.
  • Техника.
  • Соцпакет.

image

Выписывал результаты


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


Теперь деньги:


  • Редко, но было, меня пытались ужать по деньгам ещё на этапе HR (непонятно зачем) или давали ровно столько, сколько я попросил изначально.
  • В остальных случаях это +5-25 % к стартовой сумме. Иногда говорили про премию, однозначного ответа хорошо это или плохо нет, но могу отметить, что в случае хорошо работаем работу и наличии квартальных премий вполне можно хорошо заработать, больше чем в предложениях голый оклад, да и психологически приятно получать такую мотивацию время от времени.
  • Иногда говорили сразу про премий не будет, иногда была квартальная за выработку или по другому показателю, иногда годовая от личной эффективности и прибыли компании, иногда небольшие нерегулярные поощрения 1015 тысяч.
  • Ещё был интересный кейс если в проекте остались деньги. Тут я либо должен был поверить, что менеджмент у них просто звёзды, то ли с ходу смириться, что премий не будет.

Дальнейший рост зарплаты и позиции везде обещали. Где-то по формальным признакам, где-то с индивидуальными особенностями.


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


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

Подробнее..

Из песочницы Анализ вакансий с использованием кластеризации

22.11.2020 20:18:28 | Автор: admin
В статье приводится метод анализа вакансий по поисковому запросу Python с помощью модели кластеризации Gaussian Mixture Model (GMM). По каждому выделенному кластеру будут приведены наиболее востребованные навыки и диапазон заработных плат.

Для чего проводилось данное исследование? Мне хотелось узнать:

  • В каких прикладных направлениях используется Python
  • Какие требуются знания: базы данных, библиотеки, фреймворки
  • Насколько востребованы специалисты каждого направления
  • Какие зарплаты предлагают



Загрузка данных


Вакансии загружались с сайта hh.ru, с использованием API: dev.hh.ru. По запросу Python было загружено 1994 вакансии (регион Москва), которые были разделены на обучающий и тестовый наборы, в пропорции 80% и 20%. Размер обучающего набора 1595, размер тестового 399. Тестовый набор будет использован только в разделах Топ/Антитоп навыков и Классификация вакансий.

Признаки


По тексту загруженных вакансий были сформированы две группы наиболее часто встречающихся n-грамм слов:

  • 2-граммы на кириллице и латинице
  • 1-граммы на латинице

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

После отбора n-грамм первая группа содержала 81 2-граммы, а вторая 98 1-граммы:
n n-грамма Вес Вакансии
1 2 на python 8 258
2 2 ci cd 8 230
3 2 понимание принципов 8 221
4 2 знание sql 8 178
5 2 разработка и 9 174
... ... ... ... ...
82 1 sql 5 490
83 1 linux 6 462
84 1 postgresql 5 362
85 1 docker 7 358
86 1 java 9 297
... ... ... ... ...

Разбиение вакансий на кластеры было решено сделать по следующим критериям в порядке приоритета:
Приоритет Критерий Вес
1 Сфера (прикладное направление), должность, опыт
n-граммы: машинного обучения, администрирования linux, отличное знание
7-9
2 Инструменты, технологии, программное обеспечение.
n-граммы: sql, ос linux, pytest
4-6
3 Прочие навыки
n-граммы: техническое образование, английского языка, интересные задачи
1-3

Определение к какой группе критериев относится n-грамма, и какой вес ей присвоить, происходило на интуитивном уровне. Приведу пару примеров:
  1. С первого взгляда Docker можно отнести ко второй группе критериев с весом от 4 до 6. Но упоминание Docker в вакансии, скорей всего говорит о том, что вакансия будет на должность DevOps инженер. Поэтому Docker попал в первую группу и получил вес равный 7.
  2. Java тоже попадает в первую группу, т.к. в большинстве рассматриваемых вакансий с присутствием слова Java ищут Java-разработчика с пунктом будет дополнительным преимуществом знание Python. Бывают и вакансии с поиском человека-оркестра. Как первые, так и вторые вакансии меня не интересуют, поэтому их я хочу отделить от остальных вакансий, соответственно присваиваю Java наибольший вес 9.

Чем больше вес у n-граммы тем сильней будут группироваться вакансии по данному признаку.

Преобразование данных


Для вычислений каждая вакансия была преобразована в вектор с размерностью 179 (число отобранных признаков) из целых чисел от 0 до 9, где 0 означает что i-ая n-грамма отсутствует в вакансии, а числа от 1 до 9 означают присутствие i-ой n-граммы и ее вес. Далее в тексте под точкой понимается вакансия представленная таким вектором.
Пример:
Допустим список n-грамм содержит всего три значения:
n n-грамма Вес Вакансии
1 2 на python 8 258
2 2 понимание принципов 8 221
3 1 sql 5 490

Тогда для вакансии с текстом.

Требования:

  • Опыт разработки на python от 3-х лет.
  • Хорошее знание sql

вектор равен [8, 0, 5].

Метрика


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

Суть метода в том, чтобы понизить размерность данных, при этом максимально сохранить пропорции расстояний между точками множества. Понять по формулам, как работает t-SNE довольно сложно. Но мне понравился один пример найденный где-то на просторах интернета: допустим у нас есть шарики в трехмерном пространстве. Каждый шарик мы соединяем со всеми остальными шариками невидимыми пружинами, которые никак не пересекаются и не мешают друг другу при пересечении. Пружины действуют в две стороны, т.е. они сопротивляются как отдалению, так и приближению шариков друг к другу. Система находится в стабильном состоянии, шарики неподвижны. Если мы возьмем один из шариков и оттянем его, а затем отпустим то за счет силы пружин он вернется в исходное состояние. Далее мы берем две большие пластины, и сжимаем шарики в тонкий слой, при этом не мешая шарикам двигаться в плоскости между двумя пластинами. Начинают действовать силы пружин, шарики перемещаются и в итоге останавливаются, когда силы всех пружин становятся уравновешенными. Пружины будут действовать так, что шарики, которые находились близко друг к другу, останутся относительно близко и на плоскости. Также и с удаленными шариками они будут удалены друг от друга. С помощью пружин и пластин мы перевели трехмерное пространство в двухмерное, сохранив в каком-то виде расстояния между точкам!

Алгоритм t-SNE использовался мною только для визуализации множества точек. Он помог выбрать метрику, а также подбирать весы для признаков.

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


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

Существует большое множество метрик (способов определения расстояния между двумя точками), которые будут хорошо работать на исследуемых данных. Я выбрал в качестве меры расстояние Жаккара, с учетом весов n-грамм. Мера Жаккара простая для понимания, при этом хорошо работает для решения рассматриваемой задачи.
Пример:
Вакансия 1 содержит n-граммы: на python, sql, docker
Вакансия 2 содержит n-граммы: на python, sql, php
Веса:
на python 8
sql 5
docker 7
php 9
Пересечение множеств (n-грамма встречается в 1-ой и 2-ой вакансии): на python, sql = 8 + 5 = 13
Объединение множеств (все n-граммы из 1-ой и 2-ой вакансии): на python, sql, docker, php = 8 + 5 + 7 + 9 = 29
Расстояние =1 (Пересечение множеств / Объединение множеств) = 1 (13 / 29) = 0.55

Была вычислена матрица расстояний между всеми парами точек, размер матрицы 1595 х 1595. Всего 1 271 215 расстояний между уникальными парами. Среднее расстояние получилось равным 0.96, между 619 659 расстояние равно 1 (т.е. сходства нет совсем). Следующая диаграмма показывает, что в целом вакансии имеют мало сходства:


При использовании метрики Жаккара наше пространство теперь выглядит так:


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

Кластеризация


В качестве алгоритма кластеризации была выбрана модель Gaussian Mixture Model (GMM). Алгоритм получает на вход данные в виде векторов, и параметр n_components число кластеров, на которые надо разбить множество. О том, как работает алгоритм, можно посмотреть здесь (на английском языке). Я использовал готовую реализацию GMM из библиотеки scikit-learn: sklearn.mixture.GaussianMixture.

Отмечу, что GMM не использует метрику, а делает разделение данных только по набору признаков и их весам. В статье расстояние Жаккара используется для визуализации данных, подсчета компактности кластеров (за компактность я принял среднее расстояние между точками кластера), и определения центральной точки кластера (типичная вакансия) точка с наименьшим средним расстоянием до других точек кластера. Многие алгоритмы кластеризации использует именно расстояние между точками. В разделе Другие методы будет рассказано о других видах кластеризаций, которые основываются на метрике и тоже дают хорошие результаты.

В предыдущем разделе на глаз было определено, что кластеров скорей всего будет шесть. Так выглядят результаты кластеризации при n_components = 6:



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

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

Для нахождения оптимального числа кластеров n_components, воспользуемся критериями AIC и BIC, о которых можно прочитать здесь. Расчет данных критериев встроен в метод sklearn.mixture.GaussianMixture. Так выглядит график критериев:


При n_components = 12 критерий BIC имеет наименьшее (наилучшее) значение, критерий AIC тоже имеет значение близкое к минимуму (минимум при n_components = 23). Произведем разделение вакансий на 12 кластеров:



Теперь кластеры имеют более компактные формы, как на вид, так и в числовом выражении. При ручном анализе вакансии оказались разбиты на характерные группы для понимания человека. На рисунке выведены названия кластеров. Кластеры под номерами 11 и 4 помечены как и <Trash 2>:

  1. В кластере 11 все признаки имеют приблизительно одинаковые суммарные веса.
  2. Кластер 4 выделен по признаку Java. Тем не менее вакансий на должность Java Developer в кластере мало, часто знание Java требуется как будет дополнительным плюсом.

Кластеры


После удаления двух неинформативных кластеров под номерами 11 и 4 в итоге получилось 10 кластеров:


По каждому кластеру приведена таблица признаков и 2-грамм, которые чаще всего встречаются в вакансиях кластера.

Обозначения:

S доля вакансий, в которых встречается признак, умноженная на вес признака
% процент вакансий, в которых встречается признак/2-грамма
Типичная вакансия кластера вакансия, с наименьшим средним расстоянием до других точек кластера

Data Analyst


Кол-во вакансий: 299

Типичная вакансия: 35805914
Признак с весом S Признак % 2-грамма %
1 excel 3.13 sql 64.55 знание sql 18.39
2 r 2.59 excel 34.78 в разработке 14.05
3 sql 2.44 r 28.76 python r 14.05
4 знание sql 1.47 bi 19.40 с большими 13.38
5 анализа данных 1.17 tableau 15.38 разработка и 13.38
6 tableau 1.08 google 14.38 анализа данных 13.04
7 с большими 1.07 vba 13.04 знание python 12.71
8 разработка и 1.07 science 9.70 аналитический склад 11.71
9 vba 1.04 dwh 6.35 опыт разработки 11.71
10 знание python 1.02 oracle 6.35 базами данных 11.37

С++ Developer


Кол-во вакансий: 139
Типичная вакансия: 39955360
Признак с весом S Признак % 2-грамма %
1 c++ 9.00 c++ 100.00 опыт разработки 44.60
2 java 3.30 linux 44.60 c c++ 27.34
3 linux 2.55 java 36.69 c++ python 17.99
4 c# 1.88 sql 23.02 на c++ 16.55
5 go 1.75 c# 20.86 разработки на 15.83
6 разработки на 1.27 go 19.42 структур данных 15.11
7 хорошее знание 1.15 unix 12.23 опыт написания 14.39
8 структур данных 1.06 tensorflow 11.51 программирования на 13.67
9 tensorflow 1.04 bash 10.07 в разработке 13.67
10 опыт программирования 0.98 postgresql 9.35 языков программирования 12.95

Linux/DevOps Engineer


Кол-во вакансий: 126
Типичная вакансия: 39533926
Признак с весом S Признак % 2-грамма %
1 ansible 5.33 linux 84.92 ci cd 58.73
2 docker 4.78 ansible 76.19 опыт администрирования 42.06
3 bash 4.78 docker 74.60 bash python 33.33
4 ci cd 4.70 bash 68.25 tcp ip 39.37
5 linux 4.43 prometheus 58.73 опыт настройки 28.57
6 prometheus 4.11 zabbix 54.76 мониторинга и 26.98
7 nginx 3.67 nginx 52.38 prometheus grafana 23.81
8 опыт администрирования 3.37 grafana 52.38 систем мониторинга 22.22
9 zabbix 3.29 postgresql 51.59 с docker 16.67
10 elk 3.22 kubernetes 51.59 управления конфигурациями 16.67

Python Developer


Кол-во вакансий: 104
Типичная вакансия: 39705484
Признак с весом S Признак % 2-грамма %
1 на python 6.00 docker 65.38 на python 75.00
2 django 5.62 django 62.50 разработки на 51.92
3 flask 4.59 postgresql 58.65 опыт разработки 43.27
4 docker 4.24 flask 50.96 django flask 24.04
5 разработки на 4.15 redis 38.46 rest api 23.08
6 postgresql 2.93 linux 35.58 python от 21.15
7 aiohttp 1.99 rabbitmq 33.65 базами данных 18.27
8 redis 1.92 sql 30.77 опыт написания 18.27
9 linux 1.73 mongodb 25.00 с docker 17.31
10 rabbitmq 1.68 aiohttp 22.12 с postgresql 16.35

Data Scientist


Кол-во вакансий: 98
Типичная вакансия: 38071218
Признак с весом S Признак % 2-грамма %
1 pandas 7.35 pandas 81.63 машинного обучения 63.27
2 numpy 6.04 numpy 75.51 pandas numpy 43.88
3 машинного обучения 5.69 sql 62.24 анализа данных 29.59
4 pytorch 3.77 pytorch 41.84 data science 26.53
5 ml 3.49 ml 38.78 знание python 25.51
6 tensorflow 3.31 tensorflow 36.73 numpy scipy 24.49
7 анализа данных 2.66 spark 32.65 python pandas 23.47
8 scikitlearn 2.57 scikitlearn 28.57 на python 21.43
9 data science 2.39 docker 27.55 математической статистики 20.41
10 spark 2.29 hadoop 27.55 алгоритмов машинного 20.41

Frontend Developer


Кол-во вакансий: 97
Типичная вакансия: 39681044
Признак с весом S Признак % 2-грамма %
1 javascript 9.00 javascript 100 html css 27.84
2 django 2.60 html 42.27 опыт разработки 25.77
3 react 2.32 postgresql 38.14 в разработке 17.53
4 nodejs 2.13 docker 37.11 знание javascript 15.46
5 frontend 2.13 css 37.11 и поддержка 15.46
6 docker 2.09 linux 32.99 python и 14.43
7 postgresql 1.91 sql 31.96 css javascript 13.40
8 linux 1.79 django 28.87 базами данных 12.37
9 html css 1.67 react 25.77 на python 12.37
10 php 1.58 nodejs 23.71 проектирования и 11.34

Backend Developer


Кол-во вакансий: 93
Типичная вакансия: 40226808
Признак с весом S Признак % 2-грамма %
1 django 5.90 django 65.59 python django 26.88
2 js 4.74 js 52.69 опыт разработки 25.81
3 react 2.52 postgresql 40.86 знание python 20.43
4 docker 2.26 docker 35.48 в разработке 18.28
5 postgresql 2.04 react 27.96 ci cd 17.20
6 понимание принципов 1.89 linux 27.96 уверенное знание 16.13
7 знание python 1.63 backend 22.58 rest api 15.05
8 backend 1.58 redis 22.58 html css 13.98
9 ci cd 1.38 sql 20.43 умение разбираться 10.75
10 frontend 1.35 mysql 19.35 в чужом 10.75

DevOps Engineer


Кол-во вакансий: 78
Типичная вакансия: 39634258
Признак с весом S Признак % 2-грамма %
1 devops 8.54 devops 94.87 ci cd 51.28
2 ansible 5.38 ansible 76.92 bash python 30.77
3 bash 4.76 linux 74.36 опыт администрирования 24.36
4 jenkins 4.49 bash 67.95 и поддержка 23.08
5 ci cd 4.10 jenkins 64.10 docker kubernetes 20.51
6 linux 3.54 docker 50.00 разработки и 17.95
7 docker 2.60 kubernetes 41.03 опыт написания 17.95
8 java 2.08 sql 29.49 и настройка 17.95
9 опыт администрирования 1.95 oracle 25.64 разработка и 16.67
10 и поддержка 1.85 openshift 24.36 написания скриптов 14.10

Data Engineer


Кол-во вакансий: 77
Типичная вакансия: 40008757
Признак с весом S Признак % 2-грамма %
1 spark 6.00 hadoop 89.61 обработки данных 38.96
2 hadoop 5.38 spark 85.71 big data 37.66
3 java 4.68 sql 68.83 опыт разработки 23.38
4 hive 4.27 hive 61.04 знание sql 22.08
5 scala 3.64 java 51.95 разработка и 19.48
6 big data 3.39 scala 51.95 hadoop spark 19.48
7 etl 3.36 etl 48.05 java scala 19.48
8 sql 2.79 airflow 44.16 качества данных 18.18
9 обработки данных 2.73 kafka 42.86 и обработки 18.18
10 kafka 2.57 oracle 35.06 hadoop hive 18.18

QA Engineer


Кол-во вакансий: 56
Типичная вакансия: 39630489
Признак с весом S Признак % 2-грамма %
1 автоматизации тестирования 5.46 sql 46.43 автоматизации тестирования 60.71
2 опыт тестирования 4.29 qa 42.86 опыт тестирования 53.57
3 qa 3.86 linux 35.71 на python 41.07
4 на python 3.29 selenium 32.14 опыт автоматизации 35.71
5 разработки и 2.57 web 32.14 разработки и 32.14
6 sql 2.05 docker 30.36 тестирования опыт 30.36
7 linux 2.04 jenkins 26.79 опыт написания 28.57
8 selenium 1.93 backend 26.79 тестирования по 23.21
9 web 1.93 bash 21.43 автоматизированного тестирования 21.43
10 backend 1.88 ui 19.64 ci cd 21.43


Зарплаты


Зарплаты указаны только в 261 (22%) вакансии из 1167 попавших в кластеры.

При расчете зарплат:

  1. Если указывался диапазон от и до ..., то использовалось среднее значение
  2. Если указывалось только от ... или только до ..., то это значение и бралось
  3. При расчетах использовалась(или приводились) ЗП после уплаты налогов (NET)

На графике:

  1. Кластеры идут в порядке убывания медианной зарплаты
  2. Вертикальная черта в коробке медиана
  3. Коробка диапазон [Q1, Q3], где Q1 (25%) и Q3 (75%) перцентили. Т.е. в коробку попадают 50% зарплат
  4. В усы попадают зарплаты из диапазона [Q1 1.5*IQR, Q3 + 1.5*IQR], где IQR = Q3 Q1 интерквартильный размах
  5. Отдельные точки аномалии, не попавшие в усы. (Есть аномалии не попавшие и на диаграмму)


Топ/Антитоп навыков


Диаграммы строились по всем 1994 загруженным вакансиям. Зарплаты указаны в 443 (22%) вакансиях. Для расчета по каждому признаку отбирались вакансии, где этот признак присутствует, и на их основе вычислялась медианная ЗП.



Классификация вакансий


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

Такой подход хорошо бы работал (в какой-то мере) для запроса Python. А вот для запроса Программист 1С такой подход работать не будет, т.к. для программистов 1С в наименовании вакансий редко указывают конфигурации 1С или прикладные направления. А направлений где используется 1С много: бухгалтерия, расчет ЗП, расчет налогов, расчет себестоимости на производственных предприятиях, складской учет, бюджетирование, ERP системы, розничная торговля, управленческий учет, и т.д.

Для себя я вижу две задачи по анализу вакансий:

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

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

Если использовать встроенный в sklearn.mixture.GaussianMixture метод predict(), то ничего хорошего не получается. Большинство вакансий он относит к большим кластерам, а два кластера из первых трех являются неинформативными. Я использовал другой подход:

  1. Берем вакансию, которую хотим классифицировать. Векторизуем ее и получаем точку в нашем пространстве.
  2. Рассчитываем расстояние от этой точки до всех кластеров. Под расстоянием между точкой и кластером я принял среднее расстояние от этой точки до всех точек кластера.
  3. Кластер с наименьшим расстоянием и является предсказанным классом для выбранной вакансии. Расстояние до кластера указывает надежность такого предсказания.
  4. Для увеличения точности модели я выбрал расстояние 0.87 как пороговое, т.е. если расстояние до ближайшего кластера больше 0.87, то модель не классифицирует вакансию.

Для оценки модели случайным образом отобраны 30 вакансий из тестового набора. В колонке вердикт:

N/a: модель не классифицировала вакансию (расстояние > 0.87)
+: правильная классификация
-: неправильная классификация
Вакансия Ближайший кластер Расстояние Вердикт
37637989 Linux/DevOps Engineer 0.9464 N/a
37833719 C++ Developer 0.8772 N/a
38324558 Data Engineer 0.8056 +
38517047 C++ Developer 0.8652 +
39053305 Trash 0.9914 N/a
39210270 Data Engineer 0.8530 +
39349530 Frontend Developer 0.8593 +
39402677 Data Engineer 0.8396 +
39415267 C++ Developer 0.8701 N/a
39734664 Data Engineer 0.8492 +
39770444 Backend Developer 0.8960 N/a
39770752 Data Scientist 0.7826 +
39795880 Data Analyst 0.9202 N/a
39947735 Python Developer 0.8657 +
39954279 Linux/DevOps Engineer 0.8398 -
40008770 DevOps Engineer 0.8634 -
40015219 C++ Developer 0.8405 +
40031023 Python Developer 0.7794 +
40072052 Data Analyst 0.9302 N/a
40112637 Linux/DevOps Engineer 0.8285 +
40164815 Data Engineer 0.8019 +
40186145 Python Developer 0.7865 +
40201231 Data Scientist 0.7589 +
40211477 DevOps Engineer 0.8680 +
40224552 Data Scientist 0.9473 N/a
40230011 Linux/DevOps Engineer 0.9298 N/a
40241704 Trash 2 0.9093 N/a
40245997 Data Analyst 0.9800 N/a
40246898 Data Scientist 0.9584 N/a
40267920 Frontend Developer 0.8664 +

Итого: на 12 вакансиях нет результата, на 2 вакансиях ошибочная классификация, на 16 вакансиях правильная классификация. Полнота модели 60%, точность модели 89%.

Слабые стороны


Первая проблема возьмем две вакансии:
Вакансия 1 Ведущий программист C++
Требования:

  • Опыт разработки на C++ от 5-ти лет.
  • Дополнительным плюсом будет знание Python

Вакансия 2 Ведущий программист Python
Требования:
  • Опыт разработки на Python от 5-ти лет.
  • Дополнительным плюсом будет знание C++
С точки зрения модели эти вакансии идентичны. Я пробовал корректировать веса признаков на порядок их нахождения в тексте. Ни к чему хорошему это не привело.

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

Другие методы


На странице cluster comparison хорошо продемонстрированы различные алгоритмы кластеризации. GMM единственный, который дал хорошие результаты.
Остальные алгоритмы либо не работали, либо давали очень скромные результаты.

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

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

Заключение


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

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

25.09.2020 10:10:53 | Автор: admin


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

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

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

Вот список того, из чего складывается хороший текст вакансии:

  • Ясное, ёмкое изложение сути деятельности компании без избытка пустых громких слов
  • Ясное, ёмкое изложение тех задач, которыми вам предстоит заниматься на соответствующей должности, без избытка пустых громких слов
  • Ясный, разумный список требований, которые ставит перед вами работа/должность
  • Ясный, разумный список обязанностей, которые предполагает должность
  • Отсутствие упоминаний качеств или умений, которые не имеют прямого отношения к работе (чувство юмора, упорство, настойчивость)

Давайте взглянем на несколько примеров вакансий, которые не подходят под это описание.

Плохой пример 1: требуется человек-оркестр







Перевод
О компании: Компания из списка NASDAQ, поставляющая цифровые решения для Правительства.

Основные обязанности:

  • Делать вклад и принимать ответственность за все аспекты жизненного цикла продукта: дизайн, планирование, разработка, DevOps, тестирование как сервисов, так и веб-компонентов;
  • Стимулировать диалог с партнёрами по бизнесу, помогая определить потребности и найти решения;
  • Сотрудничать и выстраивать прочные связи с технологической группой, а также сторонними поставщиками и оффшор-партнёрами, способствуя созданию дополнительной ценности для клиентов;
  • Уверенно поддерживать существующие программные решения и веб-сервисы, которые написаны на Javascript (Node JS & Angular JS) и размещены на AWS;
  • Обладать способностью и стремлением глубоко погружаться в наработанную кодовую базу и не упускать возможностей, которые предлагает дизайн, функциональность и потребности рфакторинга в коде;
  • Делиться прошлым опытом с другими членами команды, становиться для них наставником с целью улучшить порядок разработки и внедрения.

Необходимые навыки:

  • Хороший практический опыт веб-разработки на Node JS;
  • Практический опыт в параллельном программировании, асинхронном программировании, использовании функций обратного вызова;
  • Разработка микросервисов, архитектуры & REST API;
  • Архитектура системы очередей сообщений SQS или RabbitMQ;
  • Сервисы AWS (SQS, Lambda, EC2, ECS, API Gateway, Beanstalk);
  • Централизованное логирование и анализ логов при помощи AWS Cloudwatch или Elasticsearch;
  • Опыт работы с базами данных NoSQL (MongoDB, DynamoDB);
  • Опыт работы с реляционными базами данных (MySQL);
  • Безопасность (OAuth 2.0), технология единого входа;
  • Разработка через тестирование.

Желательные навыки:

  • Хорошее понимание одностраничных приложений;
  • GraphQL;
  • Запросы SQL & Mongo;
  • Непрерывная интеграция и непрерывная доставка;
  • Разработка гибридных мобильных приложений на Ionic Framework/React Native;
  • Документация API (Swagger).

Преимущества:

  • Конкурентная заработная плата;
  • Бесплатное медицинское страхование, включая стоматологию;
  • План покупки акций;
  • Безвозвратные вложения в пенсионный план 401к;
  • Страхование по инвалидности;
  • Страхование жизни;
  • Оздоровительная программа от компании;
  • Раскованная, весёлая атмосфера в офисе;
  • Отпуск и оплачиваемые праздничные дни;
  • Возмещение расходов на обучение.


Ну, пойдём по порядку.

Делать вклад и принимать ответственность за все аспекты жизненного цикла продукта: дизайн, планирование, разработка, DevOps, тестирование как сервисов, так и веб-компонентов

Бррр. То есть я должен выполнять функции архитектора ПО, разработчика, инженера DevOps и тестировщика одновременно? Любой, кто реально работал в IT-компании, знает, что жизненный цикл продукта на всей его протяженности это не шутки. В стартапах нередко случается так, что один программист сидит на нескольких стульях и тащит на себе весь процесс, но компания из списка NASDAQ это однозначно не стартап. Инженеры DevOps отпочковались в отдельную профессию не просто так.

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

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

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

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

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

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

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

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

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

Да, до кучи будешь ещё и тимлидом.

Требования и желательные навыки соответствуют смехотворно огромному набору обязанностей. Я сильно сомневаюсь, что какой-нибудь разработчик сможет сосредоточиться на разработке на JavaScript, если параллельно ему нужно возиться ещё и с разнообразными сервисами AWS, очередями сообщений, механизмами логирования и анализом логов.

Ближе к концу начинается откровенное перечисление функций DevOps. Для этой работы нужна отдельная ставка ну, разве только попадётся гений, который разбирается примерно во всём на свете и всегда укладывается ровно в час.

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

Плохой пример 2: нам нужны ОТВАЖНЕ программисты на ОТВАЖНУЮ работу




Перевод
Инженерия и технологии, разработчик ПО, начальный уровень

Гражданство США обязательно. Должность предполагает работу в учреждении, куда требуется специальный допуск.

Основные требования: Диплом бакалавра по специальности Программная инженерия или смежным в аккредитованном университете

ОСНОВНЕ ТРЕБОВАНИЯ
job.Qualifications

Компания [вырезано] придерживается политики равных возможностей /
позитивной дискриминации в вопросах трудоустройства. Кандидатуры квалифицированных работников будут рассматриваться без учёта расы, цвета кожи, религии, сексуальной ориентации, гендерной идентификации, страны происхождения, возраста, статуса ветерана или инвалидности.

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

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

Необходимый опыт: минимум четыре года обучения в университете


Основные требования: job.Qualifications

Хе-хе, у кого-то автоматический скрипт лагнул.

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

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

Вы когда-нибудь слышали о вакансиях-приманках? Иногда такое случается в сфере IT: вы приходите собеседоваться на одну должность, а после устройства фактически попадаете на совсем другую. С этой вакансией подобное провернуть очень легко, потому что вы, по сути, не подписываетесь ни на что конкретное. Остерегайтесь текстов такого рода.

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

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

Плохой пример 3: ищем безупречных представителей человечества




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

Конкретные задачи могут включать:

  • Разработку ПО;
  • Администрирование систем;
  • Составление документации;
  • Поддержку пользователей;
  • Контроль качества;
  • Предпродажную поддержку;
  • И прочее, по мере поступления

Вот что нужно, чтобы получить предложение о работе:

  • Диплом бакалавра или магистра по информатике, электротехнике и подобному;
  • От 0 до 3 лет опыта;
  • Предпринимательский дух;
  • Развитое аналитическое мышление;
  • Отличные навыки общения;
  • Глубокая порядочность и сила духа;
  • Энергичность и высокий уровень мотивации;
  • Желание вкладывать много сил в развитие небольшой компании;
  • Стремление к совершенству, готовность сделать всё, что потребуется ради выполнения работы;
  • Желание досконально изучить реалии компании по производству ПО/разработке сайтов;
  • Опыт работы с HTML;
  • Опыт работы с C/C++, C# или Java;
  • Опыт работы с Javascript;
  • Понимание реляционных баз данных;
  • Понимание модели передачи данных TCP/IP;
  • Идеалистичный настрой на улучшение системы образования;
  • Оптимистичная вера в свою способность порождать перемены;
  • Критическое отношение к оптимизму и идеализму, понимание, что они могут обернуться невежеством или самонадеянностью.


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

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

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

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

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

И прочее, по мере поступления

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

Предпринимательский дух

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

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

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

Глубокая порядочность и сила духа;
Энергичность и высокий уровень мотивации;
Желание вкладывать много сил в развитие небольшой компании;
Стремление к совершенству, готовность сделать всё, что потребуется ради выполнения работы;
Желание досконально изучить реалии компании по производству ПО/разработке сайтов;
Идеалистичный настрой на улучшение системы образования;
Оптимистичная вера в свою способность порождать перемены;
Критическое отношение к оптимизму и идеализму, понимание, что они могут обернуться невежеством или самонадеянностью

Господи Иисусе. Ещё раз: все эти качества нужно оценивать у кандидата на собеседовании, а не расписывать в вакансии. Дураку понятно, что все хотят нанимать честных, деятельных, увлечённых работников. Есть хоть кто-нибудь, кто это всё прочитает и подумает: А, ну я-то сволочь и раздолбай, не буду отправлять им резюме?. Может, лучше что-нибудь о работе расскажете?

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

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

Хорошие описания вакансий


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

Хороший пример 1: всё при нём




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

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

Чем вы будете заниматься:

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

Что от вас требуется:

  • Опыт работы в индустрии над проектами с full-stack архитектурой и распределёнными системами;
  • Несколько лет работы с бэкенд и фронтенд-фреймворками, такими как: Python/Django, Javascript/React, Scala/Play или другими общепринятыми стандартами;
  • Практический опыт работы с базами данных (MySQL, PostgreSQL, NoSQL и другими). Знание тюнинга и оптимизации запросов будет плюсом;
  • Отличные навыки общения. Опыт работы в распределённых командах будет плюсом;
  • Желание участвовать в нашей миссии и постоянно учиться новому.

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


Красота. Описание компании и команды, с одной стороны, интригует, с другой даёт подробности в достаточном объёме.

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

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

  • Big data
  • Обработка и аналитика данных
  • Разработка ПО (само собой)
  • Научные исследования или НИОКР
  • Возможно, машинное обучение, чтобы извлекать из данных новые познания

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

Хороший пример 2: коротко и по делу




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

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

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

Вам предстоит:

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

В основе нашего стэка гибкие, масштабируемые концепты, как-то:

  • NodeJs, Go, Kubernetes, Docker;
  • Linux (Ubuntu), работа с командной строкой, Python.


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

  • Микросервисы
  • Node.js, Python и Go
  • Kubernetes + Docker, Linux
  • Акцент на ритейле и коммерческом строительстве

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

Хороший пример 3: просто, но добротно




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

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

Что вам предстоит делать:

  • Поддерживать и продвигать ценности нашей корпоративной культуры;
  • Работать в связке с другими сотрудниками, в том числе представителями продуктовых и API-команд, чтобы вносить свои предложения, дорабатывать и улучшать существующий продукт;
  • Организовывать свою работу при помощи Jira, Github и внутренних систем сборки и деплоя;
  • Помогать в тестировании кода и выводе наших творений в продакшн.

Наш стэк включает в себя: Golang, AWS (DynamoDB, Lambda, EC2, Kinesis, SQS, S3), ReactJS, Snowflake, Terraform, Redis, SolarCloud, Kafka, Riac, Docker/Kubernetes и Linux

О вас:

  • Стандартно: опыт в разработке облачных приложений 2-4 года;
  • Диплом бакалавра по информатике;
  • Два и больше года работы с Go и Python;
  • Два и больше года работы с HTML, CSS и Javascript;
  • Умение выстраивать масштабные распределённые системы;
  • Опыт создания веб-приложений с фокусом на интерфейсе и применением современных фреймворков Javascript;
  • Позитивное отношение к жизни, способность учиться и быстро вливаться в небольшую команду;
  • Опыт работы с AWS (желательно);
  • Понимание микросервисной архитектуры и облачных приложений.


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

Не соглашайтесь на плохую работу


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

Нашел, увидел, получил необычные приглашения на собеседование от HTTP-заголовка до сообщения в поисковике

24.06.2020 12:16:00 | Автор: admin
Одни компании прячут офферы для разработчиков в HTML-коде или HTTP-заголовках, а другие предлагают сперва решить алгоритмические задачи на сайте. Расскажем о нескольких таких кейсах.


Фото Nikita Kachanovsky Unsplash

Пасхалки на сайтах


Многие компании прячут предложения о работе в HTML-коде. Например, Microsoft вставляли HR-объявления на странице Azure. Аналогичного подхода придерживаются в The New York Times и Imgur. Также в Mozilla рассылают приглашения на работу в браузерной консоли. Но некоторые организации проявляют большую изобретательность и скрывают офферы в заголовки HTTP.

В 2015 году специалист по ИБ Трой Хант (Troy Hunt) проводил воркшоп в австралийской фирме. Во время выполнения упражнения один из учеников заметил интересный HTTP-ответ, поступивший через мобильные API с сервера Airbnb. В нем содержалось приглашение на работу и электронный адрес руководителя отдела разработки онлайн-площадки для поиска жилья:

X-Hi-Human: The Production Infrastructure team added this header.Come work with us! Email kevin.rice+hiring@airbnb.com

Месяц назад на Hacker News появился материал, автор которого обнаружил другие сайты с предложениями о работе в HTTP-заголовках. Их удалось найти на Paypal.me, Booking.com, Etsy.com и Otto.de и многих других. Полный список автор опубликовал в своем репозитории на GitHub.

Иногда, чтобы обнаружить спрятанное приглашение, нужно копнуть поглубже. Например, в 2017 году особую страничку с оффером разместили в Apple. Чтобы её открыть, требовалось проанализировать трафик приложений на iPhone. Некоторые из них пересылали пакеты на серверы blobstore, которые обычно используют для хостинга данных iCloud. Оффер как раз располагался по одному из адресов, но Apple пришлось убрать его с сайта. Дело в том, что его обнаружил редактор журнала ZDNet и опубликовал в Twitter. После этого в корпорацию стало поступать слишком большое количество заявок.

Задачки


Решить несколько задач в 2015 году предлагали в Google. Инженер Макс Розетт (Max Rosett) искал информацию о лямбда-функциях Python, когда в поисковике появилось сообщение: You're speaking our language. Up for a challenge? (Вы говорите на нашем языке. Готовы пройти испытание?).

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


Фото Free To Use Sounds Unsplash

Что интересно, похожим образом резюме отбирают в государственное ведомство британской контрразведки MI5. Участникам предлагают проанализировать изображение (в конце страницы по ссылке) и декодировать содержащееся в нем сообщение. Если подчистить изображение от шума в графическом редакторе и использовать кодировки в RFC 4648, можно найти приглашение на работу:

$ python solution.py | tr -d '-' | xxd -pSongratulations, you solved the puzzle! Why don?tyou apply to join our team? mi5.gov.uk/careers

С какими интересными решениями для приглашения кандидатов на работу сталкивались вы? Расскажите нам о них в комментариях.



Больше материалов на Хабре и в нашем корпоративном блоге:

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

Участие в open source проектах может быть выгодным для компаний почему и что это дает
Почему разработчики дороже денег, как их сохранить и приумножить
Бенчмарки для Linux-серверов



Подробнее..

Перевод Не ищите лучших нанимайте людей, исходя из слабых сторон команды

22.05.2021 14:05:19 | Автор: admin


Поиск сотрудников надо начинать не с вопроса как нам нанять самого лучшего?, а с вопроса какие у нас есть слабые стороны?.

Зачем вы нанимаете людей? Вы нанимаете, чтобы больше делать или достигать?

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

Думайте не о том, как нанять самых умных?, а о том, как найти людей, способных сделать команду сильнее?.

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

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

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

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

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

Мы имеем дело с очень сложными системами; выиграют команды, способные понимать и сочетать способности многих людей.

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

Установка на поиск талантов Установка на устранение слабых мест
Найти лучшего сотрудника Найти навыки, раскрывающие наш потенциал
Увеличить команду Преобразовать команду
Помочь командам делать больше Помочь командам достигать большего
Люди, которые могут делать то, что делаем мы Люди, которые могут делать то, что мы не можем
Нанять самого лучшего Нанять человека, который лучше всего подходит команде
Люди, соответствующие нашему искажённому идеалу Люди, у которых есть то, чего не хватает нам
Честные тесты и объективная оценка Равные возможности для демонстрации того, что они могут дать команде
Целостный процесс Выбери своё приключение
Нанять самого опытного/умелого кандидата Нанять человека, способного оказать максимальное влияние на возможности нашей команды.
Количество кандидатов и показатель эффективности Как быстро мы сможем найти подходящего кандидата?
Централизованный процесс и бюрократия Команды подбирают людей для себя
Оценка кандидатов Сотрудничество с кандидатами
Предрассудки о том, каким должен быть хороший кандидат Поиск слабых мест команды
Взаимозаменяемость Адаптация
Умные люди Люди, делающие команду умнее
Ум Усиление возможностей других людей
Соответствие культуре Отсутствующие пока перспективы
Люди, добившиеся отличных результатов Люди, которые позволять команде достичь величия
Превосходные личности. Люди, которых мы можем вырастить и которые могут дать рост нам
Какие требования из чеклиста кандидат не показал Что кандидат может добавить нашей команде

Найм талантов


Если мы начинаем с намерения найти лучших людей, то это формирует весь процесс найма.

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

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

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

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


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

Не использовал [предпочитаемые мной] идиомы
Должен был написать тесты
Не нашёл [то, что я считаю] наилучшим решением
Не смог абстрагировать x
Не знал [того, что знаю *я*]

Что *продемонстрировал* кандидат?


Найм, ориентированный на устранение слабых мест


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

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

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

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

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

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

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

Может быть, мы даже не знаем, в чём наши слабости, пока не поработаем с подходящим человеком, который покажет нам, как раскрыть наш потенциал.

Выявите свои слабые стороны. Используйте их при составлении вакансий и проектировании процессов собеседований.

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

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

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

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

Решайте задачу в паре. Не устраивайте то, что многие компании называют парным собеседованием (paired interviews), когда на самом деле собеседующий смотрит, как кандидат пишет код. Вместо этого на самом деле поработайте над совместным решением. Помогите кандидату. Обменивайтесь идеями. Договоритесь, кто будет вводить код, как это было бы при парном кодинге с коллегой. Не судите его, если он решил те же задачи, которые решили вы; посмотрите, чего вы можете добиться вместе.

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

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

Почему бы не использовать оба подхода?


Часто стоит поразмыслить над тем, что хорошее не всегда самое подходящее для вас. Редко существуют best practices, есть только практики, доказавшие свою полезность в конкретном контексте.

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

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

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

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

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



На правах рекламы


Наша компания предлагает аренду VPS для совершенно любых проектов. Создайте собственный тарифный план в пару кликов, максимальная конфигурация позволит разместить практически любой проект 128 ядер CPU, 512 ГБ RAM, 4000 ГБ NVMe!

Присоединяйтесь к нашему чату в Telegram.

Подробнее..

Почему из Колорадо теперь нельзя устроиться на удаленку

31.05.2021 08:08:37 | Автор: admin

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

Вот пример вакансии аутсорсинговой фирмы Insperity, которая предоставляет кадровые услуги. В ней сказано: Кандидат должен иметь возможность работать удаленно на Среднем Западе или в центральной части США. На должность не рассматриваются претенденты из Колорадо. То же самое теперь указано в тысячах других объявлений на платформах для поиска разработчиков. Например, такую же приписку (только не Колорадо) можно встретить в вакансиях на должности директора по работе с клиентами, старшего менеджера, менеджера по маркетингу и менеджера по работе с клиентами от RapidSOS.

Компании по всей стране Johnson & Johnson, IBM, Drizly (приложение по доставке алкоголя, недавно приобретенное Uber), Unite Us, Stride K12, колл-центр Concentrix, Contrast Security публикуют вакансии на должности с возможностью удаленной работы. Сколь угодно удаленной, хоть с Луны, только не из Колорадо.

С одобрения руководства допускается гибкий график, за исключением удаленной работы из Колорадо, говорится в вакансии от Johnson & Johnson. Эта работа может выполняться исключительно за пределами Колорадо, в вакансии от IBM. В объявлении Drizly объясняется, что работодатель рад предоставить равные возможности для всех, но на этой должности можно работать удаленно из любой точки США, за исключением Колорадо. Команда IT-проекта разработала специальные объявления о вакансиях для работников из Колорадо, но другие не последовали их примеру.

В чем проблема штата?

Дело в местном законе О равной оплате труда. Он был подписан в 2019 году, но вступил в силу в начале 2021-го. Согласно этому закону, работодатели обязуются указывать диапазон заработной платы и льготы в объявлениях о вакансиях, вести учет выплат и должностных обязанностей каждого сотрудника, а также немедленно сообщать им о возможностях продвижения по службе. В рамках этого регулирующие органы Колорадо решили, что работодатель должен указывать почасовую/заработную плату или их реальный диапазон, льготы и другие выплаты, которые положены нанимаемому кандидату, в каждой вакансии. Они также установили правила об уведомлении нынешних сотрудников о возможности повышения по службе по мере появления новых вакансий.

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

Чтобы не раскрывать размеры заработной платы, многие IT рекрутеры перестали рассматривать претендентов из этого штата на удаленные должности. Другие публикуют вакансии для Колорадо отдельно. Например, как говорят Drizly: Мы не только выполнили, но и превзошли требования, которые вступили в силу в этом году в Колорадо! Мы разместили объявления об удаленной работе дважды: один раз специально для Колорадо, а другой для всех остальных регионов США. Это потребовало от нас дополнительных временных затрат и усилий. Однако мы считаем, что такой подход позволяет жителям Колорадо подавать свои резюме на вакансии для удаленной работы в компании наравне с жителями других штатов.

Большинство компаний предпочли сохранить размеры зарплат в тайне, полностью отказавшись от работников из Колорадо. Так на Reddit появился пост с вакансией от компании облачных услуг DigitalOcean, в которой сообщалось, что заявки от жителей Колорадо не принимаются из-за местных требований к описанию вакансий. Это привело к целому расследованию, проведенному денверской командой журналистов 9Wants to Know. В результате которого они обнаружили еще как минимум 10 фирм, которые не соблюдают требования закона О равной оплате труда. С тех пор ограничение незаметно удалили из описания вакансии DigitalOcean, но о зарплате в ней по-прежнему нет ни слова, что нарушает новый закон штата.

Денвер, КолорадоДенвер, Колорадо

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

Эти компании, как и авторы закона, не дают комментариев журналистам. Но некоторые проявили изобретательность в написании вакансий. Nike использовали те же исключающие формулировки по крайней мере в 9 объявлениях, добавив, что кандидатам из Колорадо потребуется переехать. А Oracle попыталась убить двух зайцев одним выстрелом, создав адрес электронной почты oracle-salary-inquiriers_us@oracle.com для получения информации о зарплате и льготах на этой должности. Хотя закон четко требует, чтобы они были указаны в самой вакансии, а не предоставлялись по запросу.

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

Подробнее..

Ресурсы для поиска удаленной работы для нетехнарей

29.12.2020 00:19:38 | Автор: admin

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

Тем, у кого уровень английского "London is the capital of Great Britain", я советую идти на всем известные российские ресурсы и искать там по фильтру "удаленная работа". А тем, чей уровень английского позволяет, кто хочет получать з/п в долларах и готов заморочиться с оформлением ИП или самозанятости, можно спокойно предлагать поискать иностранную компанию. Для технарей этот список тоже будет актуален.

Это, конечно, не исчерпывающий список, и будет круто, если вы дополните его в комментариях. Удачи в поиске!

  • WeWorkRemotely
    Один из самых старых сайтов с удаленными вакансиями от создателей Basecamp
    Фильтры: Copywriting, Business & Management, Customer Support, Finance and Legal, Sales and Marketing

  • AngleList
    Американские и канадские стартапы, здесь я нашла свою текущую работу
    Фильтры: Operations, Marketing, Sales, Management, Other

  • F6s
    Европейские стартапы
    Фильтры: Operations, Marketing, Financial, Accounting

  • Workable
    Сайт агрегатор, публикации напрямую от компаний

  • NODESK
    Фильтр: "non-tech"

  • Revolution Remote
    Только удаленные вакансии поддержки Support, Service, Helpdesk, Tech Support

  • People-First Jobs
    Публикуют только вакансии от компаний, которые ценят своих сотрудников
    Фильтры: Business management, Copywriting, Customer success & support, Design, Finance & legal, Operations, Product, Project management, Sales & marketing, Others

  • REMOTIVE
    фильтр: All Other

  • RemoteOK
    Фильтр: Non-tech

  • EU Remote Jobs
    Фильтры: Customer Support, Human Resources, Legal, Marketing, Sales

  • Europe Remotely
    Фильтры: Marketing & Sales, Customer Support

  • Workingтоmads
    Фильтры: Administration, Human Resources, Education, Legal, Sales, Writing, Sales filters

  • Skip the Drive
    Фильтры: Administrative, Consulting, Editor, Entry Level, Human Resources

  • Twitter
    Не самый очевидный ресурс, но именно в Твиттер дублируют вакансии как сами компании, так и сайты агрегаторы.
    Искать по "должность" или "скилл" + remote job

Фото: Jen Theodore on Unsplash

Подробнее..

Wanted! Бизнесу нужны геймеры

11.02.2021 12:14:32 | Автор: admin

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

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

Турнир в офисе и за его пределами

Еще в докарантинные времена в нашем офисе время от времени проводились целые турниры по компьютерным играм.

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

Counter Strike, StarCraft, Quake III, Mortal Combat просто созданы для снятия напряжения. И иногда наш офис ближе к вечеру пятницы просто превращался в филиал компьютерного клуба.

Я с AWP на лонг. Раш B! На миде трое! Флешка пошла!

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

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

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

Чеклист для запуска офисного турнира для геймеров

  1. Выберите игру

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

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

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

  2. Придумайте приз

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

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

    Худший вариант в любой ситуации играть на деньги. Не делайте так. Из веселого развлечения турнир рискует превратиться в большую ссору.

  3. После турнира соберите фидбек

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

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

Геймеры в компании опыт, за который вы не платите

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

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

Работа в команде. Любая командная компьютерная игра великолепно оттачивает навыки взаимодействия. Геймер, который играет в CS: Go хорошо знает, как использовать свои возможности на пользу всей команде. Один бросает флешку, второй штурмует ослепленных врагов, третий и четвертый дают огневую поддержку и прикрывают с флангов. О взаимодействии в Dota 2 и говорить нечего там от каждого игрока нужны идеально выверенные действия, знание сильных и слабых сторон своих тиммейтов, а одна-единственная ошибка может слить катку.

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

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

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

В играх корректировать тактику и стратегию нужно постоянно. К примеру, любитель стратегии Civilization VI должен уметь перестраивать работу целой страны, если вдруг сосед объявил внезапную войну. За 4-5 ходов мирное государство должно полностью перейти на военные рельсы и отражать атаки неприятеля.

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

Стратегическое мышление. Ламповые Warcraft и Heroes of might and magic просто прекрасно развивают стратегическое видение ситуации. Там всегда нужно просчитывать ходы далеко наперед.

Нужно постоянно держать в голове доступность и количество ресурсов, расположение армий противника, ставить промежуточные цели и искать оптимальные пути для их достижения. За одну партию в Героев игрок решает десятки сложных стратегических ситуаций и проблем. А на сложности в 200% любая неучтенная мелочь может привести к проигрышу, что обязывает игрока контролировать абсолютно все.

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

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

Стрессоустойчивость. Тут все ясно. Достаточно только включить Dark Souls. И если после двадцатой тупой смерти человек не разобьет монитор, то он чертовски стрессоустойчивый.

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

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

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

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

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

Игровые механики на работе

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

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

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

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

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

В общем, мы за игры. Будем продолжать шпилить в CS после работы и получать от этого удовольствие.

Подробнее..

Перевод Вы не просите дать вам работу, вы продаёте услугу

16.05.2021 16:07:51 | Автор: admin

Изображение: businessinsider.com

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

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

Публикуешь вакансию, появляется 5000 соискателей, выбираешь 100, тратишь 2 недели на телефонный скрининг, 5 человек имеют знания, необходимые для работы.

Собеседования это кошмар для обеих сторон.

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

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

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

В чём разница между безликой толпой и теми немногими, кто выделяется на её фоне?

Дело в том, как вы себя презентуете



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

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

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

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

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

Алиса спрашивает о технологическом стеке вашей компании и говорит: Да, это довольно типично на таком этапе. Обычно компании стараются быстро выпустить продукт, чтобы проверить рынок. А вы уже сталкивались с <этой проблемой>? А, понятно, тогда столкнётесь через пару месяцев, она у всех бывает. Я видела примеры, когда подходило вот это решение. А как ваши дела во фронтенде? Неразбериха уже начинает замедлять работу, правда? Вот что я делала раньше, чтобы решить эту проблему, можно использовать вот такую поэтапную методику. Нельзя просто так выкидывать код, который работает и приносит деньги. Кстати, а какая у вас стратегия увеличения штата сотрудников?

Кого из них вы наймёте?

Будьте специалистом, имейте предложения


Если вы джуниор, то вас наймут, если вы хорошо обучаемы. Как быстро мы вас можем обучить, чтобы вы стали эффективны?

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

Небольшое увеличение наклона компенсирует большую разницу пересечения с осью Y.

image
Наклон компенсирует пересечение с осью Y

Когда вы сениор, вас нанимают благодаря вашему опыту и мнениям.

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

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

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

Или как сказал недавно Джонатан Старк: Ваша ценность возникает благодаря тому, что вы знаете, а не только тому, что вы делаете.

Чистое знание без реализации это уже уровень вице-президентов и CTO. Звучит скучно.

Собеседования это продажи


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

Если вы не справитесь и проработаете в течение шести месяцев, то получите 87 тысяч долларов. Неплохой стимул для мошенников, правда? Поэтому компании осмотрительны.

Помня об этом, как вы будете продавать продукт ценой 700 тысяч долларов? Как будете его покупать?

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

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

Неплохо будет начать с техники SPiN-продаж.

  1. Выявите слабые места компании
  2. Набросайте черновики решений
  3. Дайте рекомендации

Сделайте собеседование ценным. После каждой беседы проводящий собеседование должен думать: Потрясающе! Эти советы нужно применить, пусть даже мы его на наймём!
Вы не просите работу, вы продаёте услугу. Профессионал никогда не упрашивает, друг мой.



На правах рекламы


VDS с новейшим железом, защитой от атак и огромным выбором операционных систем. Максимальная конфигурация 128 ядер CPU, 512 ГБ RAM, 4000 ГБ NVMe.

Подписывайтесь на наш чат в Telegram.

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru