Перейти к основному содержимому
Отдельные темы09ГЛАВА 09Формат чемпионата: спринты, критерии и вопросыmainsprint-1sprint-2sprint-3✓ ветка за день✓ запрос закрыт✗ проект архивомспринт = рабочий день

Формат чемпионата: спринты, критерии и вопросы

Прочитано0%
Квизы0/4
Тренажёрыне пройден0/1
Уровень 1 · Новичок

Зачем это нужно​

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

Тут есть неожиданное. Часть критериев оценивает не код, а порядок работы: откуда отведена ветка, слит ли запрос на слияние, лежит ли проект в репозитории файлами. Эти баллы не требуют ни знаний, ни времени — их теряют просто потому, что не прочитали критерий.

Всё в этой главе взято с настоящей рабочей доски подготовки: формулировки критериев, устройство рабочего дня и вопросы, которые участники в самом деле задавали экспертам.

Спринт — это рабочий день​

Первое, что сбивает: слово «спринт». В обычной разработке спринт — это две недели. Здесь критерий формулируется так:

Создана ветка для спринта. Проект корректно сохранён в ветку Спринт X и не требует дополнительного разархивирования. Выполнен pull request ветки Спринта X в ветку main и закрыт.

X — номер дня работы. В конце дня делаешь Pull Request из ветки sprint-X в ветку main. В начале работы создаёшь ветку sprint-X от ветки main, весь день работаешь в ней, в конце дня делаешь pull request в ветку main, и так каждый рабочий день.

СПРИНТ — ЭТО РАБОЧИЙ ДЕНЬ, А НЕ НЕДЕЛЯУтроgit switch -c sprint-X mainветку дня отводят от mainДенькоммиты в sprint-Xвесь день работают в нейВечерpull request → mainи его надо закрыть, а не оставитьи так каждый рабочий день: X — номер дня, а не номер большого этапанезакрытый pull request — это невыполненный критерий, даже если код написан весьотдельный критерий: проект лежит в ветке как файлы, а не архивом — распаковывать ничего не должны
Утром ветка от main, весь день работа в ней, вечером запрос на слияние — и его надо закрыть

Три отдельных требования в одном абзаце, и каждое оценивается само по себе:

  1. Ветка за день есть и названа по номеру дня.
  2. Запрос на слияние сделан и закрыт — не «создан и висит», а именно слит.
  3. Проект лежит файлами, а не архивом: «не требует дополнительного разархивирования».
Важно

Третье требование выглядит странно, пока не увидишь, как его нарушают. Участник в конце дня жмёт «экспортировать проект», получает proekt.zip и коммитит его — «так надёжнее, точно ничего не потеряется». Критерий при этом не выполнен: проверяющий должен открыть репозиторий и увидеть код, а не распаковывать архив.

Откуда отводить ветку​

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

День первый. Ветка от main, коммит, и запрос вечером не слили — забыли или не успели.

День второй. Утром человек просто создаёт новую ветку там, где стоит, — то есть от вчерашней:

git switch -c sprint-2
echo b > f2.txt && git add -A && git commit -m "спринт 2: экраны"
git log --oneline main..sprint-2
b5e563a спринт 2: экраны
f94c346 спринт 1: каркас
ОТ ЧЕГО ОТВЕДЕНА ВЕТКА — ВИДНО ТОЛЬКО В PULL REQUESTОт вчерашней веткиgit switch -c sprint-2в pull request уедет:b5e563a спринт 2: экраныf94c346 спринт 1: каркасОт maingit switch -c sprint-2 mainв pull request уедет:a4d9619 спринт 2: экраныровно работа этого днявчерашние коммиты в сегодняшнем запросе — это спорная приёмка на ровном местепроверяется одной командой до отправки: git log --oneline main..sprint-X
Одна и та же работа: слева в запрос уехал вчерашний коммит, справа — только сегодняшний

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

Как надо: вчерашний запрос слить, а ветку дня отвести явно от main:

git switch -c sprint-2 main
a4d9619 спринт 2: экраны
Нажми на часть выражения
Совет

Команда git log --oneline main..sprint-X — единственная проверка, которая нужна перед отправкой запроса. Одна строка — один день работы. Две строки вместо одной значат, что ветку отвели не оттуда.

Отвечено вопросов: 0 из 3
Что такое спринт в формате чемпионата?
Запрос на слияние создан, но не слит. Критерий выполнен?
Как проверить, что в запрос уедет работа ровно одного дня?
Отвечено верно: 0 из 3

Критерии — это список задач​

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

Создайте цвета
Создайте тему с типографикой
Создайте шрифт
Создайте компоненты кнопок
Создайте инпут
Создайте компонент селект
Создайте компонент Поиск
Создайте компонент BottomSheet
Создайте компонент TabBar
Создайте компонент карточки
Создайте компонент «Хэдер»
Все компоненты библиотеки адаптивны

И отдельно — по работе с сетью:

Сделан запрос Создание пользователя
Сделан запрос Получение каталога
Сделан запрос Поиск
Сделан запрос Получение описания товара
Сделан запрос Добавление в корзину
Сделан запрос Изменение корзины
Сделан запрос Оформление заказа
В случае отсутствия соединения с сетью Интернет необходимо вернуть ошибку
В случае получения ошибки от сервера необходимо вернуть ошибку
Важно

Обратите внимание на две последние строки. Обработка отсутствия сети и ошибки сервера — отдельные оцениваемые пункты, а не «хорошо бы ещё». Приложение, которое показывает каталог, но молча зависает без интернета, теряет здесь баллы независимо от того, как красиво нарисован каталог.

Практический вывод: критерии переносят в трекер дословно, по пункту на задачу, и закрывают по одной. Не «сделать UI-kit», а двенадцать отдельных строк. Иначе в конце дня непонятно, что именно готово.

