I manage a team of software developers. I have an employee who is unusually antisocial. It's not just that he's quiet, he won't even nod to you if you pass him in the hall. On the other hand, he is extremely productive. He's been with us for a few years and it's not an exaggeration to say that he does the work of three average developers. We DO NOT WANT to lose him. For the past few weeks he's been unusually snippy with people and seems unhappy. I need to determine if he's distressed about something at work or if there's something outside that has nothing to do with the company.
Changing his quiet behavior is not an option. He is what he is. He would not be pleased if I asked him if he's upset about something wrong outside of work. In fact, he won't be pleased with me talking with him at all, but it has to be done.
Most people are money driven, but I have no reason to believe he's unhappy with his salary. He's well (but not spectacularly) compensated, and due for another review in a few months.
I'm looking for a script I can use to determine if he's ok with his work, and if not, if there's something we can do to change that. A script that doesn't seem too prying. He will not be forthcoming, but I need to push it and determine if there's something we can do to change the situation.