My question is when should I reach out to help someone. If someone new joins, and if it is clear that task might be difficult for person, or there is some context needed etc, and they fail to ask, should you help them? Reaching out early and helping might be hampering their own learning, also at risk of hurting someone's ego. But If I am in other person's shoes, I would appreciate all help so what is right balance here?
Also, should you helping be more visible or private? If it is public, other people can add extra context as they like, but maybe in private conversations, person can ask more follow up question, assuming they are afraid to ask dumb questions. To be more specifically, by public I mean team channel in slack and private would one-one chat.
I would suggest going and helping that person in private proactively.
Many people are not comfortable asking others due to their backgrounds and experiences. Don't hold this habit against them.
Go to them with a mood of care, collaboration, and respect. Don't worry about hurting the ego.
Build a connection with them and give them the confidence to ask you when they need help in private or public.
Start privately and show them why asking in the team channel can get them answers quickly from others, and also help other engineers as well.
Your kindness might change the life of this engineer and set them up for a great career.
As a general rule, you should always criticise privately and praise publicly. While you might not see offering help as "criticising" it's still better to assume that they'll take it negatively, particularly when they're still new and therefore getting the lay of the land and learning everyone's personalities/the team culture.
Tone also matters a lot here. Try and come across casually, blamelessly, and positively.