We can start by following some simple guidelines. Too Much We should not assume too much about our users, beyond that they will have some desire to use the program. If the program is, say, a word processor, then the user will have an expectation that the word processor will provide certain functionality. Beyond that, the situation becomes murky. However, many users find Word completely inadequate for their needs.
Technical writers find it too limiting in both text-entry and layout capabilities.
As programmers we have to be aware that writers have different preferences, writing styles, and even character sets. Because of that fact, we should allow them to dictate how and where they interact with the program. Too many modern GUIs focus on whiz-bang graphics rather than user needs. But here as in so much else, less is more. Imagine if all hammers were neon green in color and made yodeling noises whenever they struck a nail.