End-User Programming is where regular end users, i.e. non-programmers, are able to customize a program, or create a new one, with minimal training or instruction.
App Inventor for Android is one recent example, but perhaps the most popular example of end-user programming is the spreadsheet.
What examples of end-user programming have you seen used, or believe to be useful? What's the philosophy of the system? What challenges remain?