Harder than it sounds
No matter the context for a coding project, always code and test the smallest fraction of your project possible, test it and then add details piece by piece. The first screen you test should have maybe one text field or button or image. It’s easier to debug when you’ve only added a few lines of code since your last build.
Agile development methods fit indie app building perfectly. Ship the most minimalistic version of your app and repeat, taking user feedback into account. The challenging part is finding ways to do that without bloating the app and making it confusing. Sometimes it means not listening to user feedback and users sometimes understand that what they want would make the app too complex to use. Most of the time, adding a feature requires thinking hard about the app’s design.
For example, TextingStory didn’t have data persistence in its first releases. Anything written inside the app was lost when it was closed. That’s how minimalistic it was!
Keep it simple with coding too. Don’t get sucked into the exhilarating work of building a perfectly scalable and evolutive solution. Ship as fast as you can. You won’t need an evolutive solution if the app never takes off and it’s best to know as early as possible whether you can generate user interest in your app or not. If you need to rewrite large parts of your app later, it’s not a big deal. An app is a small piece of software. You’ll also be more comfortable doing it when the app is giving you an income.