I've heard Alex, Rahul, and other engineers within Taro talk about handholding when joining a new company for all engineers and for newer engineers in general.
What does it mean that an engineer doesn't require handholding anymore? Does this mean the frequency of the questions gets diminished or is it more about needing as much initial help to start tasks or something else entirely?
In a nutshell, not requiring handholding anymore means that you aren't asking extremely basic questions.
The most basic question, especially among onboarding engineers and especially among junior onboarding engineers is some variant of: "I have no idea what's going on, can you please explain the codebase to me?"
Of course, you should ask these questions when you're starting off on a team (and don't be afraid to pair program to really dig deep here), but if you're still asking questions like these 2-3 months after you start at the company, that's a red flag somewhere. It either means:
Pair programming is also inherently unsustainable as it sucks up multiple engineers' time. You should do a ton of it in your first month at the company, but it should taper off a lot after that. If you still need to do it regularly 2-3 months after being at the company, that's also a bad sign.
Does this mean the frequency of the questions gets diminished...
It generally does, but I want to clarify for everyone reading this that this doesn't mean that you should ask less questions over time or that in order to count as a high-performer, you ask very few questions. What's more important is the quality of the questions. As long as the question quality and depth is improving, that's a great sign - Some engineers even ask more questions over time, especially more senior ones, as they increase their scope.
Here's a classic example of how the questions of a junior engineer will evolve:
When a junior engineer starts asking me more of the "After" question, it's clear sign to me that they're progressing to mid-level (and I'm then very proud of them!).
Alex gave a thorough answer, but I’ll give my interpretation: You ask better questions, and you understand the answers.
Handholding is when you ask a not very good question, have to be led to the correct question to be asking through a lot of follow-ups, then are given an answer but you don’t understand it, so have to be shown in great detail. Even then, you can’t synthesize how to use this to get further unblocked.
Once you’re past handholding, you ask better questions, and when you get an answer you can apply it yourself and get unblocked. It is easy to help you, because your question has all of the context, and when an answer is given that can be the end of the interaction.
This extends to things like tasks assigned to you. Do you figure out 90% of it yourself, then ask a lead or PM to clarify the last 10% that’s actually ambiguous? Great. If you figure out 10% and ask a lot of questions that would easily be answered reading the PRD, or you’re asking the wrong people, that’s bad.
This is generally used as one of the distinguishing factors between SDE-I and II. Are you generally independent? Can you answer basic questions from others accurately? Do you deliver things self-sufficiently?
Another way to think about it is how much you “give” versus how much you “take”. It doesn’t mean SDE-Is don’t deliver value, but almost all interactions with others are getting help, and needing others to give to them. I think there’s a tipping point where your questions start elucidating things for others, you’re helping as much as needing help, and so on.