Working on the same codebase almost daily for 4y+,
one thing I noticed is that the temporary hacks will stay around for years and great ideas with thoroughly thought out solutions might be replaced or completely removed in a few months down the line.
Knowing what we need in the future is really hard. We always have to plan also for the opposite of our assumptions.
We have to be able to maintain a piece of code for a long time but we also have to be able to throw it away again next week.