Создание абстракций
Раньше, когда мне нужно было написать программу, я с самого начала пытался делить код на маленькие кусочки и раскладывать его по файлам. В какой-то момент становилось сложно продолжать работать. Это связано с тем, что когда только начинаешь решать задачу - известно слишком мало информации о том, как ее лучше сделать.
Поэтому теперь я придерживаюсь следующей стратегии: максимально долго все пишу в одном месте и начинаю делить код только тогда, когда с ним уже невозможно работать. К этому моменту становится понятно как все должно быть устроено и абстракции получаются более правильными.