@predvoditelev, я стараюсь закладывать архитектуру, руководствуясь идеей о том, что общая цель проекта будет оставаться той же самой, а требования к нему через некоторое время изменятся полностью, от начала и до конца. И стараюсь сделать так, чтобы в этой ситуации внесение изменений в код не приносило боль 😊 Ибо по моему опыту требования к программе всегда радикально меняются, как бы заказчик (даже если это ты сам) ни был уверен в том, что он хочет в точности то, о чем сейчас говорит.
Пока, правда, рано говорить, насколько такой подход лично у меня удачен, мало времени прошло с тех пор, как начал применять его в проде. Но потенциал вижу большой.