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

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

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

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

  • Согласно опросу Stack Overflow, проведенному в 2016 году более 56000 программистов, программы наставничества коррелируют с более высокой оплатой, чем получение степени в колледже, что отражает тот факт, что наставничество является чрезвычайно эффективным способом приобретения навыков.
  • Согласно опросу Stack Overflow 2017 года, возможности обучения, спонсируемые компанией, неизменно входят в число основных преимуществ, которые сотрудники ищут при трудоустройстве.

  • 88% сотрудников считают, что им было бы полезно дополнительное обучение.

Преимущества наставничества для подопечных

  • Ускоряет обучение и рост
  • Повышает уверенность
  • Лучший доступ к положительным примерам (как делать то, что делают эксперты)
  • Снижает страх перед вкладом / сотрудничеством / обменом идеями
  • Повышает коммуникативные навыки
  • Подопечные чувствуют себя более заинтересованными и ценными
  • Повышает мобильность: исследование Sun Microsystems показало, что у подопечных в 5 раз больше шансов получить повышение
  • Подопечные становятся наставниками и передают все эти преимущества

Менторские льготы для работодателей

  • Отличный бонус для набора
  • Повышает продуктивность и удержание разработчиков¹ ²
  • Уменьшает разрозненность знаний
  • Повышает фактор шины - снижает риски преемственности
  • Создает более позитивную, полезную и коллективную командную культуру
  • Повышает лояльность
  • Повышает вовлеченность и мотивацию сотрудников, значительно улучшая финансовые результаты³
  • Улучшает процесс выявления лидеров и продвижения по службе - у наставников в 6 раз больше шансов получить повышение (Sun Microsystems)

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

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

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

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

Повышение производительности команд до 10 раз

Преобладание исследований предполагает, что между разработчиками существует разница в производительности на порядок. Процитирую Стива МакКоннелла (автора Code Complete):

Общий вывод о том, что «между программистами существуют различия по порядку величины», был подтвержден многими другими исследованиями профессиональных программистов (Curtis 1981, Mills 1983, DeMarco and Lister 1985, Curtis et al. 1986, Card 1987, Boehm and Papaccio 1988, Валетт и МакГарри 1989, Бём и др. 2000).

Это не означает, что высокопроизводительный разработчик напишет в 10 раз больше кода или создаст в 10 раз больше функций. Это означает, что они принесут в 10 раз больше организационной ценности (см. Также Достижение 10-кратного).

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

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

Проблема в том, что нанять старших разработчиков сложно:

Средняя разница между зарплатами младших и старших разработчиков в США составляет 40 тысяч долларов в год (источник: Indeed.com), поэтому некоторые компании пытаются сэкономить, нанимая больше младших разработчиков и меньше старших разработчиков.

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

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

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

А кто вообще такой старший разработчик? Возможно, вы слышали о правиле 10 000 часов. Чтобы овладеть ремеслом, требуется около 10 000 часов осознанной практики. Это примерно 6–10 лет. Но на должности «старших разработчиков» часто нанимают разработчиков с опытом работы от 1 до 5 лет. Ясно, что уровень мастерства в 10 тысяч часов - не тот, который сегодня используется в отрасли для определения «старшего разработчика» - не зря.

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

Через 1–3 года вы действительно начинаете видеть разницу между разработчиками, стремящимися к совершенству и осознанной практике, и теми, кто занимается этим только ради J-O-B. «Старшему» разработчику не обязательно быть мастером своего дела прямо сейчас, но он, по крайней мере, должен быть на правильном пути.

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

Идеальные атрибуты эксперта-наставника (их должно быть больше всего)

  • Сочувствие
  • Терпение
  • Отличный коммуникатор и технический писатель
  • Более 6 лет опыта создания приложений на постоянной основе (да, в данном случае опыт имеет значение - мы ищем мастерство. См. Правило 10 000 часов).
  • Глубокое понимание принципов разработки программного обеспечения в нескольких парадигмах (ООП, ФП и т. Д.)
  • Опыт работы с несколькими языками программирования, предпочтительно из разных языковых семейств (семейство C, семейство Lisp, семейство ML и т. Д.)
  • Опыт масштабирования приложения с участием более 20 разработчиков и более 10 миллионов пользователей
  • 1-2 года опыта работы с вашим конкретным стеком технологий

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

