Ask both open ended questions and specific/targeted questions. Also, keep in mind you want to find ways to improve/mitigate your weaknesses not celebrate your strengths. You should be able to determine who can give you honest feedback and who remain a bit guarded. Keep asking those who can give you the hard feedback periodically, and keep working to have that relationship with the whole team.
Open Ended questions:
Asked anonymously and over a longer period of time (e.g. every 6 months)
- List three things I do well and want me to keep doing
- List three things I don't do so well and want me to change
Asked face to face over a longer period of time (e.g. every 6 months)
- To date (or this month/year) my biggest contribution to the team has been (I don't always ask this
- To date (or this month/year) my biggest mis-step has been
Asked face to face over a longer period of time (e.g. every 6 months)
- If you could change one thing about the team, what would it be?
Targeted questions:
I find that some times the introvert nature of developers shines through and asking open ended questions actually limits the feedback. So I generally try to find 3-4 things I don't think I'm doing well at, and 3-4 things I'm not sure about and 3-4 things I -think- I'm doing well at. I ask people to rate me on a 5 point scale and provide additional details. Sometimes these are things like "Risk taking" or "Listening" sometimes they are things like "How did I handle the estimation meetings?" I almost always ask these anonymously.
In all cases, you must must share the feedback you collect with the team members and talk to them about how you are going to try to work on your weaknesses. Collecting the data and keeping it secret kills the whole process.
hope this helps!