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

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

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

image


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

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


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

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

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

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

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

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


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

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

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

Итоги


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

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

Что дальше


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

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

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

Комментарии (44)


  1. Suvitruf
    10.03.2018 17:57
    +1

    Внезапно, junior работает хуже, чем senior.

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


    1. AstorS1
      10.03.2018 22:45

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


    1. Taritsyn
      11.03.2018 10:55

      Не пойму, так вы себе в команду ищете разработчиков или что? Или суть в том, что вы им не платили, а теперь им платят?

      Посмотрите сайт компании автора статьи, и все поймете.


    1. Marui
      11.03.2018 12:10

      Тут всё упирается в ожидание-реальность. Для получения «джуниора за деньги» нужно всего пройти собеседование. Эти знания укладываются в 15 статей на wiki или 3-4 книжки.
      Так же нужно разделять джуниоров, которые без багов пишут честь facebook и джуниоров, которые с багами пишут чатик на Ruby на бесплатных курсах. Я не хочу сказать, что эти джуниоры кодят на уровне американских школьников, но это факт. Но раз с таким скилом берут и платят, то окей, пусть берут и пусть платят.


    1. Mexxis Автор
      11.03.2018 15:42

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


  1. franzose
    11.03.2018 03:06
    +1

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


    1. chromimon
      11.03.2018 15:41

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


      Ну вот почему то он так решил, наверно, из жизненного опыта, и оказался таки прав:

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

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

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


      1. franzose
        12.03.2018 03:51

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


    1. Mexxis Автор
      11.03.2018 15:47

      У нас была гипотеза, что люди могут работать «за опыт», и она оказалась верна.
      А сам проект — это опенсорс, мы на нем ничего не зарабатываем.


      1. altai2013
        12.03.2018 10:50
        +1

        За опыт — это ерунда, я больше скажу: будет куча желающих прийти и платить свои деньги за бесплатную работу у вас.


        1. Mexxis Автор
          12.03.2018 23:24

          Мы принципиально не берем деньги с джуниоров.


  1. marshinov
    11.03.2018 08:20

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


  1. easty
    11.03.2018 08:27
    +1

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


    1. KPATKOCTb
      11.03.2018 11:46

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


      1. Mexxis Автор
        11.03.2018 15:51

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


    1. Mexxis Автор
      11.03.2018 15:49

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


  1. mickvav
    11.03.2018 11:37
    +1

    Автор, а можно ссылочку на github-чик в статью?


    1. Mexxis Автор
      11.03.2018 15:48

      github.com/howtohireme/juniorjobs
      не знаю, позволяют ли правила хабра в статью добавлять такие ссылки


  1. Taritsyn
    11.03.2018 12:01
    +3

    На мой взгляд, разработка open source-проектов силами джуниоров ведет к деградации открытого ПО. Сейчас из-за подобной пропаганды мы имеем огромное количество некачественных проектов, которые просто замусоривают GitHub.

    Изначально основными достоинствами открытого ПО были качество и надежность. Приведу цитату из очень старой книги (Скотт Хокинс – Администрирование Web-сервера Apache и руководство по электронной коммерции, 2001):

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

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


    1. Mexxis Автор
      11.03.2018 15:52

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


  1. Crocodilovich
    11.03.2018 15:40

    Мне показалось или скоро на рынке появятся еще одни «уникальные» курсы для начинающих разработчиков?


    1. Mexxis Автор
      11.03.2018 15:52

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


      1. Taritsyn
        11.03.2018 16:37

        Мы связываемся с вами, и вы рассказываете о себе. Мы работаем над вашими CV и профессиональными аккаунтами и приводим их в надлежащий вид.

        Это тоже бесплатно?


        1. Mexxis Автор
          11.03.2018 16:58

          Это платная услуга нашей компании, в рамках которой мы оказываем платный консалтинг по теме soft-skills для разработчиков.
          Обучением hard-skills за деньги мы не занимаемся.


    1. Areso
      11.03.2018 16:47

      Уже. Посмотрите на их сайт и предлагаемые «курсы».


      1. Mexxis Автор
        11.03.2018 16:54

        Это не курсы программирования. Читайте внимательнее сайт.


        1. Taritsyn
          11.03.2018 17:07

          Похоже на гибрид курсов по подготовке к ЕГЭ и услуг поисковой оптимизации. Своего рода предпродажная подготовка :-)


        1. Areso
          12.03.2018 05:07

          А ни я, ни участник Crocodilovich не говорили про курсы «программирования». Отнюдь. Но мы говорили про курсы для начинающих разработчиков, и «их там есть». Так что совет работает в обе стороны, читайте, пожалуйста, внимательнее)


  1. AxeLWeaver
    11.03.2018 15:40

    Интересная история, хотелось бы больше подробностей.
    Если идея состоит в «выращивании кадров», то это очень хорошая идея.

    имхо
    А любая другая идея «работать за дарма» — это уже зло


    1. Mexxis Автор
      11.03.2018 15:53

      Суть идеи именно в том, чтобы «дать опыт» начинающим, на основе разработки некоммерческих проектов, в условиях максимально близким к «боевым».


    1. Mexxis Автор
      11.03.2018 15:59

      Подробности будут в следующей статье. Этой я просто изучил интерес публики.


      1. gimntut
        12.03.2018 05:59

        Тогда могу сказать, что наиболее интересной частью статьи стало:


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

        Хотелось бы подробностей.


  1. Leloush89
    11.03.2018 15:40

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


    1. Mexxis Автор
      11.03.2018 15:54

      Спасибо!


  1. Kwisatz
    11.03.2018 21:40

    Код плохого контроллера дайте посмотреть пожалуйста 8)


    1. Mexxis Автор
      11.03.2018 22:24

      1. Kwisatz
        13.03.2018 02:27

        Ну уж как то совсем жестоко. Дар речи теряется 8)

        Underscore и CamelCase тоже сознательно замешаны? Или в рор какое то хитрое соглашение на этот счет?


        1. Mexxis Автор
          13.03.2018 09:59

          В Ruby везде underscore, за исключением имен классов


  1. tbicr
    11.03.2018 22:21
    +1

    Есть похожий опыт, кратко резюмируя:


    • нужно мэнэджить (пинать, спрашивать как дела, нет ли проблем, всё ли понятно)
    • нельзя дать задачу и быть уверенным, что она будет правильно решена
    • поэтому нужно уметь или учиться объяснять/ставить задачу
    • лучше давать понятную задачу, чем простую или сложную
    • ревью может занимать много времени
    • поэтому проще давать задачи в которых сам хорошо разбираешься, иначе прийдётся учиться самому :)
    • если важен конечный результат, иногда приходится дописывать самому
    • но подстёгивает сделать то, до чего никак не доходили руки :)


  1. Methos
    12.03.2018 11:18

    Это ж надо, сколько свободного времени у людей.


  1. blastride
    12.03.2018 23:21

    Зашел на сайт компании автора статьи и нашел в платной услуге для «Кандидатов» вот такой пунтк: «Наведение порядка на Github». Мне кажется он бесполезен. Есть хорошая статья на эту тему на хабре: «Почему GitHub не поможет нанять разработчика» habrahabr.ru/post/350912


    1. Mexxis Автор
      12.03.2018 23:23

      Эта статья довольно спорная и лично я с ней крайне не согласен


  1. Areso
    13.03.2018 00:59

    ТС, ваш сайт есть на Гитхабе? Я бы вам заслал PR с исправлениями небольших ошибок.


    1. Mexxis Автор
      13.03.2018 09:58

      сайта к сожалению пока что нет, но думаем над этим тоже