This is also why the most useful programs for a given domain are written by people who are from that domain and wrote the program for themselves. They may not be the best quality programs, as the person writing is typically does programming as a side item, but they almost defiantly cover the use cases they had in mind.