Что такое Scrum в разработке ПО?

«Что такое Scrum в разработке ПО?» — вопрос из категории Софт-скиллы, который задают на 10% собеседований IOS Разработчик. Ниже — развёрнутый пример ответа, который можно адаптировать под свой опыт.

Ответ

Scrum — это фреймворк гибкой (Agile) разработки ПО, основанный на итеративной и инкрементальной поставке ценности.

Ключевые роли:

  • Product Owner (Владелец продукта): Формирует и приоритизирует Product Backlog.
  • Scrum Master: Обеспечивает понимание и соблюдение процессов Scrum, устраняет препятствия.
  • Development Team (Команда разработки): Самоорганизующаяся кросс-функциональная команда, выполняющая работу.

Основные артефакты и события:

  1. Product Backlog: Упорядоченный список всех требований к продукту.
  2. Sprint Backlog: Набор элементов из Product Backlog, выбранных для реализации в текущем спринте.
  3. Спринт: Итерация фиксированной длины (обычно 2-4 недели).
  4. События:
    • Sprint Planning: Планирование работ на спринт.
    • Daily Scrum: Ежедневный 15-минутный митинг для синхронизации.
    • Sprint Review: Демонстрация инкремента продукта стейкхолдерам.
    • Sprint Retrospective: Ретроспектива для улучшения процессов команды.

Пример структуры элемента бэклога:

struct ProductBacklogItem {
    let id: String
    let title: String
    let description: String
    let priority: Int // Чем меньше число, тем выше приоритет
    var estimate: Int? // Оценка в story points
}
// Пример использования
var backlog = [ProductBacklogItem]()
backlog.append(ProductBacklogItem(id: "US-42", title: "Реализовать OAuth-авторизацию", description: "Пользователь может войти через Google", priority: 1))

Преимущества: Прозрачность, адаптивность к изменениям, регулярная поставка работающего ПО и быстрая обратная связь.