Говорят, в программировании две проблемы: инвалидация кэша и именование переменных. Не знаю, я никогда не испытывал с этим проблем. Чтобы не сбрасывать кэш, просто пиши без кэша. Проще оптимизировать SQL-запрос, чем возиться с условным Редисом.

Переменные называй как хочешь, главное — не терять темп при написании кода. Если я думаю над именем больше секунды, то пишу foo и bar. Когда код готов, становится ясно, во что их переименовать.

Истинные две проблемы программирования другие.

Первая — программист закладывает абстракции там, где не следует. Иными словами, готовится к тому, что никогда не произойдет. Например, делает наследование из трех классов или внедряет ОРМ на случай переезда на другую базу. И никогда не переезжает.

Вторая проблема — наоборот: программист не оставляет шанса поправить его код. Скажем, сервис должен вернуть список сущностей, и программист честно отдает массив в JSON. И теперь нужно добавить в ответ какую-то мету, но сделать это нелья — у нас вектор, а не мапа. Приходится исправлять на мапу и выносить мозг клиентам, чтобы поправили у себя.

Как только первое и второе правила согласуются с реальностью, жить и работать становится проще.