I recently hit a wall like this as well after designing many apps and enterprise systems.<p>It was a problem that seemed simple at first, but I just kept banging my head against it. I did exactly what some people described here, switched to a functional language, but that didn&#x27;t help. I started doubting myself.<p>I&#x27;m though it now, and I like the solution, although it could be better. Here are some points that I&#x27;ve picked up along the way:<p>- Remind yourself that you are not only generating value when you actually write code. When you take a walk and think about the problem, draw stuff on paper and so on, this is still work. You are still doing exactly your job.<p>- This gets hard when coming up with a design takes longer than usual. It&#x27;s likely that you have run into a complex problem without knowing it. Endurance &amp; patience is key here.<p>- Attack from different angles, don&#x27;t consider the time wasted if you try something and then end up throwing it away, you will have learned something, even if it just eliminating one possible design option.<p>After you are through it, you might end up cherishing the experience.