No matter how little you expect users to understand about your product, they will understand even lessI could replace "understand" with "know" or "care", for that matter.
This has been fairly obvious when it comes to end users and software authors; cue horror stories of floppies stapled to letters or copied onto A4 paper, and old jokes about cup-holders and power outages.
It's less obvious, but I suspect equally true, whenever one programmer's code is used by another - either as peers co-coding a project, or one software vendor using code objects (or APIs) created by another software vendor. Those cases also involve a "user" (the coder using the API or object) and "producer" (the author of the API or object).
For example, after spending months developing an ActiveX control for use by other programmers, you may think it reasonable to expect them to read your ReadMe.txt that contains caveats such as "parameter values must be in range". But someone who is using hundreds of such re-useable code objects in a project may assume how they work without reading any of those ReadMe.txt files.
A good test of acceptable expectations is: "What if everyone did what I'm about to do?"
This is also a good bulwark against badly-behaved software. What if all installed applications:
- Required admin rights to run?
- Kept pestering the user to "register"?
- Added themselves to the top of the Start Menu?
- Added themselves to the startup axis to "fast start"?
- Added their own ad-hoc systems to pull down updates?
- Added their own underfootware content indexing system?
- Patched into the shell to process file content whenever files are listed?
- Smashed file associations to just one "open" action for their own application?