Как принимать техрешения в продуктовой команде
Привет, бро! 👋
Ты не просто кодер - ты архитектор будущего. Каждый твой технический выбор - это либо прорыв, либо техдолг на год вперёд.
Но вот проблема: вокруг куча мнений, сроки горят, а от твоего решения зависит, будет ли продукт взлетать или разобьётся при старте.
Давай разберёмся, как принимать техрешения быстро, уверенно и без последующего “что за #@!^? я выбрал?”
Гид для тех, кто не хочет стрелять себе в ногу
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: “Пирамида аргументов”
- Факты: “На тестах Kafka дала 5x больше throughput”
- Риски: “Да, первые 2 недели будем разбираться”
- Экспертиза: “Вот бенчмарки от Confluent”
🚀 Приём 2: “Пробный шар”
“Давайте попробуем на одном не critical сервисе”
🚀 Приём 3: “Обратная связь = часть процесса”
После внедрения:
“Саша, как тебе новая ORM в работе? Что можно улучшить?”
Вывод: Ты - не гадалка, ты - инженер решений
Хорошее техрешение:
🔧 Решает конкретную проблему
📈 Учитывает будущий рост
🤝 Поддерживается командой
Главный секрет:
Лучшее решение - то, после которого через полгода не хочется сказать “Блин, надо было сделать иначе”
P.S. А как ты принимаешь сложные техрешения? Делись кейсами в комментах! 🚀
// Дополнительные ресурсы:
// - Книга "Software Architecture: The Hard Parts" (Neal Ford)
// - Статья "How to Make Technical Decisions" (Martin Fowler)