I learned a ton about users, and what they need, in the real world, back in the 1980s from Russ Reynolds at Will County Generating Station. He would pull a random worker at the floor of the generating station, explain very carefully that he didn't expect them to be a computer expert, and that I would be responsible if there were any problems... gave them a set of tasks to accomplish, and told me to quietly watch.<p>First day, first time... the user didn't know to press F1 for help... I made sure it was ALWAYS on the screen after that (back in the days of MS-DOS). One time he asked "what happens if we disconnect right now?", the next week and forever after, it was immune to data loss if there was a disconnect.<p>The main thing I learned is that people are doing a job, your software is just a tool, and it should make it as easy as possible for them to keep doing it.<p>Oh... and never have them type data more than once.
I learned how to have indirect impact. I.e. product managers usually have no authority to make people do something. Engineers, Designers, and other specialists don't report to them. However, they need to persuade people to do something. It was very useful example at work, but have no substantial effect on side projects.
I learned everything from Peter Gibbons. The key is to slip in through
the side door to avoid being buttonholed, and to leave 10 minutes early
on Friday, so they can't ask you to come in over the weekend.