Программа участия в практических занятиях по разработке программного обеспечения
В этом материале расскажем о том, как в проекте soer.pro строится работа по развитию практических навыков и менторинг разработчиков
Какую проблему мы хотим решить
Существует несколько проблем, которые мешают развитию рынка АйТи в России:
- дефицит квалифицированных кадров
- высокий порог входа в специальность
- отсутствие практических навыков работы с технологией разработки программного обеспечения
Мы пытаемся уйти от классического подхода обучающих курсов, которые направлены на передачу базовых знаний о написании кода. Курсы выпускают разработчиков, которые умеют писать хоть какой-то код, но испытывают проблемы с пониманием архитектуры программного обеспечения, принципов разработки ПО, отсутствием навыков в технологических аспектах разработки.
Как мы хотим решить проблему
Мы хотим сфокусироваться на практической части разработки программного обеспечения. Показать что такое процесс разработки программного обеспечения, из каких этапов зрелости состоит процесс разработки, продемонстрировать как программист должен функционировать на уровне разработки кода, какие инструменты и стандарты должен использовать, дать понятие об архитектуре программного обеспечения, показать как можно достигать цели двигаясь вперед малыми шагами.
Как строится работа
Мы строим работу по принципу "от простого к сложному". У нас трехуровневая система сложности (см. ниже). На каждом уровне проверяются разные навыки, касающиеся работы программиста. Участники идут от уровня к уровню, получая и выполняя все более сложные задачи.
Минимально на каждый уровень закладывается месяц работы (в случае если у участника уже есть опыт и его нужно только верифицировать), максимального ограничение нет, каждый уровень можно повторять нужное количество раз (в случае, если вообще нет опыта работы, может понадобиться 2-3 месяца на каждый уровень), каждый может работать в своем темпе.
Практическая работа строится на участии в разработке OpenSource проекта, коммуникация происходит общего чата учатсников и системе управления версий. Участникам предоставляется доступ к видеоматериалам по архитектуре и видео с ревью кода и архтектуры.
Примерная разбивка по этапам:
- Первый этап (развитие базовых навыков):
- Регистрация и развертывание проекта на своей рабочей машине
- Выполнение тестового задания
- Устранение замечаний, полученных на этапе ревью тестового задания
- Анализ проекта, формирование предложений по рефакторингу
- Выполнение рефакторинга и устранение замечаний ревью
- Второй этап
- Постановка задачи по архитектурному представлению
- Самостоятельная разработка фичи проекта
- Устранение замечаний ревью, защита своих решений
- Третий этап:
- анализ технического долга проекта
- анализ и расчет характеристик кода
- формирование требований и документации на проект
Практические аспекты
- Самостоятельная работа на результат
- Разработчики помогают разработчикам (Devs2Devs)
- Движение вперед малыми шагами
- Трехуровневая технология разработки программного обеспечения
- Фокус на тестировании и документировании
- Разработка через архитектурное проектирование
Devs2Devs
Участники программы помогают другу другу общаясь и делясь знаниями. Более опытные участники находятся вместе с менее опытными, нет барьеров для обмена опытом, нет вертикальной иерархии. Находясь в одном чате, участники совместно решают проблемы в комфортном темпе.
Такой вариант работы позволяет сформировать профессиональные связи (нетворкинг) и показать, что нет проблем для развития.
Движение вперед малыми шагами
Пул задач и темп работы подбирается таким образом, чтобы участникам было комфортно двигаться вперед с постоянным темпом. Мы не пытаемся максимально быстро закачать знания в голову людей, а вместо этого помогам выработать постоянный ритм работы и развиваем навыки разбиения задачи на мелкие подзадачи (принцип разделяй и влавствуй). Постоянный ритм позволяет избежать ощущения выгорания и усталости, а так же показываем, что можно успевать многое, если никуда не спешить.
Трехуровневая технология разработки
У нас есть два направления работы: фронтенд (f) и бэкенд (b). В рамках каждого направления есть три уровня:
- Базовый уровень:
- Работа с тестами
- Работа с документацией
- Совместная работа с использование git, conventional commits, системой управления тасками и т.д.
- Средний уровень:
- умение рефакторить и работать с существующим кодом
- умение формировать собственные задачи
- умение применять принципы разработки (GRASP, SOLID и т.д.)
- умение проводить архитектурные границы на уровне кода
- Профессиональный уровень:
- Умение работать с архитектурными представлениями и диаграммами (на примере модели C4)
- Умение работать со статическим анализом
- Умение оценивать характеристики кода
- Умение оценивать технический долг
- Умение определять вектор развития проекта
- Умение формировать требования к проекту
Фокус на тестирование и документирование
В рамках работы мы показываем как правильно составлять спецификации на код, которые одновременно выполняют роль тестов. Показываем преимущества работы по принципу "Test first". А так же показываем как работать с документацией проекта, на каком оптимальном уровне нужно документировать проект, чтобы сохранять в разумных приделах трудозатраты. Показываем инструменты документирования (Swagger, Storybook и т.д.)
Разработка через архитектурное проектирование
Как показала практика, программистам очень сложно выражать свои мысли через абстракции уровня приложения и системы. На уровне кода, программистам привычнее показать кусок программы и объяснить что она делает, чем провести архитектурные границы, выделить главное и уйти от деталей. Мы показываем на практике как помогает архитектура ставить и достигать задачи проекта.