Assuming you are a competent developer, you will rarely fail when actually writing an app. It’s far more likely that the work you create simply isn’t wanted or is less desirable than a competitor’s product on the market. Get product feedback first and don’t waste your time doing things people don’t want.
Make sure your code is used. A prototype lets you identify areas of the code that aren’t critical for users and remove them. It means your code is far more likely to be used and used far more often.
If you think about a UI from a technical perspective first, the quality and usability of your product will be reduced. Lower quality product means less users, less sales and reduced user satisfaction.
It’s frustrating to see your clients and users constantly changing their minds about what they want. Lots of hard work gets thrown out, and changes often result in the quality of the code base dropping significantly. A working click/slide/swipe through mockup is more engaging and easier to understand than piles of documentation, and let’s clients make decisions far earlier than they would otherwise be able to.
By jumping straight into code, the way you solve UI problems will be constrained by the architecture you choose early on for your code rather than the other way around. This almost always causes sub-par UI to be created in your app due to more limited choices or the headache of changing the structure of your code when you realise you want to approach the problem in a different way.
As coders, we love to write code. But while the joy is often in the technical challenges associated with a particularly difficult algorithm or tracking down a particularly nasty bug, we ultimately seek to make a difference in the world. If a piece of well written software is never used or appreciated by your users, was it worth writing?
Making UI and functional changes after you think your code is completed is both frustrating and costly. A good prototype will eliminate significant later changes as well as reduce your frustration levels, particularly when faced with tight deadlines.