Путь самоучки: как мы трижды переделывали курсы «Девман» для Python-разработчиков, выросли и помогаем бизнесу с наймом

Привет, меня зовут Евгений Евсеев, и я основатель школы программирования «Девман». Я — программист и занимаюсь коммерческой разработкой больше 16 лет, всю свою сознательную жизнь. Успел поработать в командах разных масштабов и строить стартапы с партнёрами, реализовывал проекты для международных компаний.

Путь самоучки: как мы трижды переделывали курсы «Девман» для Python-разработчиков, выросли и помогаем бизнесу с наймом

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

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

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

Порог входа в IT тогда был гораздо ниже. То, что сейчас требуют от кандидатов на уровень мидл, тогда даже от синьоров не ожидали. Когда я впервые получил работу в коммерческой разработке, для должности Junior Java Developer нужно было просто уметь писать код. Для сравнения, на курсах python для начинающих «Девман» сейчас это уровень «новичок», после которого надо учиться ещё 10 месяцев и проходить три месяца стажировки.

Когда мы поняли, что не можем нанять разработчиков с рынка, решили их самостоятельно обучать под наши потребности. Договорились с Бауманкой проводить факультативные занятия. Я составил программу обучения языку python, рассчитанную на год, вёл лекции и семинары. Передавал студентам свой опыт работы с Django. Прошёл учебный год. Студентам нравилось учиться, а я выстроил процесс так, как мне хотелось. Но, когда мы взяли их на работу, выяснилось, что они не тянут наших требований.

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

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

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

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

Путь самоучки

Путь самоучки: как мы трижды переделывали курсы «Девман» для Python-разработчиков, выросли и помогаем бизнесу с наймом

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

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

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

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

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

Что в программе

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

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

Путь самоучки: как мы трижды переделывали курсы «Девман» для Python-разработчиков, выросли и помогаем бизнесу с наймом

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

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

Помочь дойти до конца

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

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

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

Перезапуск

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

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

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

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

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

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

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

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

Закрываем потребности бизнеса в мидлах

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

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

Стало понятно, что нужно тренировать не только хардскиллы, но и гибкие навыки. После этого на курсе появились командные проекты, упражнения на чтение кода и на дебаг. А ещё мы немного расширили программу обучения, добавив в неё блоки по работе с серверами, Docker/Kubernetes. В этот момент мы поняли, что можем поставить подготовку мидлов на поток со стабильным качеством на выходе. Тогда мы и запустили курс «Профессия Python-разработчик до мидла».

Конечно, и после этого в программу обучения языку python вносились коррективы. Но радикально уже ничего не менялось. Сейчас мы работаем над штуками, которые позволяет готовить разработчиков уровня middle+. Я говорю это на полном серьёзе, без иронии. То, что мы готовимся добавить в программу обучения, средний мидл обычно не умеет.

Я считаю достижением, что в проекте «Девман» развитая IT-инфраструктура, и многие внутренние сайты написаны нашими учениками — например, сайты для менторов, для командных проектов, для технических интервью. Большую часть кода написали наши ученики в рамках стажировки. При этом мы предъявляем высокие требования к качеству кода, придираемся намного сильнее, чем во многих компаниях. Потому что нам близка эта область и мы знаем, куда смотреть.

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

Часто встречается такое определение мидла: это программист, который имеет 2-3 года опыта работы. Эта цифра звучит внушительно, но что она значит на практике? Что такой специалист успел поработать в среднем в двух компаниях. Возможно, ему повезло и внутри компаний он поучаствовал в нескольких проектах. То есть речь идёт об опыте работы на трёх-четырёх проектах. Если сравнить с «Девманом», проектный опыт наших выпускников гораздо богаче. Они за время обучения участвуют в тридцати проектах. Получается, что на одной чаше весов у нас максимум четыре проекта — возможно, даже без код ревью. На другой — тридцать специально подобранных продуктов с разными технологиями, с код ревью, на котором код заставили переписывать несколько раз.

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

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

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

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

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

Команда продолжила работу над качеством продукта. Именно это и стало главным фактором стабильности, прочности и устойчивости её развития в кризисные времена. На сегодняшний день мы добились, что минимум половина учеников доходит до конца курса благодаря гибкости и индивидуальной ориентированности программы. С другой стороны, мы слышим запросы бизнеса и идём навстречу его пожеланиям через дополнительные фичи. Так происходит мэтч с обеих сторон. Это позволяет нам масштабироваться и идти дальше. Планы компании — вырасти за год минимум в 4 раза.

Если вы учились сами или нанимали разработчиков, закончивших курс «Девман», будем рады обратной связи в комментариях. Оставляйте комментарии, пишите ваши идеи и предложения.

4040
20 комментариев

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

4
Ответить

А почему по вашему мнению образование работает только через индивидуальную работу с каждым? Как вот эти 10% учатся, с ними ведь никто индивидуально не работает. Они как-то выучиваются по каким-то "общим" материалам, которые есть в сети.

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

Также вообще говоря на курсе есть менторы/кураторы/etc, которые работают индивидуально по каким-то вопросам.

3
Ответить

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

2
Ответить

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

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

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

Ответить

Часто встречается такое определение мидла: это программист, который имеет 2-3 года опыта работы. Эта цифра звучит внушительно, но что она значит на практике? Что такой специалист успел поработать в среднем в двух компаниях. Возможно, ему повезло и внутри компаний он поучаствовал в нескольких проектах. То есть речь идёт об опыте работы на трёх-четырёх проектах. Если сравнить с «Девманом», проектный опыт наших выпускников гораздо богаче. Они за время обучения участвуют в тридцати проектах. Получается, что на одной чаше весов у нас максимум четыре проекта — возможно, даже без код ревью. На другой — тридцать специально подобранных продуктов с разными технологиями, с код ревью, на котором код заставили переписывать несколько раз.

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

лицо реального мидла представили?

1
Ответить

Комментарий недоступен

Ответить

Люди берут деньги за свой труд, как отвратительно!

Опытные разработчики должны бесплатно составлять учебные материалы!

А люди ни в коем случае не должны платить за них, питаться исключительно бесплатными материалами, ведь платить за чужой труд — это просто ужас! Зачем мне выстроенная программа обучения с интересными проектами и ревью, если можно всего лишь потратить в 5 раз больше времени и сил на придумывание собственных проектов, их написание костылями и сбор опыта по крупицам из советов на SO и GH Issues?

1
Ответить