Большинство "решений" для нетривиальных задач — это на самом деле вообще не решения. Это: Как такие решения находить: — Рисуем наши любимые весёлые квадратики. Какие субъекты и объекты есть в системе. Рисуем, как они связаны. Связи прописываем и прямые, и обратные. — Находим те связи, где наши лыжи перешли на наждачку. Где мы еле как родили, какая же там связь. Часто решение именно там. — Нещадно ломаем что-нибудь одно. И смотрим, что будет (пока что на квадратиках). Меняем какую-нибудь одну связь, выкидываем какой-нибудь объект. Особенно всё, что "так принято", "так всегда делали", "так сказали сверху". Совсем свежий. В июне я на конференции ECCS отвечала на вопрос: как мы реализовали явление времени в нашем симуляторе. Симулированный заказ в каждом прохождении должен вести себя одинаково. Независимо от того, когда запущена симуляция. Типовое мышление: "Окей, давайте пробросим дату создания, завяжем квесты на реальные даты, и заставим тренеров учитывать временные сдвиги". Это и было б