Позвольте рассказать вам небольшую историю, как мы с партнером разрабатывали некоммерческий проект силами джуниоров.
Эта, для кого-то безумная, идея посетила нас, когда мы поняли, что идей проектов у нас генерируется гораздо больше, чем мы можем реализовать в свободное от основной работы время. Поэтому, мы довольно оптимистично решили, что если взять 2-3х джуниоров, проводить им код-ревью, то мы сможем довольно эффективно реализовать нашу новую идею.
Изначально мы предложили начинающим разработчикам 3х месячную стажировку, в рамках которой они работают над некоммерческим проектом, исходники которого лежат на GitHub, получают код-ревью от меня и моего коллеги. В результате, мы получаем реализованный продукт, а джуниоры — историю коммитов в GitHub, которую не стыдно показать, полезный опыт и наши рекомендации по дальнейшему трудоустройству.
Первые проблемы
Первой неожиданностью, с которой мы столкнулись, был факт, что джуниоров на рынке труда на порядок больше чем опытных разработчиков. До этого у нас был опыт поиска ruby разработчиков в довольно привлекательные проекты с хорошими условиями труда.
Должен признать, что я был невероятно удивлен, когда увидел количество откликов на наше предложение неоплачиваемой стажировки. Не буду врать, я не успевал общаться со всеми кандидатами в Telegram: пока я разговаривал с одним разработчиком, мне писал следующий.
Дело в том, что ситуация на рынке труда джуниоров практически прямо противоположна тому, что происходит с IT в целом. На сегодняшний день, существует масса курсов, которые готовят «программистов», но в итоге, после прохождения этих платных курсов большинство людей имеет очень разреженные знания, без какого-либо практического опыта и с абсолютным непониманием как и куда им двигаться дальше. Именно поэтому на одну вакансию джуниора приходит 30 а то и 40 кандидатов в течение недели.
В связи с этим, нам пришлось отойти от практики живого интервью каждого кандидата, и заменить ее парой несложных тестовых заданий.
Первым заданием был пример явно плохого кода контроллера в MVC фреймворке, где были собраны, наверное, все возможные ошибки проектирования и реализации. Кандидату было предложено прокомментировать этот код и предложить пути его улучшения.
Вторым заданием было создание простейшего web-приложения, реализующего схожую функциональность, что и код из первого задания.
Здесь нас ждал второй сюрприз. Далеко не все желающие доходили дальше второго задания. Кто-то сразу говорил, что задание слишком сложное, другие с энтузиазмом брали задание и пропадали навсегда, третьи обещали сделать задание “на следующей неделе” и продолжают обещать и по сегодняшний день.
Время писать код
Тем не менее, мы смогли выбрать 3х адекватных джуниоров и начать разработку проекта.
Стоит ли говорить, что наше представление о беззаботных код-ревью оказалось наивным?
Менторство группы начинающих разработчиков требует не только множества времени, но и хорошо построенных процессов внутри команды. Необходимо иметь автоматические инструменты для проверки качества кода и надежную систему тестирования. Будет наивно полагать, что юнит-тесты, написанные джуниорами отловят любые баги.
Мы не раз столкнулись с ситуацией, когда основная фича приложения не работает, хотя все тесты проходят.
Также следует запастись терпением. Типичные ошибки, не свойственные опытным разработчикам будут повторяться снова и снова. Поэтому мы начали параллельно с разработкой проекта вести документацию по основным проблемам и их решению. Такой источник знаний поможет новобранцам найти ответы на типичные проблемы и быстрее адаптироваться в проекте.
Итоги
Если вам интересно, в какой фазе наш проект, то отвечу, что мы еще работаем над ним. Осталось “пофиксить баги и задеплоить”. Тем не менее, мы не жалеем, что решились на такую авантюру.
Во-первых, некоторые наши разработчики уже нашли первую оплачиваемую работу, но при этом продолжают участвовать в жизни нашего проекта.
Во-вторых, к нам начали обращаться компании, которые посмотрели исходный код на GitHub и готовы предложить работу нашим джуниорам.
В-третьих, мы сами получаем неоценимый опыт при обучении стажеров, и вдобавок опыт управления командой и проектом.
Что дальше
Таким образом, в результате работы над нашим первым проектом, мы узнали много нового о рынке начинающих разработчиков и о том как правильно их готовить к реальной жизни. И теперь, спустя несколько месяцев, у нас появилась новая идея проекта, который позволит масштабировать нашу инициативу и дать возможность гораздо большему количеству джуниоров получить необходимый опыт.
Наша цель — дать начинающим разработчикам возможность набраться опыта в реальных проектах, что позволит им увереннее чувствовать себя при поиске работы и прохождении интервью.
Но это, скорее всего, тема отдельной статьи. Так что далеко не уходите!
Комментарии (44)
franzose
11.03.2018 03:06+1Непонятно, почему вы решили, что люди, даже не очень опытные в своём деле, будут работать с вами на одном лишь энтузиазме. Многие open source проекты имеют поддержку компаний и пилятся разработчиками за деньги, а не за код ревью. Ваша история выглядит так, как будто вы решили забацать проект и при этом сэкономить на зарплате сотрудников.
chromimon
11.03.2018 15:41Непонятно, почему вы решили, что люди, даже не очень опытные в своём деле, будут работать с вами на одном лишь энтузиазме
Ну вот почему то он так решил, наверно, из жизненного опыта, и оказался таки прав:
Должен признать, что я был невероятно удивлен, когда увидел количество откликов на наше предложение неоплачиваемой стажировки. Не буду врать, я не успевал общаться со всеми кандидатами в Telegram: пока я разговаривал с одним разработчиком, мне писал следующий.
Дело в том, что ситуация на рынке труда джуниоров практически прямо противоположна тому, что происходит с IT в целом. На сегодняшний день, существует масса курсов, которые готовят «программистов», но в итоге, после прохождения этих платных курсов большинство людей имеет очень разреженные знания, без какого-либо практического опыта и с абсолютным непониманием как и куда им двигаться дальше. Именно поэтому на одну вакансию джуниора приходит 30 а то и 40 кандидатов в течение недели.
В связи с этим, нам пришлось отойти от практики живого интервью каждого кандидата, и заменить ее парой несложных тестовых заданий.franzose
12.03.2018 03:51Это было к тому, что эти разработчики потом уходят в другие компании работать за деньги, не оставаясь в той, которой работали на проект на Гитхабе. В принципе, «благотворительность» можно понять, если проект некоммерческий и пилится в свободное от основной работы время.
Mexxis Автор
11.03.2018 15:47У нас была гипотеза, что люди могут работать «за опыт», и она оказалась верна.
А сам проект — это опенсорс, мы на нем ничего не зарабатываем.
marshinov
11.03.2018 08:20Может потому что этих людей за деньги не спешат брать и они хотят набраться опыта, чтобы брали?
easty
11.03.2018 08:27+1Не пойму посыла этой статьи. Тут помоему энтузиазм не в написании проекта, а с стремлении обучить джунов. Качественный кодревью с обучением занимает не мало времени. А то что на рынке стало много джунов без понимания, что им делать, это все от обилия курсов и рекламы — обучись в нашей "школе программистов" и зарабатывай лимоны. Хорошо хоть нет "школ хирургов от мэйлру"
KPATKOCTb
11.03.2018 11:46Что ещё больше непонятно, так это зачем обучать джунов и тратить кучу своиего времени, если через 3 месяца они в любом случае уйдут. То есть в коммерческой компании такая благотворительность бы не прокатила.
Mexxis Автор
11.03.2018 15:51Во-первых обучать кого-то, очень полезно как минимум для укрепления собственных знаний.
Во-вторых это networking, расширение круг знакомств.
Mexxis Автор
11.03.2018 15:49Изначально мы хотели написать проект, но в процессе работы мы переосмыслили ситуацию, и решили что именно помощь джунам гораздо более ценна для нас.
mickvav
11.03.2018 11:37+1Автор, а можно ссылочку на github-чик в статью?
Mexxis Автор
11.03.2018 15:48github.com/howtohireme/juniorjobs
не знаю, позволяют ли правила хабра в статью добавлять такие ссылки
Taritsyn
11.03.2018 12:01+3На мой взгляд, разработка open source-проектов силами джуниоров ведет к деградации открытого ПО. Сейчас из-за подобной пропаганды мы имеем огромное количество некачественных проектов, которые просто замусоривают GitHub.
Изначально основными достоинствами открытого ПО были качество и надежность. Приведу цитату из очень старой книги (Скотт Хокинс – Администрирование Web-сервера Apache и руководство по электронной коммерции, 2001):
… над каждым «открытым» проектом работает гораздо больше разработчиков, чем могла бы нанять даже самая богатая корпорация, ошибочный код обнаруживается и исправляется значительно быстрее.
Я позволю себе предположить, что качество открытого текста обычно выше, чем у коммерческих продуктов. Ведь основной мотивацией разработчиков, работающих над «открытыми» продуктами, является любовь к программированию как к творческому процессу. Таким образом, при работе с «открытыми продуктами» можно получить самые лучшие образцы программ. Это разительно контрастирует с коммерческим продуктом, при работе с которым большая часть рабочего времени тратиться на встречи, телефонные разговоры и, в конечном счете, инвентаризацию остатков.
Mexxis Автор
11.03.2018 15:52Мы делаем не опенсорс-либу, а готовый продукт, который просто размещен на GitHub.
Другим он может быть интересен разве что в образовательных целях.
Crocodilovich
11.03.2018 15:40Мне показалось или скоро на рынке появятся еще одни «уникальные» курсы для начинающих разработчиков?
Mexxis Автор
11.03.2018 15:52Нет, вам показалось. У нас совершенно другой подход, и без всякой финансовой составляющей.
Taritsyn
11.03.2018 16:37Мы связываемся с вами, и вы рассказываете о себе. Мы работаем над вашими CV и профессиональными аккаунтами и приводим их в надлежащий вид.
Это тоже бесплатно?Mexxis Автор
11.03.2018 16:58Это платная услуга нашей компании, в рамках которой мы оказываем платный консалтинг по теме soft-skills для разработчиков.
Обучением hard-skills за деньги мы не занимаемся.
Areso
11.03.2018 16:47Уже. Посмотрите на их сайт и предлагаемые «курсы».
Mexxis Автор
11.03.2018 16:54Это не курсы программирования. Читайте внимательнее сайт.
Taritsyn
11.03.2018 17:07Похоже на гибрид курсов по подготовке к ЕГЭ и услуг поисковой оптимизации. Своего рода предпродажная подготовка :-)
Areso
12.03.2018 05:07А ни я, ни участник Crocodilovich не говорили про курсы «программирования». Отнюдь. Но мы говорили про курсы для начинающих разработчиков, и «их там есть». Так что совет работает в обе стороны, читайте, пожалуйста, внимательнее)
AxeLWeaver
11.03.2018 15:40Интересная история, хотелось бы больше подробностей.
Если идея состоит в «выращивании кадров», то это очень хорошая идея.
имхоА любая другая идея «работать за дарма» — это уже злоMexxis Автор
11.03.2018 15:53Суть идеи именно в том, чтобы «дать опыт» начинающим, на основе разработки некоммерческих проектов, в условиях максимально близким к «боевым».
Mexxis Автор
11.03.2018 15:59Подробности будут в следующей статье. Этой я просто изучил интерес публики.
gimntut
12.03.2018 05:59Тогда могу сказать, что наиболее интересной частью статьи стало:
Поэтому мы начали параллельно с разработкой проекта вести документацию по основным проблемам и их решению. Такой источник знаний поможет новобранцам найти ответы на типичные проблемы и быстрее адаптироваться в проекте.
Хотелось бы подробностей.
Leloush89
11.03.2018 15:40Интересная идея!
По скольку в любом подходе к Кодингу с базой знаний,
полученной из образовательных учреждений или же из самообразования
В любом случае лучшие результаты и набор опыта происходит лишь,
при работе с реальными проектами!
Так как ни один тест не в силах предугадать баги которые встретятся вам завтра.
К тому же знакомство с людьми это всегда +
Kwisatz
11.03.2018 21:40Код плохого контроллера дайте посмотреть пожалуйста 8)
Mexxis Автор
11.03.2018 22:24gist.github.com/Mehonoshin/4c239ea364fe458ef844e3984b757cf6
Держите, это Ruby on Rails
tbicr
11.03.2018 22:21+1Есть похожий опыт, кратко резюмируя:
- нужно мэнэджить (пинать, спрашивать как дела, нет ли проблем, всё ли понятно)
- нельзя дать задачу и быть уверенным, что она будет правильно решена
- поэтому нужно уметь или учиться объяснять/ставить задачу
- лучше давать понятную задачу, чем простую или сложную
- ревью может занимать много времени
- поэтому проще давать задачи в которых сам хорошо разбираешься, иначе прийдётся учиться самому :)
- если важен конечный результат, иногда приходится дописывать самому
- но подстёгивает сделать то, до чего никак не доходили руки :)
blastride
12.03.2018 23:21Зашел на сайт компании автора статьи и нашел в платной услуге для «Кандидатов» вот такой пунтк: «Наведение порядка на Github». Мне кажется он бесполезен. Есть хорошая статья на эту тему на хабре: «Почему GitHub не поможет нанять разработчика» habrahabr.ru/post/350912
Suvitruf
Внезапно, junior работает хуже, чем senior.
Не пойму, так вы себе в команду ищете разработчиков или что? Или суть в том, что вы им не платили, а теперь им платят?AstorS1
Почему не платят? С разработчиками (молодыми) расплачиваются путём ревью их кода от автора статьи и его коллеги, причём, в течение трёх месяцев, как указано под картинкой.
Taritsyn
Посмотрите сайт компании автора статьи, и все поймете.
Marui
Тут всё упирается в ожидание-реальность. Для получения «джуниора за деньги» нужно всего пройти собеседование. Эти знания укладываются в 15 статей на wiki или 3-4 книжки.
Так же нужно разделять джуниоров, которые без багов пишут честь facebook и джуниоров, которые с багами пишут чатик на Ruby на бесплатных курсах. Я не хочу сказать, что эти джуниоры кодят на уровне американских школьников, но это факт. Но раз с таким скилом берут и платят, то окей, пусть берут и пусть платят.
Mexxis Автор
Изначально нам нужна была помощь с разработкой несложного проекта, на который у нас времени не было.
В данный момент это переросло в некоммерческую инициативу, в рамках которой мы хотим дать начинающим опыт.