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

956c97e1fbaa7fecb60addc085876e3c

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

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

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

Да, всё как всегда у того парня — не на десятки процентов, а в разы.

Контекст

Наш парень оказался в ИТ-компании, которая занимается, конечно же, 1С. Залез на должность руководителя отдела с целью чего-нибудь классное сделать. Направление мысли ему задали стандартное — рост в деньгах. Ну и, разумеется, рост всего, из чего эти деньги складываются.

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

Так на первый план вылезла тема обучения.

Отступление

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

Но сейчас что-то в этом мире изменилось. Очень много людей, которые занимаются программированием, не испытывая к нему не то чтобы любви — даже уважения. Просто работа такая, как у станка стоять. В итоге, увы, они учатся «на минималках» — только тому, что нужно здесь и сейчас, для решения рабочей задачи. И строго до 18:00.

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

Наш же парень хотел не удачу ловить, а бизнес-задачу решить. Чтобы все программисты учились существенно больше, быстрее и качественнее. Мог он, конечно, просто сказать «кому надо — тот научится», но это не совсем те слова, которые должен произносить руководитель.

Исходная система обучения

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

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

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

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

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

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

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

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

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

Как один из итогов — люди регулярно сваливали, потому что зарплата росла сильно медленно. При этом, не «выходном» интервью толком не могли объяснить, что им не нравилось в системе повышения квалификации и зарплаты.

Ну, тут наш парень и взялся за дело.

Зефирка

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

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

Стало чуть лучше, но нашему парню всё равно не нравилось.

Экзамены

Люди стали чаще пытаться сдавать экзамены, и всплыла на поверхность другая проблема — занятость экспертов. Это ж обычные люди, которым тоже надо работать. Тем более, реальные эксперты всегда заняты, даже мегазаняты. Не спасало и то, что время приёма экзаменов им оплачивалось. Плюс — многие эксперты жили в других городах.

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

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

Компетенции

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

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

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

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

Материалы

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

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

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

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

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

Расписание экзаменов

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

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

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

Форматы экзаменов

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

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

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

Лайвкодинг — самое страшное. Садится рядом, говорит что делать, программист должен тут же кодить. Нельзя пользоваться никакими источниками информации, кроме контекстной подсказки. Одна ошибка — и до свидания.

Решение задачи на время — основной формат для «программистских» дисциплин. Даёт задачу — например, по языку запросов или строкам — и 30 минут времени. Надо не просто решить, чтоб работало. Надо, чтобы было красиво, оптимально и «как я вас учил».

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

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

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

«По практике» — некоторые экзамены сдавать вообще не надо, они зачитываются, если на практике, для реальных клиентов, были решены задачи определённого типа или по конкретным технологиям.

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

Мотивация

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

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

Наш чувак согласовал премию для программистов. Не хухры-мухры, а сразу 20%. Платится за «результат и развитие» — надо выполнить и план по работе, и план по экзаменам. Сделал и то и другое — получай +20% к зарплате.

Пошло чуть лучше.

Управляемая практика

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

Проблемы обозначил две — спектр и глубина.

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

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

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

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

Мотивация 2

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

Думал-думал, и решил устроить совершеннейшую дичь — командную премию. К тому моменту народу у него в отделе было достаточно много, чувак разбил их на команды по 3–7 человек, и сказал: теперь вся команда получает 20%, если вся команда сделала план по результату и экзаменам.

Математика простая. Если в команде 5 человек, то они должны за месяц сдать в сумме 10 экзаменов. Кто, что сдаёт — нашему парню пофигу. Да, и суммарный план по результату тоже должны сделать.

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

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

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

Делегирование

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

Всё получилось случайно. Рядом с нашим парнем сидела девушка, программист. Хорошая, умная, с опытом. Сидя рядом, видела огромное количество экзаменов — наш парень проводил их, не вставая с рабочего места. Ну и как-то слово за слово, девушка сказала, что очень хочет быть экзаменатором.

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

Ну и делегировал. Один, два, пять, десять, двадцать дисциплин. Всего их, на момент рассказа, 68. Девушка принимает уже процентов 60, постепенно расширяя спектр.

Недавно ещё делегировал ей первичный приём «проходок», финальную проверку пока не отдал — надо же и программистов, и девушку учить.

Итого

Теперь цифры. Весь этот путь занял примерно два года. В сухих цифрах объем сданных экзаменов вырос в 4 раза.

Системе приёма экзаменов за 2 года устраивали несколько проверок — и начальство, и прежние эксперты. Говорят, сложность сдачи повысилась — большинство экзаменов сдаются в 5–10 итераций.

Средняя зарплата за этот же период выросла в три раза. Цифры чутка не коррелируют (3 и 4), потому что в этом году набрали много стажёров. Экзаменов они сдают много, но среднюю зарплату пока тянут вниз. Парень говорит, сейчас от кандидатов вообще отбоя нет. Непонятно, с чем связано — может, осень близко?

Что дальше?

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

Можно расширять и углублять текущую систему подготовки. Например, добавить другие ЯП и платформы. Тот же битрикс, который веб1С.

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

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

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

Можно пойти и продать эту систему подготовки какому-нибудь конкуренту. Готовая она, говорит, должна стоить сильно дороже.

Можно всё бросить и свалить, заняться каким-нибудь бизнесом на обучении.

Ну и, разумеется, можно всё оставить, как есть. Вы, наверное, поняли уже: этот вариант наш парень не выберет.

Может, совет какой дадите?

© Habrahabr.ru