Вопросы экспертам​

ВОПРОС ЭКСПЕРТУ — ТОЖЕ ЗАДАЧАЗаметилрасхождение макетаи заданияЗаписалв список,не отвлекаясьЧекпоинтзадал пачкой,когда можноЗаписал ответписьменно, себеи командеответ эксперта меняет критерий: «пароль должен содержать пробел» — это уже не опечатка, а требованиене спросили — реализовали по своему пониманию и получили несоответствие при приёмкекопить вопросы выгоднее, чем дёргать по одному: экспертов много не бывает, а времени у них малоответ записывают: через два дня «нам вроде разрешили» уже не аргумент
Заметил, записал, задал пачкой на чекпоинте, записал ответ

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

В фигме кривая типография
Хедер из ui-kita не соответствует используемому
Не соответствие дизайна модального окна
Пароль должен содержать пробел в задании
Требования к паролю
Вход по паролю или биометрии
Какой тип кэширования
Уточнение по сохранении состояния
Каталог поменять на поиск
неправильное название кнопки
В критериях оценки 2 спринта указано "Выполнен merge для спринта 1 с веткой main"

Это не придирки и не жалобы. Каждая строка — место, где задание можно понять двумя способами, и выбор наугад стоит баллов.

Интересный факт

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

Как с этим работать. На доске подготовки под вопросы заведены отдельные колонки: «Вопросы», «Вопросы (чекпоинт)», «Донести до экспертов». Смысл в накоплении: вопросы копятся по ходу работы и задаются пачкой, когда появляется возможность. Дёргать эксперта по одному вопросу и дорого по времени, и не всегда возможно.

И последнее: ответ записывают. Через два дня «нам вроде разрешили» — не аргумент при приёмке.

Отвечено вопросов: 0 из 3
Как переносить критерии в трекер?
«В случае отсутствия соединения необходимо вернуть ошибку» — это
В задании требование выглядит как опечатка. Что делать?
Отвечено верно: 0 из 3

Типичные потери баллов​

Потеря 1. Ветка дня отведена от вчерашней.

Проверяется одной командой до отправки запроса.

Потеря 2. Запрос создан, но не слит.

В критерии сказано «и закрыт». Вечером остаётся тридцать секунд работы.

Потеря 3. Проект залит архивом.

git add -f proekt.zip && git commit -m "залил архив проекта"
git ls-files
proekt.zip

Критерий требует, чтобы проект не нуждался в разархивировании.

Потеря 4. Расхождение макета и задания решено молча.

Решили сами — получили несоответствие при приёмке. Спросили — получили критерий.

Потеря 5. Обработка отказов оставлена «на потом».

«Нет сети» и «ошибка сервера» — отдельные пункты, и они обычно не успеваются именно потому, что их считают не основной работой.

Потеря 6. Критерии прочитаны один раз в начале.

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

Отвечено вопросов: 0 из 3
Проект залили в репозиторий архивом. Что скажет критерий?
Когда читать критерии последний раз?
Почему обработку отказов сети часто не успевают?
Отвечено верно: 0 из 3

Шпаргалка по главе​

Что нужноКак
Ветка дняgit switch -c sprint-X main — обязательно с main
Что уедет в запросgit log --oneline main..sprint-X
Слить вечеромзапрос на слияние в main, и закрыть его
Проверить, что нет архиваgit ls-files | grep -iE "\.(zip|rar|7z)$"
Критерииперенести дословно, по пункту на задачу
Вопросыкопить и задавать пачкой на чекпоинте
Ответ экспертазаписать письменно
Перед сдачейпройти критерии по списку ещё раз

Словарь главы​

ТерминЧто это
СпринтОдин рабочий день; ему соответствует ветка sprint-X
КритерийПроверяемый пункт оценки; фактически готовая задача
ЧекпоинтМомент, когда можно задать накопленные вопросы экспертам
main..sprint-XКоммиты, которых нет в main — ровно содержимое запроса
Запрос на слияниеPull request; засчитывается только закрытый
РазархивированиеТо, чего проверяющий делать не должен: проект лежит файлами

Цель: скорость ≥ 95 зн/мин, точность ≥ 90%

git switch -c sprint-2 main

Что должен уметь после главы​

  • объяснить, что спринт здесь — рабочий день, и назвать три требования критерия;
  • отвести ветку дня от main и проверить, что уедет в запрос;
  • узнать по выводу git log main..sprint-X, что ветку отвели не оттуда;
  • перенести критерии в трекер дословно, по пункту на задачу;
  • накапливать вопросы экспертам и записывать ответы;
  • назвать шесть мест, где баллы теряются без всякой связи с кодом.

Проверка по главе​

Сводная проверка по всей главе: 10 вопросов, 5:00 на всё, без подсказок по ходу. Вопросы показываются по одному, ответ изменить нельзя. Если время выйдет — экзамен завершится с тем, что успел ответить. Пересдавать можно сколько угодно раз.

Куда дальше: проверенные ресурсы​

Видео по теме

ВидеоPull request на GitHub — инструкция для новичков | ХекслетХекслет - нормальные it-курсы
ВидеоGit - Pull request на практике / GitHubТимофей Коваленко
ВидеоЧто такое Pull Request \ Merge Request. "Git - это просто!" - Урок 9JavaClass
ВидеоGit branch — работа с веткамиХороший программист
ВидеоIDEA+Git (ветки, пулл реквесты). ПОДРОБНО! Новый интерфейс, подводные камни. Установка с 0.Kotlin & Android с нуля – Иван Ветров

Комментарии

Обсуждение живёт в GitHub Discussions и грузится с чужого домена — поэтому только по нажатию.