Today I was delighted to discover that Jeff Atwood and Joel Spolsky discussed my recorded question on Episode 34 of the Stack Overflow podcast. I now think there should be a Stack Overflow badge for people who have appeared on the podcast, either as questioners or as guests.
Here is my question (without the ums and pauses):
It is often said that the primary role of a software development manager is to insulate developers from the customers, users, executives, and other people involved with the project. However, I have often found that talking to customers and users gives me a lot of useful information that isn't in the specs about what the true requirements and goals of the project are. To what extent should developers interact with customers, users, and other stakeholders?
Jeff and Joel had some good comments. What follows are my own thoughts about the topic.
When I started out as a developer, I was very introverted, content to just sit in my cubicle and interact with the world via e-mail. However, as I acquired more responsibility, I had to start talking to executives. Eventually, I became a development lead, and had to meet with actual customers.
I was terrified, but it was my job, so I did it. It turned out to be a lot easier than I expected. It was even pleasant. It turned out that customers weren't morons who wanted to torture software developers; they just wanted us to deliver software that suited their needs, which is exactly what I wanted too. I looked forward to the customer meetings, which always invigorated me and got me more excited about working on the software.
Based upon that experience, I've encouraged other developers to get involved with people outside the team, and I've often wished my employers would do more to get us out of our offices and into the users' facilities.
Of course, there are costs and risks associated with customer/user interaction. The time you spend with customers and users is time you aren't writing code, so if you do too much you lose productivity. Developers by nature are usually willing to do whatever it takes to solve problems, so there is the risk that a developer will commit to do something that shouldn't be done. If customers get too chummy with developers, they may try to go around management, which is bad for everyone. And finally, some developers have personality disorders that make them unsuitable for outside contact.
But still, I encourage all developers to try to get into positions where they can talk to customers and users. It makes software development a lot more fun.