Переквалификация IT-специалистов: обучение фултайм внутри компании за 1 месяц

[Об авторе: Николай Лотоцкий — более 15 лет занимается разработкой программного обеспечения. Знаком со всеми этапами работы на проекте и развил карьеру от должности QA Engineer до Technology Expert. Несколько лет был JavaScript Software Architect и принимал активное участие в разработке сложных масштабируемых приложений. Кроме того, есть опыт работы с PHP, .NET, Python. Более трех лет проводит различные курсы и тренинги]

... Да, были люди в наше время
Не то, что нынешнее племя:
Богатыри не вы!

Чем Intermediate PHP отличается от Intermediate .NET или Intermediate JavaScript? Мое мнение, разница лишь в инструментах, а месяц обучения может вооружить и PHP-специалиста, и .NET-разработчика необходимыми знаниями, чтобы стать универсальным Software Developer и успешно педалить на JS. Теорию подтвердила практика: 37 программистов из 42 присоединились к проектным командам после месяца учебы в режиме 8 часов в день 5 дней в неделю. Как организовать процесс переквалификации, почему целый месяц обучения стоит оплачивать как рабочее время и относиться с той же серьезностью, каким должен быть преподаватель для такого курса — узнайте из статьи.

Потребность в специалистах

Часто от «опытных специалистов», т. е. уровня Intermediate и выше, можно услышать, что новички, которые приходят на собеседования, «не те, что были раньше». Жалуются, что профессионалов, соответствующих критериям, просто нет! Им, в таком случае, придется работать самим, а при худшем раскладе — даже отказывать заказчику. Проблема становится еще острее, если в компании появляется проект, который стремительно растет и требует качественные, сложные решения, неподвластные новичкам. Под такие задачи, кроме того, нужно брать человека на долгий период: нюансы «требовательной» индустрии и редкой экспертизы. Усложняет ситуацию и то, что технология, используемая на проекте, достаточно новая, а вам нужны люди с каким-никаким опытом.

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

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

По моему опыту преподавания, на коммерческих курсах только 10% прилежных студентов способны добиться успеха при условии наличия рядом опытного ментора. Ими можно попытаться закрыть дыры на проектах. Риски: нагрузка на ментора будет расти с увеличением количества приходящих «выпускников», производительность команды будет падать пропорционально. Квалифицированные кадры отвлекаются на менторство, а «педалить» как intermediate trainee, даже самый перспективный, не может.

Выход — обучить новым инструментам специалистов с опытом

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

Чем, по сути, отличается Intermediate .NET разработчик от своего коллеги, использующего PHP? Если отбросить вопросы окружения и типизации — разница между теми же PHP, .NET, Java или JavaScript специалистами не такая уж и большая. Я уверен, что если человек способен успешно решать задачи на PHP, то овладев инструментарием JavaScript, он так же успешно справится и с JS-тасками. Курсы не решат всех ваших проблем. Они не повысят seniority-level специалиста. Но в вашей команде появятся необходимые кадры!

Эту идею мы воплотили в Dev-Pro. Мы решили брать в команду людей, которых мы готовы месяц обучать на условиях, что это время будет оплачено, будто программист уже работает на проекте. Отбирая студентов Intermediate-специалистов на наши внутренние курсы, я обращаю внимание на зрелость человека как разработчика. В результате мы уходим от роли .NET, Java, JavaScript Developer, а приходим к позиции Software Engineer.

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

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

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

Составление программы:

  • Общие знания технологии можно получить из бесплатных видеокурсов. Сосредоточьтесь на нуждах проекта.
  • На разработку курса уходит в среднем в три раза больше времени, чем на его вычитку. Например, если у меня курс, рассчитанный на 32 часа, то на его подготовку я потрачу в среднем 90 часов рабочего времени.
  • Каждое изменение — не прихоть, а результат тщательной проработки требований проекта и компании.
  • Создайте детальный план каждого занятия с презентационными материалами. Можно обойтись без презентаций, однако четкий план необходим! Без него вы рискуете потратить уйму времени студентов на незначительные темы, так и не уделив внимания важным вопросам.
  • Важная часть обучения — домашние задания. Без них все лекции исчезнут из памяти студентов через несколько часов после занятия. Задания должны быть максимально привязаны к потребностям проекта.Тогда и вы, и ученики понимаете зачем их выполнять.
  • Учтите, разработка домашних заданий тоже требует времени. В среднем на разработку домашнего задания, оптимальное время выполнения которого — 2 часа, уходит 1 час преподавательского времени.
  • Автоматизируйте проверку домашних заданий. Определяйте контракты — те сигнатуры методов, название классов, полей и т. д., которые вы будете отдавать вашим студентам. Пишите два набора тестов. Один — смоук-тест для учеников, второй — для вас, который проверяет не только функциональные требования. Сразу настраивайте линтеры и тулы, проверяющие стиль кодирования данных студентов. В идеале, возьмите конфиг линтеры у разработчиков проекта-заказчика, на который вы готовите студентов, чтобы они привыкали к стилю кодирования будущих коллег. Задания, нарушающие код стайл, идут сразу на переделку. То же самое касается заданий, которые не проходят ваши тесты. Очень часто в IT-школах делается упор на вычитку материала. По моему субъективному мнению, выполнение домашних заданий и их адекватная проверка важнее вычитки курса.
  • Оптимальное время лекции — это два академических часа с перерывом в 10 минут между ними. Как показывает моя практика, стоит избегать длительных занятий. Максимальное время, которое студенты будут вас воспринимать, — 4 часа. Дальше, вне зависимости от того, как хорошо и интересно вы рассказываете, будут стеклянные глаза с мольбой «Отпусти, мил человек, нас отсюда».

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

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

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

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

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

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

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

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