Большинство вакансий, которые в настоящее время называются «Старший разработчик JavaScript», не требуют такого уровня знаний. 1–3 года опыта, 1 год в необходимом техническом стеке и высококачественное обучение JavaScript было бы более чем достаточно. Соедините их с хорошим опытным наставником, и они внесут свой вклад на уровне (или очень близком) к уровню лучших старших разработчиков в команде. Некоторые из них выделятся и превзойдут ваши самые лучшие ожидания.

Как нанять 10x разработчиков?

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

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

Какая разница?

Культура наставничества

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

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

Это просто приятный побочный эффект, поскольку это приводит к меньшему количеству ошибок. Каждый час, потраченный на проверку кода, экономит 33 часа обслуживания. (См. Также: Возмутительная цена пропуска TDD и проверки кода)

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

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

У меня для вас плохие новости:

Вероятность того, что никто из вашей команды не квалифицирован, почти 100%.

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

Что я имею в виду конкретно? Кандидат должен уметь правильно ответить на следующие вопросы и продемонстрировать принципы в коде:

  • «Что такое композиция функций?»
  • «Что такое композиция объекта?»

Вместе они составляют основу функционального программирования и гибкого повторного использования объектов.

В JavaScript они поддерживаются двумя очень важными функциями, которые я называю «двумя столпами JavaScript»:

  • Прототипное наследование
  • Функциональное программирование (в частности, в JavaScript, это позволяют функции первого класса с замыканиями)

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

Предпочитайте композицию объектов наследованию классов. ~ Банда четырех, « Шаблоны проектирования: элементы объектно-ориентированного программного обеспечения многократного использования »

Эти простые столпы обеспечивают прочную основу для создания приложений со всеми этими функциями:

  • Меньше кода
  • Меньше ошибок
  • Повышенная ясность кода
  • Снижение затрат на обслуживание

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

  • TDD и улучшенные процессы тестирования, что значительно экономит время и деньги
  • Непрерывная доставка (автоматизированная с помощью инструментов и рабочих процессов CI / CD), что снижает риск испорченного программного обеспечения и рисков, связанных с чрезмерной оценкой бюджета.
  • Лучшая организация кода, которая снижает затраты на обслуживание программного обеспечения

Сколько нужно инвестировать в наставничество?

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

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

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

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

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

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

Это звучит неплохо, пока вы не зададите вопрос: «Кто будет наставником наставников?»

«Кто будет наставником наставников?»

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

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

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

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

Повышайте уровень своих навыков с живым наставничеством 1: 1

DevAnywhere - это самый быстрый способ повысить уровень навыков JavaScript:

  • Живые уроки
  • Гибкий график
  • 1: 1 наставничество
  • Создавайте настоящие производственные приложения

Эрик Эллиотт является автором Программирования приложений JavaScript (O’Reilly) и соучредителем DevAnywhere.io. Он участвовал в разработке программного обеспечения для Adobe Systems, Zumba Fitness, The Wall Street Journal, ESPN, BBC и ведущие музыканты, включая Usher, Frank Ocean, Metallica и многие другие.

Он работает где угодно с самой красивой женщиной в мире.

  1. По данным Sun Microsystems, уровень удержания на 72% выше для подопечных и на 69% выше для наставников по сравнению с не участвующими сотрудниками.
  2. Согласно исследованию Spherion Emerging Workforce Study, 35% сотрудников, не получающих регулярного наставничества, ищут другую работу в течение 12 месяцев
  3. Компании с высоким уровнем вовлеченности увеличили операционную прибыль на 19,2% за 12 месяцев, в то время как у компаний без операционной прибыли снизилась на 32,7% за тот же период. « Взаимодействие для успеха »