When junior developers ask me for help solving a problem I like to say “Do you want the fish or the fishing pole?” This is a take on the old saying “Teach a man to fish and you feed him for a day…”, just posed as a question. Unless it’s a pressing situation and the answer is needed immediately, like during a Production Incident, I’ll usually give the person an option to receive the answer or a hint so that they can figure it out for themselves. What they choose tells me something about them and will influence the way I answer going forward and how much energy I’ll invest in coaching them.
Accepting the answer, the fish, is the easy way out and tells me something about the individual. Of course it’s not fair to judge someone on one decision or interaction, but if they repeatedly make the same choice it tells me they aren’t really interested in doing the work required to become a better engineer, or they lack curiosity, either way I won’t invest extra time. That’s not to say I’ll ever refuse to help them, we’re all working for the same company, on the same team so to speak; I’m just not going out of my way to coach them.
The hint option, aka the fishing pole, is information that will give them the context needed to figure out the rest on their own. It could be the name of a class, a place to set a breakpoint, whiteboarding a bit, or some new terminology that they should research. The idea is to give them direction while allowing them to develop the skills needed to solve problems on their own in the future.
Here’s a real example from a couple of years ago. We had staffed a project with a bunch of junior developers. They were given requirements for a new feature and allowed to self-organize and design their own solution. About one week into the project I decided to check up on one of the devs who had rotated through my team. At the time he was whiteboarding with another dev on the project. I sat back and watched the discussion. Eventually they got to a point where they were a little stumped. The project was very similar to something I had worked on years earlier; so they asked for help and I gave them the choice, fish or fishing pole.
The dev who had not been on my team wanted the answer, the other knew what I was up to. The project had a generous buffer built into the timeline, given that it was staffed with all junior devs. So I looked at them both and said “Are you sure? You have weeks to figure this out, to try things, and to research. Do you really want to take the shortcut now?” I got two different answers :-) Ultimately I did them both a favor and only gave them a hint. The project was a success, finished early (even without taking shortcuts), and they both thanked me later.
Researching, debugging, trying and failing a few times on their own may take more time than just giving them the answer, but it will pay dividends in the long run. If they show a desire to learn, then give them the fishing pole, not the fish.