I slept on the floor in college, didn't even own a bed for about a year. Things change when you have an SO;) Extrapolating from that, simplification may need to take into account changing conditions - what was nice, simple code may need to take on complexities when the problem you're trying to solve changes. This often happens once you ship something the first time - the critical thing is being aware of it and refactor once you can see the next simplicity present itself. Often there is an interim complexity that is necessary when you don't have enough data to simplify further.