← Назад к вопросам

Как на проекте выглядит задача которая к тебе приходит?

1.0 Junior🔥 131 комментариев
#Soft Skills

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Жизненный цикл задачи на проекте

На современном проекте задача приходит в виде структурированной карточки в системе управления проектами (Jira, Linear, GitHub Issues). Расскажу о полном жизненном цикле.

Формат задачи в системе

Обычно задача содержит:

[BACKEND-1234] Реализовать API для получения списка пользователей

Описание:
- Создать endpoint GET /api/v1/users
- Добавить пагинацию (limit, offset)
- Добавить фильтрацию по статусу
- Вернуть структурированный JSON

Приёмочные критерии:
- Unit тесты с coverage > 90%
- E2E тесты для основных сценариев
- Документация в API docs
- Code review пройден

Дополнительно:
- Spike: https://issue-tracker/SPIKE-123
- Mock API: https://mockapi.example.com
- Связанные задачи: BACKEND-1233

Типовая задача на бэкенде

1. Обсуждение требований

Когда задача в статусе "Backlog", происходит:

  • Refinement — уточнение требований на встречах
  • Оценка — team estimate в стори-поинтах
  • Разбор неясных моментов — вопросы к PM/дизайнеру

2. Техническое планирование

Чаще всего в начале задачи добавляются:

# Примеры из CLAUDE.md и Architecture docs

# Слои приложения должны быть:
# domain/ -> application/ -> infrastructure/ -> presentation/

# Требования к коду:
# - DDD (Domain-Driven Design)
# - Clean Architecture
# - SOLID принципы
# - TDD (тесты писать первыми)
# - Coverage > 90%
# - make lint && make test (с tail!)

В задаче обычно уже указано:

  • Какой слой архитектуры затрагивается
  • Требования к тестированию
  • Стандарты кода проекта
  • Чеклист Code Review

3. Как я начинаю работу

Шаг 1: Изучение кодовой базы

# Ищу похожие функции/структуры
grep -r "get_list" backend/ --include="*.py"
ls -la backend/src/application/users/

# Смотрю структуру проекта
tree -L 3 backend/src/domain/

Шаг 2: Проверка документации

  • docs/architecture/ — как устроена архитектура
  • docs/api-design/ — как должны выглядеть endpoints
  • README.md — как запустить проект локально

Шаг 3: Вопросы и уточнения

По CLAUDE.md нужно:

  1. Изучить кодовую базу
  2. Задать вопросы (по 3 штуки за раз)
  3. Уточнять, пока всё не согласуется на 100%
  4. ТОЛЬКО ПОТОМ писать план
# Типичные вопросы к PM:

# 1. Должна ли пагинация поддерживать cursor-based?
#    Или достаточно offset/limit?

# 2. Как фильтровать по датам?
#    Диапазон (from/to) или конкретное число дней?

# 3. Нужны ли права доступа?
#    Может ли пользователь видеть всех юзеров
#    или только из своего подразделения?

4. Разработка по TDD

Тогда начинается разработка:

# Шаг 1: RED - написать падающий тест

def test_get_users_returns_list():
    response = client.get("/api/v1/users")
    assert response.status_code == 200
    assert isinstance(response.json(), list)

# Шаг 2: GREEN - минимальная реализация

@router.get("/users")
def get_users():
    return []

# Шаг 3: REFACTOR - улучшить без изменения тестов

@router.get("/users")
async def get_users(
    session: AsyncSession = Depends(get_session),
    skip: int = 0,
    limit: int = 100
):
    users = await get_all_users(session, skip, limit)
    return [UserSchema.from_orm(u) for u in users]

Статусы задачи

Backlog → Ready for Dev → In Progress → Code Review
    ↓                                        ↓
  (уточнение требований)            (тесты, документация)
                                            ↓
                          Staging Test → Approved → Done

Как я отмечаю готовность

Перед тем как заявить "готово":

# 1. Проверяю линтер
make lint

# 2. Запускаю все тесты
make test | tail -50

# 3. Проверяю coverage
make test:coverage
# Должно быть >= 90%

# 4. Локально тестирую основные сценарии
pytest tests/integration/test_users_api.py -v

# 5. Проверяю документацию обновлена
grep -r "GET /api/v1/users" docs/

Важные ограничения

  • НИКОГДА не коммитим — только разработчик может делать push
  • НИКОГДА не деплоим — только через Dokku
  • НИКОГДА не берём решения сами — спрашиваем при неясных моментах
  • TDD обязателен — тесты пишем ПЕРВЫМИ
  • Coverage >= 90% — это требование, не рекомендация

Пример полной задачи в коде

# tests/integration/test_users_list.py

import pytest
from fastapi.testclient import TestClient


@pytest.mark.asyncio
async def test_get_users_returns_paginated_list(client, db_session):
    """GET /api/v1/users возвращает список пользователей"""
    # Arrange
    user1 = await create_user(db_session, name="Alice")
    user2 = await create_user(db_session, name="Bob")
    
    # Act
    response = client.get("/api/v1/users?skip=0&limit=10")
    
    # Assert
    assert response.status_code == 200
    data = response.json()
    assert len(data) == 2
    assert data[0]["name"] == "Alice"
    assert data[1]["name"] == "Bob"


@pytest.mark.asyncio
async def test_get_users_with_filter(client, db_session):
    """GET /api/v1/users?status=active фильтрует по статусу"""
    await create_user(db_session, name="Alice", status="active")
    await create_user(db_session, name="Bob", status="inactive")
    
    response = client.get("/api/v1/users?status=active")
    
    assert response.status_code == 200
    assert len(response.json()) == 1
    assert response.json()[0]["name"] == "Alice"

Так выглядит полный цикл задачи от получения до сдачи.

Как на проекте выглядит задача которая к тебе приходит? | PrepBro