My list of potential mentors has more ideas in it than just my list of actual mentors, so here's both:
- A boss who regretted giving up coding to become a manager
- The most senior/productive engineer on my second project
- Lead Devs that understand delegation (really anyone who
exhibits willness to groom you for success)
As far as broadening your horizons, there are a lot of non-devs who can teach you useful skills. Some of these relationships tend to be shorter but important:
- A boss with enough Agile experience to write a book
- Senior QA and NOC and UX people (your counterparts can teach you about collaboration)
- Senior QA people (test automation, and talking about test automation)
- Senior NOC people (how maintenance concerns and physics should inform software design)
- Multilingual people (grammar, internationalization)
Also look for anti-mentors. Wise men learn from the mistakes of others. If someone insists that certain work doesn't need to be done but the team keeps paying for those decisions, you should take a hard look at that.
I like to teach but my skills aren't that rounded and I'm usually juggling a lot of different things (I have trouble letting the ball drop so I tend to accumulate too many responsibilities.) If some junior person is already asking a lot of good questions I'll tend to scoop them up, because they can often be made into a primary contributor within 18 months with the right encouragements. I don't know how to teach instincts, or even if you can. I still try, and I help people be better, but with many I give up on them ever being good, and instead I focus on finding tasks they can be trusted with. My mentoring experiences are probably all cases of "when the student is ready, the teacher appears", both giving and receiving.
- A boss who regretted giving up coding to become a manager
- The most senior/productive engineer on my second project
- Lead Devs that understand delegation (really anyone who exhibits willness to groom you for success)
As far as broadening your horizons, there are a lot of non-devs who can teach you useful skills. Some of these relationships tend to be shorter but important:
- A boss with enough Agile experience to write a book
- Senior QA and NOC and UX people (your counterparts can teach you about collaboration)
- Senior QA people (test automation, and talking about test automation)
- Senior NOC people (how maintenance concerns and physics should inform software design)
- Multilingual people (grammar, internationalization)
Also look for anti-mentors. Wise men learn from the mistakes of others. If someone insists that certain work doesn't need to be done but the team keeps paying for those decisions, you should take a hard look at that.
I like to teach but my skills aren't that rounded and I'm usually juggling a lot of different things (I have trouble letting the ball drop so I tend to accumulate too many responsibilities.) If some junior person is already asking a lot of good questions I'll tend to scoop them up, because they can often be made into a primary contributor within 18 months with the right encouragements. I don't know how to teach instincts, or even if you can. I still try, and I help people be better, but with many I give up on them ever being good, and instead I focus on finding tasks they can be trusted with. My mentoring experiences are probably all cases of "when the student is ready, the teacher appears", both giving and receiving.