Last summer I went back to Madison, and part of the trip was a tour of the Computer Science building, where I had been a graduate student many years ago. The building had changed in many ways, and in others, not at all.
1. The outside was exactly the same.
2. The mainframes were gone, replaced by labs of personal computers.
3. The basement was divided up in a totally different way than it was before. The two rooms I spent most of my time in were gone.
4. And most important, the most exciting idea -- there's now a computer store in the front of the building.
I was excited because I assumed that this meant that computer science students were actually meeting users, and learning how they think. But no, they staff the store with employees, just like any other store. My guide looked at me with what I imagined was puzzlement. Why would they want their students to work with users.
Me, I'm always thinking about users, what I can and can't get them to do. What I can get away with, and how can I make them tell other people about my software, and even better, get them to get others to use it. ;-)
There are frustrations, both ways. But if you see software development as a performing art, as I do, inevitably you're going to be judged by them. They will determine your success or failure.
And over the years, I've found this is the hardest point to make to the developers I work with.