В работе мы используем довольно узкий стек технологий: связку Typescript+React и Haskell. Поэтому программу строили так:
- Frontend — обучаем разработке на JavaScript. Мы считаем, что сразу учить какому-то фреймворку не эффективно. Ведь если человек глубоко разобрался в JavaScript, условный React|Angular|Vue он поймет очень быстро.
- Backend — хардкорная программа по изучению Haskell. Это функциональный, чистый и ленивый язык программирования с, пожалуй, самой мощной системой типизации из современных промышленных языков.
Каждая программа состоит из пяти частей. Два задания теоретических, два практических, где обучающиеся пишут объемные проекты. Эти четыре задания полностью самостоятельные, наши сотрудники не вовлекаются в процесс обучения.
Еще есть пятое задание, трехэтапный рефакторинг, на котором обучающиеся получают обратную связь от наших разработчиков и переделывают проект. Мы ценим инженерный, качественный подход к делу — важно, не просто сделать «чтобы работало», а решить задачу грамотно, с читаемым кодом и без «костылей». Поэтому пятое задание получилось довольно объемным и строгим, чтобы обучающиеся сразу привыкали к постоянному код-ревью.
Со временем мы поняли, что новички после программы обучения еще долго привыкают к работе в команде: к тому, что такое scrum и как по нему работать, зачем нужны софт-скиллы, митинги и прочие элементы командной работы. Поэтому на фронтенд-направлении программы мы добавили еще и командный этап, который проходит параллельно пятому этапу.
Из обучающихся, которые прошли первый этап рефакторинга, мы формируем команды по 4-6 человек. И выдаем им разработку проекта с нуля на React, который займет 2 месяца. На этом этапе мы симулируем реальные условия разработки, с опытным практикующим разработчиком в качестве тимлида, проектным менеджером, который обеспечивает работу по Agile методологии, со спринтами и демо промежуточных результатов проекта «заказчику» раз в две недели.
Мы рассчитывали, что обучение займет около 600-1000 часов, но в среднем выходит чуть больше — 8-12 месяцев при 30 часах занятости в неделю. Если у человека есть базовые знания программирования, будет проще и быстрее. Если нет, не проблема, разобраться с циклами, переменными и функциями можно в процессе.