Подытожим

В Dev-Pro под моим руководством 37 разработчиков за 10 месяцев успешно овладели новой для себя технологией. Среди студентов были PHP, .NET, Java, Ruby специалисты — теперь они педалят на JavaScript, интегрировались в проект и остались частью нашей команды.

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

Итак, если в компании появляется проект, который стремительно растет и требует качественные, сложные решения, неподвластные новичкам — подготовьте специалистов самостоятельно!

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

Рассчитывайте найти преподавателя-практика на фултайм. Он должен глубоко погрузиться в проект, к которому вы готовите людей, чтобы составить программу, основываясь на будущих задачах. Уделите особое внимание домашнему заданию, которое должно быть максимально привязано к потребностям проекта. Следите за успеваемостью студентов и готовьте детальный отчет по каждому участнику курса, чтобы избежать обид и репутационных потерь. Идеальным завершением курса станет тестовый проект. Собеседование участников курса стоит доверять техническим специалистам того проекта, на который они пойдут после завершения программы по их переподготовке. Ждите в команде опытных специалистов с креативным решением — ведь у них бэкграунд из другой технологии!

Все про українське ІТ в телеграмі — підписуйтеся на канал DOU

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn

Схожі статті




27 коментарів

Підписатись на коментаріВідписатись від коментарів Коментарі можуть залишати тільки користувачі з підтвердженими акаунтами.

Интересный подход. Я вот про себя вроде могу сказать, что мне почти без разницы на каком языке (из популярных ООП, кроме C++) писать веб-приложения/сервисы, просто перфоманс некоторое время будет ниже (маны, гугл, со, набиваемые шишки) — на JS/TS/Go не сильно ниже,потому что уже писал даже не для себя, а в продакшен (так надо было), на Java/C# сильно, особенно первое время, потому что ни строчки . Но это всё равно останется приложение, принимающее http-запрос, распарсивающее его в какие-то объекты, лезущее в базу, что-то в ней меняющее и сериализующее в http ответ. Причем большую часть низкоуровневого скроет под собой фреймворк, вряд ли даже надо будет смотреть как реализовать json (де)сериализацию, только аннотации проставить или как ыйд запросі напрямую делать без ORM.

Вот только рекрутерам на это всё равно. В лучшем случае предлагают JS/TS миддлом или Java/.Net джуном. Или есть компании, готовые даже не переучивать за свой счёт, а практический на новом стэке опыт нарабатывать, платя за «сеньорити» на другом стэке.

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

Хорошая статья. Мое почтение.

Я уверен, что если человек способен успешно решать задачи на PHP, то овладев инструментарием JavaScript, он так же успешно справится и с JS-тасками.

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

medium.com/...​or-developer-33e9da2dc58c
Who Killed The Junior Developer?
There are plenty of junior developers, but not many jobs for them

Чем, по сути, отличается Intermediate .NET разработчик от своего коллеги, использующего PHP? Если отбросить вопросы окружения и типизации — разница между теми же PHP, .NET, Java или JavaScript специалистами не такая уж и большая.

Тут вроде как про middle+ статья, если я конечно правильно понял логику автора. Что-то вроде если человек middle+ на A, B, C то за месяц мы его научим X, Y, Z. Но только при условии что он уже в компании)

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

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

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

Правильная идея и неплохая реализация. У процесса внутреннего обучения есть два узких места: 1) отбор кандидатов 2) сам процесс обучения (квалификация преподавателя, качество обучающей программы). Причем первый пункт, на мой взгляд, самый проблемный. В том плане, что, как правило, его решают очень не оптимальным способом. Или тратят дорогое время технических специалистов или эйчар по формальным признакам делает отбор, отсекая многих потенциально ценных кандидатов. Вы пошли немного другим путем, отбирая людей с опытом в других технологиях.Что вполне логично. А так как тренды в айти быстро меняются, эта схема будет работать. Однако, идеальным решением была бы технология отбора кандидатов не по предыдущему опыту, а по способностям. Огромное количество обучающего материала в свободном доступе и технологии автоматизации проверки знаний и заданий (кода) позволяют сделать этот процесс не затратным и очень эффективным. Странно, что никто этим у нас не занимается.

