I would want to extend the discussion towards bigger picture, too. Some people seem to think that it's supposedly possible to design perfect software and then implement it perfectly. I consider this as part of Premature Optimization, too, because there's rarely any way to understand the problem space well enough to design perfect software. All great software is product of evolution where end users create new ideas and submit reports about noticed issues and without this feedback from end users, there's no way to even design the software in perfect way.
And if your design is far from perfect, trying to create perfect implementation for that doesn't make much sense. As a result, I truly think the "worse is better" is the best we can do.
As for how to avoid it, I think you cannot do better than be aware about the issue and maybe have a highly visible checklist for your daily routine to rethink your tasks for the day. Are you already doing premature optimization in reality?