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

Доброго времени суток, хабрахабр!

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

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

image

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

Первые проблемы


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

Дело в том, что ситуация на рынке труда джуниоров практически прямо противоположна тому, что происходит с IT в целом. На сегодняшний день, существует масса курсов, которые готовят «программистов», но в итоге, после прохождения этих платных курсов большинство людей имеет очень разреженные знания, без какого-либо практического опыта и с абсолютным непониманием как и куда им двигаться дальше. Именно поэтому на одну вакансию джуниора приходит 30, а то и 40 кандидатов в течение недели.

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

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

Здесь нас ждал второй сюрприз. Далеко не все желающие доходили дальше второго задания. Кто-то сразу говорил, что задание слишком сложное, другие с энтузиазмом брали задание и пропадали навсегда, третьи обещали сделать задание «на следующей неделе» и продолжают обещать и по сегодняшний день.

Время писать код


Тем не менее, мы смогли выбрать 3х адекватных джуниоров и начать разработку проекта.
Стоит ли говорить, что наше представление о беззаботных код-ревью оказалось наивным?

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

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

Итоги


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

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

Что дальше


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

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

Но это, скорее всего, тема отдельной статьи. Так что далеко не уходите!

© Habrahabr.ru