I've typically found it much better to interact with the person you're making the dog food for so that you can get their rapid feedback and know where you either talked past each other, the user realized something new, etc.
Because that's what we do. We solve problems for users. Ideally we solve more problems than we create (jury is still out of that though).
My favorite anecdote was one day walking through the plant and we walked by a lady who was cutting up one of the reports we generate, reordering the lines, gluing them to a piece of paper so that she could photocopy it.
"Did you know that we can do that for you?" we asked. "Really!?"
Half hour later she had her report, sorted properly -- forever.
This was the transition from the Mainframe culture to our more responsive "Mini" culture. She had learned over the years to be content with what she got and make it work.
Interacting with users, AND (big AND) having the power to respond to them can be very fulfilling.
> Most developers don't speak to users
Maybe so, but I really don't believe it's beyond most software engineers today to spend a bit of time talking to users, flicking through (or perhaps answering a handful of) support tickets or dog-fooding the product (if it's B2C). It's 100% given me an appreciation of what actually matters to the users who are part of the target demographic, and what their pain points are. Sometimes that's different to my own idea of what deserves focus; sometimes there's overlap.
At a small company, you often don't have a choice but to wear these hats. I personally think the experience of working with smaller orgs has made me a better engineer in the long run. Larger companies seem to focus on moving engineers further away from end-users and using folks who don't understand the codebase, system architecture or technical specifics of the domain to come up with product requirements.