I posted on this topic more than a year ago(https://news.ycombinator.com/item?id=20864922)
I solve a problem with me not even realising how I solved it!(some of the replies to that old post said that this happens due to experience) But, there is another problem I am facing(which actually is the other side of the same coin!). I come up with crap solution to a problem I am solving. Struggle for few days to come up with something that is satisfactory.
And a few times I just come up with a solution that I myself wonder how the heck did I come up with such a good solution!
So how do I manage this duality?
* Okay, that "super genius" in the title was just to grab your attention, not meant literally ;)
I think that you are trying to overengineer a solution because you feel that your first approach is normal or rudimentary, but not all problems that need to be solved require `good` solutions. Some are very straight forward like a simple CRUD or some might not require any further changes to the solution you have right now.
The root of the issue you are facing might be that you are too focused on this duality concept and worry about the current zone you are in. I would rather suggest on focusing on solving the problem in front of you and not worry about how `amazing` or `normal` it is. Because sometimes you might need to build and try out a normal solution and then iterate to make it better. If you feel like your solution can be improved but you are unsure of how to proceed, create a RFC. A colleague who might see the problem with fresh eyes or has solved something similar before may help you out.
Replaced `crap` with `normal` since I believe no solution is `crap` if it solves the problem. It might require improvement in a lot of ways but that does not mean it is `crap`.