Программа участия в практических занятиях по разработке программного обеспечения

NarisApp

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

NarisApp - это проект платформы для саморазвития программистов, функции платформы:

  • регистрация пользователей
  • просмотр видео
  • прохождение тестов
  • написание конспектов
  • постановка целей и задач
  • отслеживание прогресса развития
  • форма вопрос/ответ
  • возможности платной подписки

Кроме этого NarisApp - это еще и буткемп для развития навыков разработки программного обеспечения, работа в котором организованна по принципу "последний герой", где в сжатые сроки участники должны добиться результатов, соревнуясь и помогая друг другу. Те кто дойдет до финала попадают в команду "SOER.PRO"".

Какую проблему мы хотим решить

Складывается ощущение, что проектов, которые помогают развить "Soft skills", существенно больше и они гораздо популярнее, чем те немногие проекты, которые направлены на развитие "Hard skills". На наш взгляд такое соотношение приводит к тому, что программисты, заинтересованные в развитии своих профессиональных навыков, не видят каким образом этого можно добиться.

Другая проблема заключается в том, что мало проектов где комплексно затрагиваются и вопросы архитектуры, и вопросы разработки, и вопросы организации проекта. В результате базовые навыки формируются в недостаточном объеме и со значительными пробелами.

Задача проекта NarisApp - сформировать не только техническую, но и архитектурную базу для разработчиков, чтобы в будущем обеспечить эффективное развитие карьеры

Как мы хотим решить проблему

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

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

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

В проекте NarisApp - нужно улучшать и развивать существующее решение, получая практический опыт

Принципы проекта

С учетом опыта, полученного при разработке программного обеспечения, в NarisApp реализованы основные принципы "боевой" разработки, при этом скорость работы и интенсивность всегда должны оставаться на высоком уровне, это помогает участникам не расслабляться, а иди к цели.

devs2devs

Основной принцип участия - devs2devs, когда учасники помогают друг другу, обсуждая чужие решения и предлагая как их можно улучшить.

Движение маленькими шагами

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

Работа или отчисление

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

Естественный отбор (последний герой)

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

Изначально набирается 30 человек, после первого этапа остается не более 18 человек, после второго этапа не более 9, на последнем этапе остается не более 3

Ограничение по времени

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

Фокус на тестирование и документирование

В рамках проекта необходимо составлять спецификации на код, которые одновременно выполняют роль тестов, работать с тестами (улучшать, покрывать старый код), создавать документацию проекта (документы на SOER.PRO, Swagger, Storybook и т.д.).

Как строится работа

В проекте предусмотрено три уровня сложности (1 - базовый, 2 - средний, 3 - профессиональный) с разбивкой на фронтенд (f) и бэкенд (b). Уровень задач, которые должен решать участник, помечается значениям "f1", "f2", "f3" фронтенда и аналогично для бэкенда "b1", "b2", "b3".

Разбивка по неделям следующая:

1 неделя - подготовка и запуск проекта из репозитория

2-3 неделя (этап 1) - все участники выбирают и решают задачу уровня 1

4-5 недели (этап 2) - все участники выбирают и решают задачу уровня 2

5-6 недели (этап 3) - все участники выбирают и решают задачи уровня 3

Каждый этап повторяется по одной и той же схеме (можно выполнять досрочно):

1 неделя - предлагается и обсуждается решение задачи, делается реализация

2 неделя - обсуждение решения между всеми участниками и менторами, устранение замечаний

Как формируются задачи и определяется кто остается в проекте

В проекте реализован принцип "одна задача на всех, принимается лучшее решение". Для этого на каждом этапе создается до 3-х задач для фронтенда, и до 3-х задач для бэкенда.

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

После обсуждения выбирается один вариант-победитель, который нужно доработать по замечаниям. Кроме победителя выбираются 1-2 активных участника (т.е. кто активно комментировал и предлагал чужие решения, заводил задачи и любая другая активность, которая учитывается в Gitea), кроме того, что они проходят в следующий этап, они так же участвуют в обсуждении выполненных доработок варианта-победителя.

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

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

Практические аспекты

В результате высокоинтенсивной конкурентной борьбы оставшиеся участники могут сформировать сильные практические навыки, и осознать как им в работе помогают следующие техники:

  • Самостоятельная работа на результат
  • Разработчики помогают разработчикам (Devs2Devs)
  • Движение вперед малыми шагами
  • Трехуровневая технология разработки программного обеспечения
  • Фокус на тестировании и документировании
  • Разработка через архитектурное проектирование

Описание навыков по уровням задач

У нас есть два направления работы: фронтенд (f) и бэкенд (b). В рамках каждого направления есть три уровня:

  • Базовый уровень:
    • умение рефакторить и работать с существующим кодом
    • работа с тестами
    • работа с документацией
    • совместная работа с использование git, conventional commits, системой управления тасками и т.д.
  • Средний уровень:
    • умение формировать собственные задачи
    • умение применять принципы разработки (GRASP, SOLID и т.д.)
    • умение проводить архитектурные границы на уровне кода
  • Профессиональный уровень:
    • умение работать с архитектурными представлениями и диаграммами (на примере модели C4)
    • умение работать со статическим анализом
    • умение оценивать характеристики кода
    • умение оценивать технический долг
    • умение определять вектор развития проекта
    • умение формировать требования к проекту

Как принять участие

Для участия необходимо зайти на платформу SOER.PRO и перейти в раздел "Блог" / "Инструкции" / "NarisApp участие в проекте".

Набор каждые три месяца, более подробная информация в телеграм канале SOER