Ну да, частая ситуация из нашей профессии, когда есть два пути:

1) Сначала убедить себя в том, что "правильно и красиво, чтобы было вот так". А потом, уже вбивши это в голову, кинуться героически решать все возникающие проблемы. И в итоге получить удовольствие и повод для гордости, что столько технических проблем решено, чтобы всё получилось, как задумано.

2) Заглянуть вперёд и почуять "местом, где интуиция", сколько будет технических проблем, решить пожертвовать умозрительными красивостями, чтобы этих проблем избежать и сделать тупо, просто и быстро.

Нюансы этих случаев:
1) Обычно обилие решаемых технических проблем говорит о недоупрощённости исходной постановки, а значит, когда-нибудь в будущем, чаще всего, эти неувязки вылезают боком (проблемы "отложены в ящик Пандоры").

2) Если сделать только "тупо и просто", то тоже проблем потом будет много (однако в итоге работать с таким чужим продуктом всё равно лучше, чем с категорией 1, хотя бы по причине отсутствующих фортелей). Поэтому тут обязательно нужно добавить "... и расширяемо". Если точки расширения заложены, то можно спать спокойно. Что-то поменяется - наше "тупое" решение спокойненько адаптируется к новым условиям.

Конкретные примеры не раз обсуждались - исключения из Оберона перечислений и проч., чтобы избежать усложнения механизмов для динамической модульности.

Обычно заставить переключиться на работу по варианту 2) может очень большая перегрузка. Когда становится не до фантазий, лёжа на диване.