The difference between a half-assed app and a kick-ass app comes down to execution. Many apps try to be too many things at once— hey, have you thought about adding a tuner?— or packing in too many features too quickly. For Selah Chords to have that hand-crafted, well-executed look I wanted, I need to punt features.
When you are building an app, you have to define the MVP— the Minimally Viable Product. What is shippable? But, sometimes during development you reach a point that the product is shippable before you hit what you thought was your MVP. That happened with Selah Chords.
The initial MVP included Custom Tunings. The ability to add, edit, and delete tunings and instruments. Why? Because that is what the engine, the algorithm, was built to do. Give it a set of strings— and a couple parameters— and it would find chords. But once I had the interface for switching chords, scrolling through voicings, and the beautiful themes all in place I realized something. I could just load up a set of default instruments and tunings and ship it. Everything else was ready to ship, but to add Custom Tunings would take another month at least.
So I punted Custom Tunings. It made sense. It was still a very important feature to me, but not for the 1.0. And, as it turned out, not for the 1.1 either. Version 1.1 came with favorite chords, copying chord voicings, drag-n-drop, and banjo support.
You must, when you are building an app, have the goal of shipping. You can always ship an update. Ship early. Ship often.