Do you have any tips, or would you like to share your process? For example, do you start with a problem you have solved and add to it? Or do original ideas just pop into your head when you concentrate, and you put those together and you have a problem? I'm helping my team prepare a contest on another platform, probably contributing problems of Div2C or Div2D level (it's the extent my abilities allow).
Also, do you prefer problems that are based on concepts, or more on thinking and reasoning? Personally I prefer a mix (but mostly thinking problems). These thinking problems are also the hardest to come up with, it seems. Am I right in believing that they can only come from a flash of insight (or discussion with peers)?
Finally, do you have any topics, concepts, theories etc. that you think are underrepresented or would be interesting in the context of a programming problem?
In terms of general problemsetting advice, what I know is brevity and clarity are well worth the effort.
Thanks for spending your time on this open-ended question.
http://mirror.codeforces.com/blog/entry/22824