Каково нести ответственность за чужой код
Комментарии (2)
Ответ сгенерирован нейросетью и может содержать ошибки
Ответственность за чужой код
Это глубокий вопрос, который идёт за пределы технологии. В своей карьере из 10+ лет я работал в команде с десятками разработчиков и постоянно сталкивался с этой дилеммой — баланс между ответственностью и самопожертвованием.
Реальность: код — это команда
В production коде нет «чужого» или «моего» кода — есть код компании, за который отвечает вся команда. Это критичное изменение мышления:
// Плохой подход
"Это написал Коля, пусть он и чинит баг"
// Правильный подход
"Баг в production = проблема команды, нужно чинить вместе"
Почему это важно:
- Клиенты не платят за индивидуальный вклад, они платят за working product
- Баг в production влияет на весь бизнес, независимо от автора
- Knowledge sharing делает команду сильнее
Мой подход: shared ownership
Я практикую модель shared responsibility, но с градацией:
Уровень 1: Code Review
Когда я вижу pull request с проблемами:
// Плохо: просто указать на проблему
"Здесь утечка памяти"
// Хорошо: объяснить и помочь
"Здесь утечка памяти (EventEmitter не удаляет listener).
Вот правильное решение:
emitter.removeListener('event', handler)
Это кейс, когда нужно явно очищать ресурсы."
Я делаю code review заботливо — не для критики, а для обучения и совместного лучшего кода.
Уровень 2: Production support
Когда в production баг:
Первый этап — быстро что-то сделать:
// Если код написал другой разработчик
// 1. Быстро патч
const config = process.env.FEATURE_FLAG_DISABLED ? false : originalValue;
// 2. Раскатаем
// 3. Notify автора
Второй этап — совместный разбор:
// На next-day meetings
"У нас был баг из-за race condition в findOpponent.
Давайте вместе разберёмся и добавим SELECT FOR UPDATE SKIP LOCKED?"
Здесь ключ — не обвинять, а учиться вместе.
Уровень 3: Архитектура и мониторинг
Именно здесь я несу максимальную ответственность как senior:
Защита от плохого кода:
// Правильная архитектура предотвращает ошибки
// Вместо того, чтобы полагаться на дисциплину разработчика
// ❌ Плохо — надеяться, что разработчик помнит
publishEvent(event); // Нужно помнить про retry logic
// ✅ Хорошо — запечь в фреймворк
class EventBus {
async publish(event: Event) {
// Retry, timeout, monitoring — встроены
return this.sendWithRetry(event, 3);
}
}
Мониторинг и алёрты:
// Даже если код напишет junior,
// я настраиваю алерты на проблемы
if (memoryUsage > 500MB) {
sendAlert('Memory leak detected');
// Или автоматически рестарт
}
Психология ответственности
Что я НЕ буду делать:
- Брать чужой код в свою зону ответственности — это demotivate разработчика
- Постоянно спасать — developer должен расти
- Не делиться знанием — это создаёт silos
Что я БУДУ делать:
- Помогать в production — потому что это её责任 команды
- Менторить — так человек растёт
- Улучшать процессы — чтобы меньше ошибок в принципе
// После баага — lesson learned
"Ребята, давайте добавим:
- Unit тесты для этого модуля
- Интеграционные тесты в CI/CD
- Мониторинг для этого сценария
Тогда в будущем баг не произойдёт."
Практические примеры
Ситуация 1: Junior написал баг в production
// Его код
array.forEach(item => {
asyncFunc(item); // Забыл await!
});
// Мой подход
1. Быстро патчим: for (const item of array) await asyncFunc(item);
2. На retro: "Это не ошибка, это лучший способ учиться.
Давайте добавим eslint rule?"
3. Предлагаю: "Хочешь, я научу тебя debug async issues?"
Ситуация 2: Сложный legacy code ломается
// Никто не понимает, почему работает
// Это ответственность tech lead (я)
Это красный флаг:
1. Нужен рефакторинг, иначе costs повысятся
2. Нужна документация
3. Нужны тесты
Я запланирую спринт на улучшение, а не жду, пока другие это заметят.
Граница ответственности
За что я НЕ отвечаю:
- Если разработчик игнорирует code review feedback — это на его manager'а
- Если есть ясная документация, но человек не читает — это его ответственность
- Если мы установили процесс, но его не следуют — это проблема процесса/управления
За что я отвечаю:
- Код работает в production
- Команда растёт
- Система приносит доход
- Никто не выгорел (мораль в норме)
Вывод для интервью
Помимо технических навыков, я ценю:
✅ Ответственность — брать ownership за результат ✅ Empathy — понимать, что everyone is learning ✅ Sharing — передавать знания, не копить ✅ Sustainability — баланс между быстротой и качеством
Код — это не про эго, а про создание value для пользователей и компании. Человек, который это понимает, будет хорошим teammate и лидером.