Extreme Programming в проекте

Проект полностью следует принципам Extreme Programming (XP), что отражено в процессе разработки.

Парное программирование (Pair Programming)

Все члены команды работали в парах:

  • Тесты: Dmitrii, Vladimir

  • Документация: Aleksei, Dmitrii

  • Курсы: Vladimir, Aleksei

Каждая фича разрабатывалась совместно через pull request’ы с code review.

Непрерывная интеграция (Continuous Integration)

С самого начала проекта был настроен CI/CD pipeline:

  • Коммит 1-2 (f478066, 253a260): Инициализация проекта

  • Коммит 3 (e68bb07, PR #1): Добавление линтеров (flake8, black, isort, pylint)

  • Коммит 8 (ff771d4, PR #2): Базовые тесты

  • Коммит 11 (fc26fbc, PR #4): Автоматическая генерация документации

Каждый push проверяется автоматически: тесты → линтеры → документация.

Частые релизы (Small Releases)

Разработка велась итеративно с маленькими, осмысленными коммитами:

Итерация 1: Инфраструктура (0-30 мин)

253a260 - initial commit (Django проект)
9a185d2 - docs: Initial tech requirements (ТЗ)
e68bb07 - Add linters to CI (#1)

Итерация 2: Тесты и качество кода (30-60 мин)

ae35d59 - fix: fix failing test
ff771d4 - Add basic tests (#2)
29ad218 - major: add makefile for quick actions

Итерация 3: Курсы и основной функционал (60-90 мин)

985a22c - create possibility to add courses
6f0a09f - use black formatter
93b350b - major: add courses to tests

Итерация 4: Документация и финализация (90-120 мин)

3aef5d2 - docs: auto docs from pr
dcbb97b - feat: update documentation uptodate
8f0118c - feat: docs refactor

Простой дизайн (Simple Design)

Архитектура строилась по принципу YAGNI (You Aren’t Gonna Need It):

  • Использование стандартной Django ORM (без лишних абстракций)

  • SQLite для простоты развертывания

  • Bootstrap 5 через CDN (без сложных сборщиков)

  • Минимальная, но достаточная функциональность (MVP)

Рефакторинг (Refactoring)

История показывает постоянное улучшение кода:

6f0f162 - fix: formatting
1f4b3a1 - fix: linter errors
c9fcd7f - fix: black and doc tests
725ff53 - fix: 3 hours instead of 4

Коллективное владение кодом (Collective Code Ownership)

История коммитов показывает активное участие всех членов команды:

  • Vladimir Zakharov - базовая архитектура и функционал курсов

  • Dmitrii Deruzhinskii - тестирование и интеграция

  • Aleksei Tokarev - документация и CI/CD

Тест-ориентированная разработка (TDD)

Тесты были добавлены на ранней стадии (PR #2) и дополнялись с каждой новой фичей:

# Тесты безопасности
- Разграничение доступа по ролям
- Изоляция данных (студент видит только свои курсы)
- Защита от несанкционированного доступа

Отклонения от ТЗ (улучшения)

ТЗ: Преподаватели работают через админку Django

Реализовано: Преподаватели работают через отдельный веб-интерфейс (улучшение UX)

Обоснование:

  • Админка Django предназначена для администраторов

  • Отдельный интерфейс более интуитивен и безопасен

  • Следует XP принципу: «Делай самое простое, что может сработать, но для пользователя»