Почему первая версия всегда самая страшная
Заметки о том, как начинать плохо — намеренно: в коде, в беге и в тех частях жизни, где никто не выдаёт техзадание.
Когда мне впервые пришлось проектировать сервис, который повезёт настоящий продовый трафик, я два дня его не писал. Не был заблокирован, не исследовал — просто избегал момента, когда файл существует и он неправильный.
Техзадания, которого нет
У инженерии есть удобная привычка: тебе дают требования, а требования подсказывают форму. Вне инженерии требований нет, и форма появляется только после того, как ты сделал что-то достаточно уродливое, чтобы на это отреагировать.
Первая версия — не заявление о твоих способностях. Это вопрос, который ты задаёшь задаче.
Три вещи, которые надёжно вытаскивают меня из первого часа:
- Написать интерфейс раньше реализации — даже если оба неверны.
- Поставить таймбокс, который стыдно превысить.
- Рассказать одному человеку, что ты делаешь, до того как это заработает.
// честный первый черновик
func Process(ctx context.Context, img Image) error {
return errors.New("not yet, but soon")
}
Бег научил меня тому же быстрее, чем работа. Первый километр — всегда спор; остальное — просто расстояние.