Practical, and practicable software
We should focus on making our software practical, and practicable. The definition of these two words are very similar, yet different.
Practicable means capable of being done.
Practical means useful.
In my mind, these two words apply to the finished product of your software. It should be useful, and give the user the able to get something done.
Software that is practicable means the user is able to use the software without the frustration of not being able to. We have all had computers long enough now to think of a time when someone was not able to get something done on the computer. Don't let that be your software.
Software that is practical means the user finds it useful. Don't make the user download your software, to only find that it's broken, or requires add-ons, or extra steps. Help them complete the task at hand without detours. Help them solve their problem, that's useful.
Designing your software to meet this criteria would be a winning solution. Who wouldn't want it? Figure out how to make your software more practical, and practicable to the problem at hand. Ask yourself about your software, is it practicable for the task? Is it practical?