Is it better to be a genius programmer, or an average programmer with an good understanding of the problem domain?
1. What works really, really well is pairing people with deep domain knowledge and some programming ability with those who just have great programming ability.