Making it Harder for Users to Make Mistakes
Last updated:A thought has just occurred to me. A bunch of code can afford not to be written if you make it harder for users to make mistakes.
For example: it is obvious that, if you want to create a UI to enable users to add elements to a group, you will only want to display elements that are not already in that group. It seems rather obvious but this may be one of those things that aren't obvious at all until someone (hope it's not your user) points it out to you.
Now, if you don't notice this at the time you're writing the code, you might actually write all kinds of error-checking mechanisms to prevent a user from adding elements to a group when they're already there. Lots of code, error messages(with localization), exceptions, all for nothing; after all, you can just prevent that if you show only the elements that were not added yet (i.e., change the criteria for the data you'll fetch in the controller).
I think this is some sort of argument for rapid prototyping whatever code you write. If you show it to people (preferably in the form of an UI), they can point out to you such things and save you a lot of unnecessary work.