В чем разница между Scrum и Kanban?

«В чем разница между Scrum и Kanban?» — вопрос из категории Методологии разработки, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Scrum — итеративный фреймворк с фиксированными спринтами. Kanban — метод непрерывного потока работы с визуализацией на доске.

Сравнительная таблица:

Параметр Scrum Kanban
Итерации Фиксированные спринты (1-4 недели) Непрерывный поток, без итераций
Роли Scrum Master, Product Owner, Development Team Нет строгих ролей, может быть Kanban Master
Планирование В начале спринта (Sprint Planning) По мере необходимости (on-demand)
Изменения Запрещены во время спринта Разрешены в любой момент
Метрики Velocity, Sprint Burndown Cycle Time, Lead Time, WIP
Артефакты Product Backlog, Sprint Backlog, Increment Kanban Board, Cards
Церемонии Daily Standup, Sprint Review, Retrospective Daily Standup, Replenishment, Delivery Review
Визуализация Доска обновляется каждый спринт Постоянная доска с колонками

Пример Scrum-процесса:

┌─────────────────────────────────────────────────┐
│ Sprint #5 (2 недели)                            │
├─────────────────────────────────────────────────┤
│ День 1: Sprint Planning → выбираем задачи из    │
│         Product Backlog в Sprint Backlog        │
│ День 1-10: Daily Standup (15 мин)               │
│ День 10: Sprint Review → демонстрация инкремента│
│ День 10: Retrospective → улучшение процесса     │
└─────────────────────────────────────────────────┘

Пример Kanban-доски:

┌─────────────┬──────────────┬─────────────┬─────────────┐
│   Backlog   │   Selected   │ In Progress │    Done     │
│             │   (WIP≤5)    │   (WIP≤3)   │             │
├─────────────┼──────────────┼─────────────┼─────────────┤
│ • Task F    │ • Task A     │ • Task B    │ • Task X    │
│ • Task G    │ • Task C     │ • Task D    │ • Task Y    │
│ • Task H    │ • Task E     │             │ • Task Z    │
└─────────────┴──────────────┴─────────────┴─────────────┘
↑ WIP-лимиты предотвращают перегрузку команды

Практические рекомендации по выбору:

# Псевдокод для выбора методологии
def choose_methodology(project_type):
    """
    Выбор между Scrum и Kanban на основе характеристик проекта
    """
    if project_type == "new_product_development":
        # Scrum: предсказуемые итерации, приоритизированный бэклог
        return {
            "methodology": "Scrum",
            "reason": "Нужны регулярные релизы и фиксированное планирование",
            "sprint_length": "2 недели",
            "ceremonies": ["Planning", "Daily", "Review", "Retro"]
        }
    elif project_type == "support_maintenance":
        # Kanban: непрерывный поток, срочные запросы
        return {
            "methodology": "Kanban",
            "reason": "Непрерывный поток работ, частые срочные задачи",
            "wip_limits": {"Selected": 5, "In Progress": 3},
            "metrics": ["Cycle Time", "Throughput"]
        }
    elif project_type == "mixed":
        # Scrumban: гибридный подход
        return {
            "methodology": "Scrumban",
            "reason": "Нужны итерации Scrum с гибкостью Kanban",
            "features": ["Sprints", "Kanban Board", "WIP Limits"]
        }

Ключевой insight: Scrum фокусируется на предсказуемости через итерации, Kanban — на гибкости и непрерывном потоке. Многие команды используют гибридные подходы (Scrumban).