Yes, because it's a great experience and we both come out of it as better programmers. Teaching and guiding someone is a very humbling experience and seeing the results of ones advice is heartwarming.
No, because if we're talking about doing this during company hours, as a Senior I have tight deadlines on projects that only I can complete, and spending time mentoring is time that could've been taken to ease the pressure of ongoing projects.
Mentoring a Junior is a company investment with payoff being several months to a year down the line, and not every company can afford it. On the other hand, if handled well it's a worthwhile venture. It helps if the mentoring is spread across multiple developers, but a lot of the mentoring difficulty is going to depend on the non-technical skills of the Junior: Their attention to detail, ability to take notes and their tenacity while researching and debugging.
So, in conclusion, it's a mixed bag, depending on the circumstances - if we're talking about company time.
In my free time, online, I do enjoy giving advice and pointers to people learning programming. I've written a beginners course in my native language and made it available on Github, and at any given time I'm guiding a few people through it. Honestly, this version of mentoring I find more fulfilling, as it involves people getting better at programming in their own time, which often means they're self-motivated to a much greater extent than somebody at an intern position.
I have worked for 3+ years at a company that values mentoring a lot. In fact, mentoring is an actual expectation starting at senior level and going up. They're an industry leader and push a lot of innovation, thus this incentive might seem obvious.
But, to be really honest, all, and I mean ALL, companies should do it. And it can be done effectively without the need of a lot of hours. I had a mentor/sponsor for two years, as I was an already senior consultant but new to their culture I really needed some help, and it DID help me a lot. And we met for 1h every two weeks. That's 2h per month. That's why I think any company can spare this, it's just 2h. We would still exchange some e-mails, have chat at the water cooler, but all of these would be either really small or on personal breaks (lunch, etc).
I'm going to go out on a limb here and say that just 1h every two weeks is probably not the norm.
I am inclined to agree that all companies should do it, and I think that 2h a month is not a problem for any company. And that's probably ok for somebody with some seniority, but for a true Junior (think, 1-2 years of code-camps, or a fresh CS grad) a more realistic number is 1-2h per day. And those kinds of hours add up.
I totally agree with you! Junior people would require more face time, and they do get that there. But it's mostly as work-as-usual approach. Pairing (for starters and as a constant for all the team) and a close contact with the team leadership (PM and tech lead) which should both have frequent catchups to provide feedback and mentorship.
For instance, this experience I mentioned was when I was playing the tech lead role, so I would have a 1h catchup with everyone on the team once a month, and sometimes twice a month, where I would present my expectations for them and assist them on their journey. Also, they would have a more frequent meeting with their mentors (usually 1h per week).
My point is, which is what I've learned after 2 years of playing a leadership role, is that what really matters is the people. If I'm a senior/leader on a team I should pay attention to the people and do my best to support them 100% of my time. Be that through one-on-ones, pairing, code review, 30 min talks about interesting code, etc. And it's always for the benefit of the company, even if they don't think so (in which case I would still do it and then present the results later).
Sounds like we're on the same page then! I agree about people mattering, and it's really the tougher part of the job, especially for someone coming from a purely technical background.
For further actions, you may consider blocking this person and/or reporting abuse
We're a place where coders share, stay up-to-date and grow their careers.
Yes and no.
Yes, because it's a great experience and we both come out of it as better programmers. Teaching and guiding someone is a very humbling experience and seeing the results of ones advice is heartwarming.
No, because if we're talking about doing this during company hours, as a Senior I have tight deadlines on projects that only I can complete, and spending time mentoring is time that could've been taken to ease the pressure of ongoing projects.
Mentoring a Junior is a company investment with payoff being several months to a year down the line, and not every company can afford it. On the other hand, if handled well it's a worthwhile venture. It helps if the mentoring is spread across multiple developers, but a lot of the mentoring difficulty is going to depend on the non-technical skills of the Junior: Their attention to detail, ability to take notes and their tenacity while researching and debugging.
So, in conclusion, it's a mixed bag, depending on the circumstances - if we're talking about company time.
In my free time, online, I do enjoy giving advice and pointers to people learning programming. I've written a beginners course in my native language and made it available on Github, and at any given time I'm guiding a few people through it. Honestly, this version of mentoring I find more fulfilling, as it involves people getting better at programming in their own time, which often means they're self-motivated to a much greater extent than somebody at an intern position.
I have worked for 3+ years at a company that values mentoring a lot. In fact, mentoring is an actual expectation starting at senior level and going up. They're an industry leader and push a lot of innovation, thus this incentive might seem obvious.
But, to be really honest, all, and I mean ALL, companies should do it. And it can be done effectively without the need of a lot of hours. I had a mentor/sponsor for two years, as I was an already senior consultant but new to their culture I really needed some help, and it DID help me a lot. And we met for 1h every two weeks. That's 2h per month. That's why I think any company can spare this, it's just 2h. We would still exchange some e-mails, have chat at the water cooler, but all of these would be either really small or on personal breaks (lunch, etc).
I'm going to go out on a limb here and say that just 1h every two weeks is probably not the norm.
I am inclined to agree that all companies should do it, and I think that 2h a month is not a problem for any company. And that's probably ok for somebody with some seniority, but for a true Junior (think, 1-2 years of code-camps, or a fresh CS grad) a more realistic number is 1-2h per day. And those kinds of hours add up.
I totally agree with you! Junior people would require more face time, and they do get that there. But it's mostly as work-as-usual approach. Pairing (for starters and as a constant for all the team) and a close contact with the team leadership (PM and tech lead) which should both have frequent catchups to provide feedback and mentorship.
For instance, this experience I mentioned was when I was playing the tech lead role, so I would have a 1h catchup with everyone on the team once a month, and sometimes twice a month, where I would present my expectations for them and assist them on their journey. Also, they would have a more frequent meeting with their mentors (usually 1h per week).
My point is, which is what I've learned after 2 years of playing a leadership role, is that what really matters is the people. If I'm a senior/leader on a team I should pay attention to the people and do my best to support them 100% of my time. Be that through one-on-ones, pairing, code review, 30 min talks about interesting code, etc. And it's always for the benefit of the company, even if they don't think so (in which case I would still do it and then present the results later).
Sounds like we're on the same page then! I agree about people mattering, and it's really the tougher part of the job, especially for someone coming from a purely technical background.