Live data from Hacker News

Ask HN: Strategies for mentoring junior developers?

news.ycombinator.com

31–40 of 74 posts

Re: Ask HN: Strategies for mentoring junior developers?

#31
post #4
post #2

Pair programming for sure. Senior designs the code, junior writes it. Senior doesn't touch keyboard. It's real time code reviewing. The senior's time is rarely wasted. They can always do time consuming high level work like designing test cases, planning out the next part of the work, seeing if the API supports stuff.

Your company has to have the right culture for this. Companies like this are rare. Most just assign whatever's in the queue to whomever's going to take it, meaning that everyone has "something" to do at all times.

I think the critical aspect here is the management system.

Pair programming makes total sense when tasks are owned by the team. In that case it's in everyone's interest to improve the team's overall velocity. That means time spent mentoring juniors or working together on tasks is well spent.

When tasks are owned by individuals, it's in everyone's interest to increase their own velocity which means maximizing time spent working on their own tasks. People are disincentivized from helping other people complete their work or mentoring them, because that directly reduces your personal velocity.

Re: Ask HN: Strategies for mentoring junior developers?

#32

Earlier quoted context omitted.

As somone who started the same day as another junior developer in my first job, I second this. Just having someone who's also junior who you don't feel any shame about asking stupid questions to is killer. You shouldn't feel any shame either way, but that's sort of one of the things you learn transitioning out of a junior role.

Would you able to divulge the name of the company?

There's not really any value. This was many years ago, and the company has changed a lot. It also isn't a company many people have heard of.

Re: Ask HN: Strategies for mentoring junior developers?

#34
Don't write code. Break down a feature into tasks that you would take 30 mins or less to accomplish. Have them build each task one by one. If they take longer than 1 hour, you know that they are stuck on something so you can go help them. While they are working on 1 task, you are figuring out the next 2 tasks. Your job becomes quick prototyping to make sure the tasks are feasible.

Eventually, after many small merge requests, junior developers will be comfortable to take up entire features. After a few features, you teach them how to break down tasks for other junior devs, just like what you were doing before.

We have been actively following this method for the past 2 years and have taught engineers with 0 coding background all the way to become tech leads in our org.

Re: Ask HN: Strategies for mentoring junior developers?

#35
post #12

One of the best ways I found is to hire in pairs. Don't just hire one junior (or entry level) at a time. Hire two or more at once so they can help each other learn your stack. At the university I work at, this is how we handle it. We hire a lot of students to help develop our application. These students are far from entry level when we hire them. Most have taken maybe one CS class at the university level. It takes a…

What you describe here is the core essence of the Montessori teaching method: https://en.m.wikipedia.org/wiki/Montessori_education

Very interesting to see this applied at a university level!

Re: Ask HN: Strategies for mentoring junior developers?

#36
post #2

Pair programming for sure. Senior designs the code, junior writes it. Senior doesn't touch keyboard. It's real time code reviewing. The senior's time is rarely wasted. They can always do time consuming high level work like designing test cases, planning out the next part of the work, seeing if the API supports stuff.

I would leave, if someone made me do pair programming.

Re: Ask HN: Strategies for mentoring junior developers?

#37
My company has put a lot of effort into helping junior developers get a really good start to their careers. To a certain extent, you have to structure your work to enable this. I'd suggest seeing the support as a wider thing than just the activity of mentoring.

I wrote some notes:

https://www.haplo-services.com/blog/2017/working-with-early-...

Re: Ask HN: Strategies for mentoring junior developers?

#38
post #33

Out of curiosity, how many years of experience categorize a developer as "junior"?

I don't think it's about years of experience -- someone who does the bare minimum for five years and never provides input could very well still be categorized as "junior"

Re: Ask HN: Strategies for mentoring junior developers?

#39
I think probably one of the most valuable things you can do with your junior developers is to set expectations around how to ask good questions. Your goal is to help juniors strike the right balance between spending time figuring something out on their own versus spending too much time and going way off track. You also don't want your juniors to ask too many questions that they should have first spent some time investigating on their own.

There's a good link on this: How to Ask Good Questions (https://news.ycombinator.com/item?id=13293301)

Other than that, I think having a junior shadow you while you debug a bug or help them debug one of theirs while explaining each step you are doing is also very helpful.

Something else that's pretty good is to give juniors a shining example of a high quality SPIKE task on a new technology or design consideration. You want them to learn by example.

And here are some other links that I've found personally helpful: https://softwareengineering.stackexchange.com/questions/1383...

For you:

Ask HN: How to manage developers who "aren't very good" (because let's be honest, we've all had this sentiment before whether or not the developers were actually bad or not) https://news.ycombinator.com/item?id=9008845

For your juniors, to give them something to aspire to:

On Being a Mature Engineer https://www.kitchensoap.com/2012/10/25/on-being-a-senior-eng...

Ask HN: How to Be a Good Technical Lead? https://news.ycombinator.com/item?id=10395046

Re: Ask HN: Strategies for mentoring junior developers?

#40
Junior developers and newbie in general have one incredible quality: they don’t know and they are not supposed to. You absolutely want to tell them that their role is to criticise and occasionally write the documentation. Start from things that are obvious and leverage their question: anything they ask, tell them it’s now their role to document it. How the business makes money, what that metric means, what is TDD, what happens with this fails, whether the company actually ships bug-free code.

One pattern that I use:

- pair program initially; I would do that even for principal, just to be familiar with the code base, but for probably one or two days, after that, they should be autonomous; for very junior developers, a week make more sense, but rarely more;

- gradually replace that with code review, but more than once a day for more junior people; ask them kindly to commit; make sure to point out one or two issues in each very small PR: linting, method naming convention, then testing patterns, structure, etc.

- have scheduled 30 minutes 1:1 meetings, preferably thrice or twice a week; make sure there is something nice at some of those: ice cream, walk out if it’s sunny, and have that meeting have four very explicit parts: what they have done, what blocked them; what they have learned; what they have taught (or documented). The last one is often overlooked but it’s very important for them to realise that they start owning some code, that they should think not of they direct impact but how to empower people. React to blockages by offering solutions, both from them and from you: they need to learn to unblock and that’s how you do it. Move that meeting to once a week for senior developer, once a fortnight for principals.

Post reply on HN