For most software, design is typically the most important factor. An app that does the right thing and has the right interface but is poorly coded and inefficient is still useful. An app that does the wrong thing, or has an awful interface, is not useful no matter how slick the code behind it.