По большому счету Вы правы, и выбрали ИМХО путь близкий к оптимальному. Если придираться к деталям:

месяц обучения может вооружить и PHP-специалиста, и .NET-разработчика необходимыми знаниями, чтобы стать универсальным Software Developer и успешно педалить на JS.

Пропущено слово «универсальным джуниор Software Developer» :) Но если после такого обучения дев сразу попадает на проект, где используется новая для него технология, а не учит что-нить еще, то через 2-3-4 месяца он таки стает «правдивым» мидлом и там. Но я конечно не о том, что на эти месяцы ему надо «погоны срывать» :)

А в случае senior? После изучения ещё одного языка, фреймворка и ORM (если про бэк говорить) через сколько месяцев/лет он станет «правдивым» senior на тех же задачах в новом стэке?

Это работает не только для ИТ-сферы и оно и правда РАБОТАЕТ. В результате, если переквалифицировался кадр из этой же компании, его КПД при вступлении в новую должность почти сразу выше 90% и лояльность высочайшая. При этом у фирмы репутация стабильной, профессиональной, заботящейся о развитии кадров, и с такой хотят иметь дело бОльшее число потенциальных заказчиков.
Вы молодцы.

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

А сколько потратили времени?

Вопрос был в том, сколько времени потрачено на изучение)) Если 0, тогда присоединяюсь к комментарию ниже

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

Существенная.

Портфолио есть.

Дело в чём. Выше Вы написали

нет опыта в конкретной технологии (даже в конкретном фреймворке)

И стало интересно, сколько было потрачено на их изучение (при условии, что коммерческого опыта пока нет). Если было потрачено 0 времени, то логично, что их не будут смотреть.

У меня, например, в Линкедине явно написано, с чем работал, а чем — интересуюсь для себя. Регулярно прилетают вакансии именно на то, чем только интересуюсь, при том, что пока всё устраивает, сам ничего не рассылаю и ползунок видимости для рекрутеров отключён.

Ну, у Вас ситуация с профилем более сложная) В кач-ве скиллов .NET в любом виде отсутствует, из endorsement’ов — 1С (вроде бы и фигня те эндорсменты, но в глаза бросается), и только в описании вскользь упоминается «знание C#». С одним знанием C# далеко не уедешь, действительно. По-моему, без github-проекта с демонстрацией использования веб-технологий .NET в случае перехода PHP -> .NET шансы на успех очень призрачны, и это очевидно.
А насчёт того, что рекрутеры не понимают разницы — пока в скиллах я это не засветил, вакансии по вебу не приходили.

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

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

Я для себя заметил, что такой спам часто вообще ничего не означает. Пример: прилетает вкусная вакансия с зп на 30% выше рыночной для моей текущей локации. Рекрутер британский. Я в течении 10 минут отвечаю (реально такое время прошло, был в активном поиске и в этот момент отвечал другому рекрутеру), что отлично, интересует. И получаю ответ «извините, данную позицию уже закрыли, не хотите рассмотреть что-нибудь из...» и стопка вакансий с зп на 20% ниже рынка.

А в скольких случаях «прилетевшие вакансии» перешли в стадию собеседования?

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

Потому как многие рекрутеры не читают, что написано «изучал для себя», а просто вбивают по ключевым словам

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

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

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

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

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

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

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

Было 2 кейса, оба по месту.
Первый кейс — очень нужен был человек, звали техлидом (уже большой привет), а оказалось, что ещё и на фронт-енд О_о Даже если бы мне предложили вагон денег, то числиться «тех лидом», не разбираясь в теме на должном уровне — это за гранью уже.
Второй кейс был хитрый: я решил, что никто не покусает за попытку, и написал прямым текстом на и-мейл: практически ничего не знаю по тому, что вам нужно, вот мой github и профиль линкедин, опыт есть, давайте буду у вас парт-тайм по 2-3 часа в день за 300 баксов пару-тройку месяцев — в итоге вы получите человека, который уже въедет в ваш проект и команду, а я доучу всё, что нужно, и итоговую з/п мы обсудим, когда начну продуктивно педалить. Win-win типа. Решил написать только потому, что локация подходила (а чтобы именно из моей локации кого-то искали на удалёнку, это было совпадение один на миллион — казалось, судьба бгг). Был удивлён, что не послали сразу. Макнули в интервью нормально, и оказалось, что интервьюер письма моего даже не видел — уже в конце пришлось объяснять свою позицию. На это он предложил фулл-тайм сразу, т.к. на парт-тайм вряд ли, но в деньгах терять я не был готов, да и слабых переговорных позиций не люблю... В итоге они нашли человека на фулл-тайм, но опыт был интересный).

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

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

На самом деле нелогично, это просто вас так приучили)

Підписатись на коментарі