В 304-м эпизоде подкаста Software Engineering интересное интервью с Евгением Шадчневым о компании Makers Academy, которая занимается подготовкой программистов за 3 месяца. Выпускников Makers Academy берут на работу такие компании, как Pivotal Labs, ThoughtWorks, Deloitte Digital и т.п. Было очень интересно узнать, как удается качественно обучить программистов за такой короткий срок.

Maker Academy Источник: www.telegraph.co.uk/technology/code-academy/

Кого учат

Makers Academy готовит программистов на позицию младшего разработчика (Junior Developer). Большая часть учащихся Makers Academy – люди, которые хотят сменить сферу деятельности. Как правило, у них уже есть образование и опыт работы, но созданием программного обеспечения они раньше не занимались.

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

Чему учат

Makers Academy обучает преимущественно Web-разработке. Изучают HTML, языки программирования Ruby и JavaScript. Но основная задача Makers Academy – научить разработке качественного программного обеспечения. Поэтому в процессе обучения используется разработка на основе тестирования (test driven development), средства совместной работы Git и Software Craftsmenship (я не знаю адекватного перевода этого термина).

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

Со всеми студентами работает команда обеспечения карьеры (career team), которая помогает определить, в каких компаниях студентам лучше работать и как выгодным образом показать свой опыт этим компаниям.

Как учат

Основное отличие Makers Academy от университетов заключается в организации обучения. Около 90 процентов времени учащиеся занимаются практической разработкой программ в группах. Сначала даются очень простые задания, например, создать несколько классов и сделать так, чтобы они общались через определенный интерфейс. Постепенно задания усложняются: разработать простое Web-приложение, затем приложение с регистрацией пользователей. Для хранения данных о пользователях приходится изучать базы данных, а также основы информационной безопасности. Лекции и мастер-классы проводятся только тогда, когда они необходимы для решения какой-то задачи в проектах.

Общий план обучения, расписанный по неделям, можно посмотреть на сайте Makers Academy. Первые две недели посвящены изучению объектно-ориентированного программирования и разработке на основе тестирования. Затем рассматриваются Web-разработка, базы данных и фронтенд.

На шестой неделе начинается первый проект, который учащиеся выполняют в группах. Основная задача проекта – научить групповому взаимодействию. Изучаются инструменты групповой работы Git, а также методы управления программными проектами Scrum и Kanban. Makers Academy является сторонником парного программирования, поэтому студенты пишут код по два человека за компьютером. Также на шестой неделе начинаются консультации по карьере.

Седьмая и восьмая неделя посвящены более глубокому изучению технологий фронтенда и Ruby on Rails. На девятой неделе выполняется второй командный проект. Цель проекта – разработка full-stack приложения, в котором используются все технологии, изученные ранее.

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

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

Финальный проект

В финальном проекте студенты должны продемонстрировать все, чему они научились в школе Makers Academy. Тему проекта, а также используемые технологии студенты выбирают самостоятельно. Все проекты реализуются в группах по 4-5 человек. Исходные коды проектов обязательно выкладываются на GitHub, а демонстрация работы приложения на YouTube.

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

  • Мобильное приложение Make It Stop! - будильник для тех, кто плохо просыпается. Чтобы остановить будильник, нужно выполнить какое-либо задание.
  • Web-приложение SuperMarkIt для создания заметок с использованием MarkDown.
  • Web-приложение UXBuddy для тестирования дизайна сайтов.

Защита проектов выполняется в пятницу последней недели обучения. На защите присутствуют представители ИТ-компаний, которые рассказывают о своих вакансиях. Успешным выпускникам могут сразу предложить работу. Вот пример защиты проекта по автоматическому определению fake news:

Кого принимают в школу

Большая часть тех, кого принимают в школу Makers Academy, успешно ее заканчивают и находят работу. Евгений Шадчнев утверждает, что причина этого в правильно выстроенной процедуре отбора учащихся. От поступающих в Makers Academy не требуют технических знаний по программированию, ведь многие никогда раньше этим не занимались. Основное, на что обращают внимание – это образ мышления человека. Если мышление открытое и человек уверен, что успех зависит от его собственных действий и усилий – то его можно научить программировать за короткий срок. Людей с закрытым типом мышления, которые считают, что все определяется внешними обстоятельствами, в Makers Academy не берут.

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

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

Сколько стоит

Обучение в Makers Academy достаточно дорогое и стоит 8 тыс. фунтов за 3 месяца. Однако выпускники удовлетворены такой стоимостью, т.к. она значительно ниже стоимости обучения в университете (высшее образование в Великобритании платное). Кроме того, вложения возвращаются за несколько месяцев работы на позиции младшего разработчика. Вот примеры отзывов выпускников: Сharlotte Fereday, Jack Oddy и Jonathan Passe.

Для оплаты обучения можно воспользоваться кредитом или краудфандингом.

Здоровье и энергия

Обучение в Makers Academy очень интенсивное с высокой физической и эмоциональной нагрузкой. Для того, чтобы справиться с этой нагрузкой, студентов учат следить за своим состоянием, как умственным, так и физическим. Для этой цели используются медитация и йога. Занятия с сертифицированным инструктором по йоге включены в стоимость курса.

Итоги

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

Хотя обучение в Makers Academy стоит дорого, оно дешевле обучения в университете, а сроки обучения гораздо меньше. Таким образом, с финансовой точки зрения такое обучение является привлекательным.

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