The hardest will ultimately be your UI, and programs usabillity.
A UI interface can make or break an app. I was once learned the best advice is no UI is the best UI.
If parts of your app can be automate behind the secenes from the users do it. Kinda like with the old vcr example. People always hated using a confusing UI to set the clock on them, now the vcr's can auto set time based on time encoding from some tv stations.
A good resource is...
http://www.uiweb.com/