My somewhat simple observation on roles in a tech organization:
- Junior role: Not familiar with the codebase, don’t know who to ask yet, have significant amount of insecurity when asking because still in a phase of proofing thy worth, solving what’s in front of their eye.
- Mid role: start to familiar with the codebase, has general concept on who to ask on stuff, start to realize none knows everything so asking is fine, solving what’s in front of their eye with sufficient past experience that helps to uncover hidden obstacles.
- Senior role: familiar with the codebase, exactly knows that none knows all so has clear picture on who to ask about what and how to phrase the question to effectively get answers / confirmation, solving issue while considering what’s the impact n-months / n-years from now based on history of what’s been done and/or projection of what is coming.
- Managerial role: managing these three kinds of roles to get things done, helping team mate to outgrow the current role, unblocking things that gets in the way so everyone can get their job done, and keeping eye on performance and notice in something is off and what kind of change to the workflow that allow everyone to thrive and grow
The more i think about this, the more i kinda feel this is applicable in any other form of organization tho. It starts with technical skill but overtime it is a blend of savvy technical and working in a team and knowing which position in a team that suits you best; it’s like a team sport.