As somebody who trains lots of aspiring and existing developers one of the things I find myself saying over and over again in classes is that it is okay to ask questions! In my experience many new or junior developers will avoid asking their peers questions but I believe every developer in every team should feel safe, comfortable and encouraged to do so!
I believe this avoidance happens for at least one of the following reasons….
The most common reason is not wanting to be judged as less able or skilled than their colleagues – “perhaps if I ask too many questions people will suspect I don’t know what I’m doing…..” My question is; can you ever ask too many questions? I would always rather that my students ask all the questions that they need to so that they can learn and get things right faster. That way nobody needs to get frustrated spending hours fixing incorrect and ‘buggy’ code, or maybe even risking deploying bugs.
Another common reason for avoiding questions is wanting to tackle a problem alone. This is a perfectly valid reason as everyone should have an opportunity to figure it out for themselves. It’s a great way to learn and solving a challenge by yourself comes with a great sense of achievement, which no developer should be denied. However, nobody should get stuck on a problem for too long. Eventually they will become frustrated with it and lose morale and motivation. ‘Code blindness’ should also be a consideration, and it’s not just a problem for junior developers (see Byron Delpinal’s tweet).
But where is the line? How long is too long on a problem before you should stop and ask for help? In my opinion, there is no single answer to that question. Every problem is different, and therefore how long somebody takes to solve it will be different. However, as a general rule of thumb, I tell my students to give themselves 20 minutes of being completely stuck before asking for help. This doesn’t mean “spend 20 minutes on a problem before giving up”. It simply means that you should spend as long as you need on a problem while you are making progress, but as soon as you completely run out of ideas and have to start Googling questions like “how do I do this thing?” then give yourself 20 minutes of trying to find a solution….and then ask for help.
One way to tackle this is by using an agile methodology and a means of estimating tasks. At times like this, estimation points become vital. After estimating your stories and tasks everyone in the team should have a rough idea how long something should take, so keeping an eye on task length for everyone in your team will help prevent people getting stuck for too long. If you have a scrum master this can be a critical part of their role.
Ultimately however encouraging a good culture of asking questions and seeking the input and collaboration of peers is healthy and beneficial for both the company, the team and the individual. It will create better team relationships and increase productivity in the long run. Much like pair programming, it is an essential part of the development of your team and your own self improvement.