Содержание
Роли участников и итерации (что нужно делать)
Идея курсов
Цель обоих курсов - погрузить участников в максимально приближенный (где-то даже через чур) к реальности процесс проектной разработки ПО с реальными коллегами / задачами / проектами / заказчиками и таким образом приобрести полное представаление обо всем цикле разработки ПО.
В больших корпорациях за счет накопленных ресурсов острые углы проектов / особенности жизненного цикла ПО могут годами оставатся для вас тайной. Поэтому вам важно оказатся в среде, где все мрачно, чтобы испытать себя и наглядно ощутить как (по вам) проходит процесс разработки ПО.
Задачи
- Познакомиться с разными ролями в рамках разработки ПО
- Ощутить на себе этапы жизненного цикла разработки ПО
- Столкнутся с коммуникативными и организационными сложностями
- Освоить базовые приемы / понятия проектной работы
Роли участников
Прежде чем излагать разделение студентов на роли, важно отметить, что главная цель всех студентов данного курса - успешная разработка выбранного проекта:
- Заказчик доволен (== он получил то, что хотел согласно заданию),
- Стабильная работа продукта (== отстутсвие сбоев),
- Отчуждаемость и осязаемость результатов (== посторонний человек сможет самостоятельно по материалам работы развернуть и использовать ваш продукт).
Поэтому
- Помните, что мяч во взаимодействии с заказчиком перманентно на вашей стороне. Вы бегаете / тормошите / пишете заказчику, наоборот не сработает.
- Стоит накладывать описания ролей ниже на данную цель и рассматривать ваши обязанности через эту оптику.
Бакалавры (3 курс)
Выполняют роль разработчиков / тестировщиков / инженеров проекта. Их основные задачи -
- подготовка кода, тестов, документации и других содержательных материалов,
- презентация материалов,
- предоставление обратной связи по коллегам преподавателям,
- эскалирование проблем магистру или преподавателям.
Магистранты (5 курс)
Выполняют роль тимлида + проджект-менеджера. Поскольку разные люди вкладывают в эти понятия разные вещи, то определим свои требования к данной роли. Магистрант:
- лично отвечает за свою команду и успех своего проекта,
- организует общение с заказчиком (установочный созвон + согласование плана на итерацию + периодическое предъявление результатов заказчику, получение обратной связи),
- формализует обратную связь / пожелания / требования заказчика в задачи для команды,
- организует общение с командой (регулярные созвоны для обсуждения прогресса),
- планирует работу (и по сути, и по времени), создает задачи и следит за порядком в репо,
- проверяет результаты бакалавров и контролирует достижение результата,
- выполнять часть обязанностей разработчиков (см. Бакалавры выше),
- презентация результатов,
- предоставление обратной связи о коллегах для преподавателей,
- контролирует, что его команду и отдельных участников справедливо оценили, инициирует решение проблем,
- эскалирует проблемы преподавателям / заказчикам.
Что означает личная ответственость за команду и проект? Это означает что общий успех проекта и действия бакалавров напрямую влияют на баллы магистра за дисциплину (подробнее в документе «Формирование оценки»):
- Команда: Магистр должен не просто отправлять задания / доносить информацию до бакалавров, но также и следить что все всё поняли / сделали надлежащим образом. Если по итогам итерации, кто то из бакалавров не выполнил обязательные условия / простаивал и магистр не принял мер, то это его управленческое упущение.
- Проект: успешность руководителя = успешность проекта. Поэтому, если проект идет с негативной динамикой (при отсутствии попыток магистра как-то выправить курс), то это отражается на баллах магистра.
Эскалация (эскалирование) проблем
В проектной работе возможны и неизбежны ситуации, когда участник сталкивается с затруднением / проблемой, которую он не может решить в силу органичений собственной должности / недостатка знаний или навыков или других причин. Конструктивное решение в данном случае это эскалация проблемы - передача информации о проблеме на уровень выше (вашему непосредственному начальнику / начальнику выше и тд).
В случае нашего курса цепочки эскалации такие
- Магистры - Заказчики - Преподаватели (если есть проблемы с пониманием постановки задачи, сугубо техническими сложностями)
- Магистры - Преподаватели (Если проблемы с курсом, с магистром, с бакалаврами, с заказчиками)
!! Для эскалации преподвателям используйте раздел эскалация на дискорд сервере. !!
Предостережение - эскалация проблемы это крайняя мера. В проектной работе ценятся люди, которые обращаются к вышестоящим в редких случаях (сами не справились и есть острая необходимость в помощи). Поэтому, перед эскалацией проблемы проверьте себя:
- Я сформулировать проблему в письменной форме, сформулировал как ее воспроизвести (так что это поймет и другой человек) и обозначил, в чем основная загвоздка
- Я попытался самостоятельно решить проблему несколькими способами
- Я учел рекомендации к тому, как строить коммуникацию (см «Советы по коммуникации»)
Эскалируя проблему, обозначайте в чем ее важность (Чем она мешает и как негативно влияет на процесс) и срочность (как быстро ее нужно решать).
Заказчики
Задачи заказчика
- Сформулировать интересующий проект
- Подготовить набор ссылок по технологиям проекта
- Отвечать на вопросы студентов по проекту, при необходимости - подключатся для обсуждения к команде
- Оценивание промежуточного (По итогам итерации) и финального результата
Преподаватели курса
Преподаватели представляют собой финальную инстанцию в иерархии ролей. К ним можно обратится по любому вопросу, но не каждый из вопросов целесообразно задавать сразу им (см. Эскалация выше).
Проекты и команды
Распределение по командам и проектам
В курсе будет дан набор проектов для выполнения. Студентам будет необходимо в ограниченный срок выбрать проект (путем заполнения формы). Части студентов будет предложено пройти курс в рамках проекта Fast track.
Будьте внимательны - поменять выбор нельзя :(
Свою тему предложить в данном курсе тоже нельзя.
По итогам выбора будут организованы проектные команды: 4-5 бакалавров + 1-2 магистра. Команды получают доступ в проектный репо и канал проекта на дискорд-сервере. Необходимо использовать репозиторий или созданный преподавателем, или предоставленный заказчиком.
Процедура распределения в команды и по проектам
Часть студентов до распределения (Или даже до начала курса) будут распределены в проекты повышенной сложности.
- В помощь для коммуникации и мирного разделения участников и проектов создается чат с названием «mse-поиск-команды». Чат это место для студентов, где они сами между собой договариваются (или не договариваются).
- Преподватели никак не используют содержимое этого чата для распределения по проектам (не читают, не заглядывают и отказываются воспринимать любым способом) - смысл чата в том, чтобы студенты сами между собой договорились.
- Преподаватели озвучивают срок, когда будет открыта форма выбора и когда ее закроют
- Студенты (один человек из команды) вносит состав команды И указывает в форме список из всех номеров проектов в порядке убывания интереса к ним (от самых интересных, до наименее интересных).
- Повторные заполнения формы одним и тем же человеком И/ИЛИ заполнение формы другими людьми из команды будут удалены из таблицы.
- Команды, которые не укажут список из ВСЕХ номеров проектов - отмечаются как желающие работать над рандомным проектом.
- Команды, где меньше пяти человек бакалавров - отмечаются как желающие на добавление неприкаянных бакалавров (== тех, которые никак в форме не отметились).
- Команды, где больше пяти человек бакалавров - отмечаются как группа неприкаянных баклавров ( == ваш выбор проектов и магистра аннулируется, бакалавры распределяются по командам и проектам в случайном порядке).
- Заполнить форму можно только один раз.
- После закрытия формы, преподаватели распределяют команды по проектам с помощью следующего алгоритма:
- Определение команд:
- Из результатов заполнения формы составляется список
- полных команд (== где указано нужно число участников)
- неполных команд (== где указано меньшее чем нужно число участников)
- неприкаянных студентов ( == студенты, которые ни в одной команде не упомянуты или попали в эту категорию, потому что в команде их оказалось больше нужного числа)
- Неполные команды дополняются неприкаянными студентами случайным образом
- Если после предыдущего шага остаются неприкаяные бакалавры - из них случайным образом формируются команды
- Распределение проектов по командам
- Команды делятся на три группы -
- Заполнившие форму корректно (указавшие список из ВСЕХ номеров проектов),
- Заполнившие форму некорректно (== есть проблемы со списком приоритетов),
- Прочие команды (сформированые из прикаянных студентов)
- Среди команд, заполнивших форму корректно, происходит распределение тем на основании времени заполнения формы И приоритетов выбора. Принцип - кто раньше заполнил, тому проект и достался.
- Оставшиеся проекты распределяются случайным образом среди остальных команд (некорреткно заполнивших форму и полностью состоящих из неприкаянных)
- Поскольку в данном курсе проектов меньше, чем участников, то остаток бакалавров распределяется в проекты FastTrack.
Работа в репозитории
Как работать в репо:
- Главная ветка - main / master (если заказчик явно не попросил обратного)
- Нельзя делать прямые коммиты в главную ветку
- Одна задача == одна ветка (название должно отражать номер и название задачи) == один PR
- PR мержат и ревьювят магистры. На смерженных PR должны быть апрувы магистров (могут быть и апрувы бакалавров - это дополнительный плюс, но магистры обязательны)
Организация работы с задачами и фичами:
- Фиксируйте все задачи и фичи как issue в репо
- Создавайте метки для категорий и milestone для обозначения итераций
- Организуйте работу с задачами в виде проекта github (тип Board) - он должен отображатся на странице projects вашего репо
Fast track проект
Данный проект призван учить проектной работе в немного иной парадигме - погружаясь в проработанну. область автоматизации образования вы одновременно обучаетесь ролям QA и быстрее примеряете на себя перспективу пользователя. Вам предстоит разобраться со сложившейся структурой и адаптироватся к специфичным требованиям пользователей (студентов и преподавателей). Поэтому роли и итерации здесь трактуются слегка иначе.
Цель проекта - подготовка, интеграция и проверка качества средств автоматизации.
Проект подразумевает разработку инструментов автоматизации, которые должны следовать существующей практике и интергрироваться в существующую учебную систему. Сами инструменты разрабатваются на языке Python и включают такие компоненты (Применительно к курсовым и лабораторным):
- Программы проверки студенческих решений
- Генераторы условий заданий
В части проектов ставятся задачи с большим уклоном в DevOPS.
Особенности проекта:
- Необходимость общения с заказчиком и выяснения деталей / требований остается
- Все участники в данном проекте - исполнители
- Если кто-то из участников берет на себя (даже если временной и частично) функции лидера проекта, то получает за это дополнительный бонус
- Задачи в данном проекте:
- Выполнять свои задания по разработке
- Интегрировать получаемый результат в moodle
- Готовить эталонные решения / тесты для своих материалов
- План на итерацию для каждого
- Подготовить четыре задачи (== разработать четыре инструмента, например - сделать четыре программы для генерации и проверки четырех разных вариантов курсовой) - правила подготовки материалов будут указаны в репо
- Критерии оценивания результата (могут отличатся, это отправная точка)
- полнота и ясность обратной связи для студентов
- надежность решения
- учет крайних случаев
- расширяемость и переносимость результата
- По итогам итерации не требуется готовить презентационные материалы / демо, НО результаты должны иметь интсртукцию / необходимые материалы чтобы их можно было проверить и развернуть в отрыве от автора
Итерации
- Разработка проекта будет вестись в рамках адаптированной версии гибких методологий разработки.
- Процесс разработки будет организован как четыре последовательные итерации длительностью примерно месяц.
- Каждая итерация представляет собой концентрированную разработку очередной версии проекта.
Обязательная часть в любой итерации (Кроме первой итерации - там уточнение):
- Работа с issues в репозитории
- Требования к работе с репо выше
- Задачи созданы, назначены, поставлены отметки итераций (на текущую (для первой не супер критично) и на следующую итерации)
- Задачи в актуальных статусах
- Задачи имеют описания
- Сообразно итерации настроена автоматизация тестирования / сборки / защиты веток
- Подготовить презентационные материалы
- Презентация где указан: план на текущую итерацию, результаты, план на следующую
- Скринкаст с демонстрацией фич проекта (не более 2 минут)
- Разместите все материалы (и презентацию (PDF), и видео, и другие документы нужно продублировать в репо) в репозитории
- Создайте отдельную ветку reports и PR для нее,
- Укажите ссылки на материалы по каждой итерации в файле reports.MD в корне репозитория
- Общение с заказчиком - постановка задачи, предъявление результатов
Итерация 1
Сроки: 12.02.2025 - 26.02.2025 (включительно)
Задачи:
- Выбор проектов
- Получение доступа к репозиториям и чатам
- Правильно подписать себя (указать в профиле github имя фамилию (== сторонний человек должен глядя на ваш профиль по нику / указанным фамилии имени иметь возможность верно догадатся, кто вы )
- Провести установочную встречу с заказчиком (подсказка для тех, у кого на одном заказчике много проектов - будет продуктивнее, если вы объедините силы с другими командами чтобы за одну встречу спросить по всем проектам)
- Подготовлена вики-страница (или если ее нельзя сделать - MD файл в ветке reports (см. выше)) с подробной постановкой задачи, собранными и проанализированными требованиями, сценариями использования и макетами UI
- Описана основная проблема, которую решает проект
- Указаны категории пользователей, что для каждой из них важно в проекте
- Работа с issues в репозитории (см. выше) - создать задачи и фичи; указать теги, версии и описания
- Подготовить презентационные материалы (см. выше) - только презентация
- Бакалаврам ( == каждый бакалавр должен принять участие, если не понятно как - уточните у преподавателя)
- ИЛИ создать и запушить примеры по используемым технологиям в playground (код и инструкция в md формате о том, как это запустить и что оно делает)
- ИЛИ создать и запушить прототип на заглушках / заготовку будущего проекта .
Если на первой итерации команда смогла сделать работоспособный прототип - это дает дополнительный бонус.
Итерация 2
Сроки: 27.02.2025 - 26.03.2025 (включительно)
Задачи:
- Подготовить версию 1 (частично работоспособная версия)
- Приложение корректно запускается (без ошибок и сбоев)
- Приложение реализует минимум один сценарий использования
- Если можно не делать авторизацию - пока не делайте или отключите по умолчанию
- Есть инструкция по настройке / развертыванию или скрипты для этого или dockerfile | docker-compose
- Работа с issues в репозитории (см. выше)
- Подготовить презентационные материалы (см. выше)
- Ссылки на материалы (инструкция, презентационные материалы) для проверки итерации собраны в README под заголовком «Итерация 2»
Итерация 3
Сроки: 27.03.2025 - 12.05.2025 (включительно)
Задачи:
- Подготовить версию 2 (почти работоспособная версия)
- Требования версии 1
- Приложение реализует половину от согласованных сценариев использования
- Реализованы базовые тесты (интеграционные, функциональные), желательно через GitHub Actions. Юнит-тесты можно, но как дополнение.
- Работа с issues в репозитории (см. выше)
- Подготовить презентационные материалы (см. выше)
- Ссылки на материалы (инструкция, презентационные материалы) для проверки итерации собраны в README под заголовком «Итерация 3»
Итерация 4
Сроки: 13.05.2025 - 26.05.2025 (включительно)
Задачи:
- Подготовить версию 3 (максимально работоспособная версия)
- Требования версии 2
- Приложение реализует не менее 80% от количества сценариев использования
- Финализированные тесты ( автоматизация из запуска через Github Actions (или иной способ) - желательна, но не обязательна)
- Работа с issues в репозитории (см. выше)
- Подготовить презентационные материалы (см. выше)
- Ссылки на материалы (инструкция, презентационные материалы) для проверки итерации собраны в README.md в корне вашего репо под заголовком «Итерация 4»
Данная итерация оценивается приемущественно по обратной связи Заказчика.
Пояснение про сценарии использования и макеты UI
Теория - Презентация про то, как составлять макет и писать сценарии использования (+типичные ошибки)
Вопросы:
- А если мое приложение не подразумевает интерфейс пользователя в явном виде? Обсудите с заказчиком, можно ли сделать хотя бы какой-то отладочный интерфейс для пользователя (CLI например) и макетируйте его. Если такие интерфейсы придумать не удается, то возникает вопрос - а как вообще проверить ваши результаты (обсудите с заказчиком).