It is my belief, based on previous experience, that every software developer should at some point in time have to watch someone who is new to your software, actually use your software for the first time. If software is truly simple, and very usable, then it should be pretty obvious to even the most novice of users, and they shouldn't need a manual. Moreover, things that would make someone's life very easy seem to become crystal clear as you watch the struggle to do something, and watch them try to do something the way they think it ought to work.
Today I had a similar experience to this (although not with software that I wrote), when my girlfriend started using Twitter today. She was trying to send me an @ reply, but kept sending them as direct messages, and wanted to know how I was sending the replies so they showed up in my micro log. We went back and forth in various emails, when finally I said this:
OK... in the box where it says "What are you doing?", you can type something like "@NickSchweitzer You are a twit" without the quotes, and it will then show up in my private twitter area, and also be visible to people in your twitter log.
Then she replied with this:
that's silly!
it's asking me what I'm doing but I want to message someone else? that's not what I'm doing!
I read that and sat back in my chair for a minute, and then went to the Twitter site, and then looked at how the twitter badge displays my micro log starting with the phrase "what am I doing...". "Damn, she's absolutely right." And the funny thing is, the Twitter home page has an incredibly simple layout which on the surface just screams "easy to use and understand". And yet, just by the simple phrasing of a label, they completely mislead their users so as to not understand how to use their application.
Making something simple really is much harder than it looks.