I was hesitant whether I should post this on programmers instead, but I think that this problem is generally applicable.
We have a junior team member (about two years with the company) who keeps assigning himself to big, tricky tasks that would have been more suited for a more senior developer. Since anyone is allowed to pick any item from the backlog, it is difficult to avoid this.
It is of course good that he is ambitious, but when he gets stuck he gets desperate. Instead of taking a step back and consider why things don't work, he often ends up going way too far down the wrong path. Then he starts bombarding other developers with questions that we often cannot answer because he doesn't give the context.
Given that I want us to work as efficiently as possible as a team, I have tried a couple of different solutions:
- Tell him exactly what to do. Consumes a lot of time for me and in the end he might not even understand his own solution.
- Give hints instead of specific answers. Sometimes this is successful, but sometimes he just ends up down the wrong path even further, especially if I don't understand the problem completely.
- Pair programming. He was quite reluctant to the idea, and when we tried it didn't work that well. He didn't take command, he just waited for me to tell him what to write.
- Right out tell him not to take a particular task. It's worked once or twice, but required a little white lie of why he shouldn't take that task. I don't feel I have the authority to forbid him from working on some tasks.
Update: Thanks for all the answers. Hopefully they will continue to be useful for future visitors. As for my story...
I brought it up with my manager (who had already observed the behavior) and suggested that we try to involve ourselves earlier and try to make sure that he splits too big tasks into smaller parts. My manager was more in the line that he should outright tell him not to take on difficult tasks. I'm not entirely happy, but we will see.