Блог инженера

History is written by its contributors

Как принимать техрешения в продуктовой команде

2025-09-13 время чтения 3 мин Engineering Management Productivity Ilya Brin

Привет, бро! 👋

Ты не просто кодер - ты архитектор будущего. Каждый твой технический выбор - это либо прорыв, либо техдолг на год вперёд.

Но вот проблема: вокруг куча мнений, сроки горят, а от твоего решения зависит, будет ли продукт взлетать или разобьётся при старте.

Давай разберёмся, как принимать техрешения быстро, уверенно и без последующего “что за #@!^? я выбрал?”

Гид для тех, кто не хочет стрелять себе в ногу

1. Почему 80% техрешений - это не про технологии, а про людей

Правильный стек ≠ успех. Успех = решение, которое:
✅ Подходит команде
✅ Решает бизнес-проблему
✅ Не превращается в мину замедленного действия

Пример из жизни:

Выбор между Kafka и RabbitMQ

  • Kafka круче, но если в команде никто не умеет с ней работать - это провал
  • RabbitMQ проще, но не масштабируется под будущие нагрузки

Вывод: идеального решения нет. Есть оптимальное для вашего контекста.

2. Алгоритм принятия решений (без воды)

Шаг 1: Чётко сформулируй проблему

❌ Плохо: “Нам нужен новый API-гейтвей”
✅ Хорошо: “Текущий API не справляется с 10к RPS, а latency скачет до 500ms”

Шаг 2: Собери факты

  • Какие есть ограничения? (сроки, бюджет, экспертиза)
  • Какие варианты вообще существуют?
  • Что используют конкуренты?

Простой чеклист:

- [ ] Нагрузка (RPS, data size)  
- [ ] Требования к отказоустойчивости  
- [ ] Навыки команды  
- [ ] Стоимость владения  

Шаг 3: Обсуди с ключевыми игроками

РольЧто спросить
Продукт-менеджер“Какие фичи будут через полгода?”
Техлид“Как это повлияет на другие сервисы?”
Разработчик“Сколько времени займёт внедрение?”

Шаг 4: Прими решение и зафиксируй

Формат для документации:

## Решение: Выбор базы данных для аналитики  

**Проблема:**  
PostgreSQL не справляется с JOIN на 1B+ записей  

**Варианты:**  
1. ClickHouse (+ скорость, - нет транзакций)  
2. PostgreSQL с партиционированием (+ знакомо, - сложный тюнинг)  

**Выбрано:** ClickHouse  

**Причина:**  
- Ожидаем рост данных 10x  
- Аналитика не требует ACID  

Шаг 5: Назначи ответственного за последствия

“Вася, ты отвечаешь за мониторинг производительности ClickHouse после релиза”


3. Главные ловушки (и как их избежать)

💣 Ловушка 1: “Мы всегда так делали”

Пример:

“У нас всё на MongoDB, поэтому новый сервис тоже будем на ней делать”

Как избежать:

  • Регулярно проводи tech radar-сессии
  • Раз в квартал смотри: “А если бы мы начинали сейчас, выбрали бы то же самое?”

💣 Ловушка 2: Хайп-технологии

Фразы, которые должны насторожить:

“Давайте на блокчейне!”
“Это же используют в FAANG!”

Правило:

Прежде чем внедрять новую технологию, найди 3 реальных кейса её использования в вашем контексте

💣 Ловушка 3: Решения “на глазок”

Спасение:

# Перед выбором технологии:
make benchmark
  • Замерь нагрузку
  • Сравни хотя бы 2 варианта

4. Как продать решение команде (даже если оно спорное)

🚀 Приём 1: “Пирамида аргументов”

  1. Факты: “На тестах Kafka дала 5x больше throughput”
  2. Риски: “Да, первые 2 недели будем разбираться”
  3. Экспертиза: “Вот бенчмарки от Confluent”

🚀 Приём 2: “Пробный шар”

“Давайте попробуем на одном не critical сервисе”

🚀 Приём 3: “Обратная связь = часть процесса”

После внедрения:

“Саша, как тебе новая ORM в работе? Что можно улучшить?”

Вывод: Ты - не гадалка, ты - инженер решений

Хорошее техрешение:
🔧 Решает конкретную проблему
📈 Учитывает будущий рост
🤝 Поддерживается командой

Главный секрет:

Лучшее решение - то, после которого через полгода не хочется сказать “Блин, надо было сделать иначе”

P.S. А как ты принимаешь сложные техрешения? Делись кейсами в комментах! 🚀

// Дополнительные ресурсы:
// - Книга "Software Architecture: The Hard Parts" (Neal Ford)
// - Статья "How to Make Technical Decisions" (Martin Fowler)
comments powered by Disqus