LUNAROPS · OPERATIONAL UPLINK 100% UPTIME 1,247d POSTS 893 JEFF.MOON@LUNAROPS.DEV UTC --:--:--

Mentoring Junior Engineers: What Actually Helps vs. What Feels Like Helping

careermentoringengineeringleadershipsoft-skillsteam-culture

Most engineers who mentor juniors are doing it without training, without a framework, and often without fully understanding what they’re actually trying to accomplish. They default to what was done to them — a mix of code review comments, “let me show you,” and occasionally overwhelming a new hire with the entire codebase at once.

Some of that works. A lot of it doesn’t. And the gap between “feels like helping” and “actually helps” is worth understanding, because bad mentoring doesn’t just waste time — it can actively slow someone down, erode their confidence, or teach them exactly the wrong lessons.

This guide is for engineers who want to mentor well. It covers the traps, the techniques, and the mindsets that separate effective mentors from people who just sit next to a junior engineer and type at them.


What Mentoring Is Actually For

Before getting into tactics, it’s worth being clear about the goal. Mentoring a junior engineer is not about:

  • Making sure the code they write looks exactly like yours
  • Having someone to delegate boring tasks to
  • Teaching them everything you know as fast as possible
  • Feeling helpful

Mentoring is about accelerating someone’s growth as an engineer — their ability to solve problems independently, make good decisions under uncertainty, communicate effectively, and build things that work. The endpoint you’re aiming for is a colleague who doesn’t need you, not one who depends on you.

That framing matters because it changes what you optimize for. If your goal is that their code looks like yours, you’ll over-review and under-explain. If your goal is that they grow into independence, you’ll invest in their process rather than their output.


The Core Trap: Solving Problems Instead of Teaching Problem-Solving

The most common and most damaging mistake in mentoring is jumping to solutions.

Junior engineer: “I can’t figure out why this query is slow.” Mentor: looks at screen for 15 seconds “Oh, you’re missing an index on user_id. Add this.”

What just happened? The mentor solved the problem, the junior got a fix, and no learning occurred. Five days later, the same junior has another slow query and needs the same help.

The alternative:

Junior engineer: “I can’t figure out why this query is slow.” Mentor: “What have you checked so far?” Junior: “I looked at the query itself but I’m not sure what to look for.” Mentor: “What tools do we have for understanding what the database is actually doing when it runs a query?” Junior: “I think there’s an EXPLAIN command?” Mentor: “Exactly. Try that and tell me what you see.”

This takes longer in the moment. It doesn’t take longer over the course of a month. After a few rounds of this, the junior reaches for EXPLAIN automatically. After a few more, they can interpret the output themselves. After a few more, they’re teaching other people.

The question that unlocks this pattern: “What have you tried?” Ask it every time. It does several things simultaneously:

  • Gives you information about where they’re stuck
  • Signals that you expect them to try before asking
  • Often causes them to figure it out while explaining

The Socratic Method, Applied to Engineering

The Socratic method — leading someone to understanding through questions rather than direct answers — sounds academic but is genuinely the most effective teaching technique in most mentoring scenarios.

The key is asking questions you know the answer to in order to help them discover the answer, not asking questions you genuinely don’t know (which wastes everyone’s time) and not asking rhetorical questions that telegraph the answer (“wouldn’t it make more sense to use a map here?”).

Good Socratic questions in engineering mentoring:

  • “Walk me through your mental model of what this code does.”
  • “What assumptions is this code making about its inputs?”
  • “If this function returns an error, what does the caller do?”
  • “What would happen if two requests came in at the same time?”
  • “How would you test this?”
  • “What’s the simplest thing that could possibly work here?”
  • “What would you need to know to be confident in this decision?”

The goal is to help them build the thinking process, not to have them arrive at your specific answer. Sometimes the questions will reveal that their approach is actually better than what you had in mind.

When to Stop Asking and Just Explain

The Socratic approach breaks down when:

  1. They’re genuinely missing a foundational concept and no amount of questions will lead them there
  2. They’ve been stuck on something for too long and the accumulated frustration is costing more than the learning value
  3. The question is genuinely ambiguous and the answer depends on context you hold

In those cases, explain clearly and directly. There’s no virtue in withholding knowledge that someone simply doesn’t have yet. The trick is calibrating when you’re in that situation versus when you’re just impatient.


Calibrating to Their Actual Level

A common mentoring failure is pitching explanations at the wrong level — either condescending by explaining things they already know, or overwhelming by assuming background they don’t have.

The calibration problem is tricky because junior engineers vary enormously. A bootcamp grad six months out of school and a PhD candidate with five years of research experience can both have the title “junior engineer” and need completely different things.

The Initial Assessment

In the first few weeks, run a lightweight assessment:

  • Ask them to walk you through a piece of code they’ve written — their explanation reveals their mental model
  • Ask them how they’d approach a small design problem — notice whether they think about edge cases, performance, or maintainability
  • Look at their commit messages and comments — communication style is a strong signal
  • Ask them what they find confusing or uncertain — self-awareness is itself a diagnostic

You’re not grading them. You’re calibrating what level of context to include when you explain things, and what skills to prioritize building.

The Zone of Proximal Development

Lev Vygotsky’s concept of the “zone of proximal development” (ZPD) applies directly to engineering mentoring: the most effective learning happens at the edge of someone’s current capability — tasks that are hard enough to require real effort but achievable with guidance.

Too easy: they check out, get bored, don’t grow. Too hard: they get stuck, frustrated, feel incompetent, need rescue constantly. In the zone: genuine effort, productive struggle, visible progress.

Your job as a mentor is to push them toward the edge of their ZPD with appropriate scaffolding. That means:

  • Assigning work slightly beyond their comfort zone
  • Being available when they hit blockers, but not hovering
  • Removing obstacles that are genuinely in the way (access, context, ambiguous requirements) while leaving the interesting technical challenges to them

Effective Code Review

Code review is one of the primary mentoring surfaces, and most engineers do it in ways that create anxiety rather than learning.

What Doesn’t Help

Comments without explanation:

“This is wrong.”

Snarky or condescending tone:

“Why would you even do this?”

Nitpicking style while ignoring substance: Spending ten comments on formatting while missing an actual bug teaches junior engineers to optimize for looking clean rather than being correct.

Overwhelming volume: A PR with 40 comments on a junior’s first major feature is demoralizing regardless of how valid each comment is.

Vague praise:

“Looks good!”

This teaches nothing. If a PR is good, say what specifically is good and why — that reinforces the right choices.

What Does Help

Explain the why, not just the what:

Instead of:

“Use Map here instead of an object.”

Try:

“Consider Map here — when keys are dynamic and not known at compile time, Map has better semantics (no prototype chain to worry about) and slightly better performance for frequent insertions/lookups. See MDN for the full comparison.”

Distinguish between preferences and requirements:

Use prefixes to signal severity:

  • nit: — minor style preference, take it or leave it
  • suggestion: — worth considering but not blocking
  • question: — genuinely asking, not implying they’re wrong
  • blocker: — must fix before merge
  • FYI: — sharing knowledge, no action needed

Ask questions instead of making statements (when appropriate):

Instead of:

“This will cause a race condition.”

Try:

“What happens if two requests call this simultaneously? Could there be a race condition here?”

Acknowledge good work explicitly:

If they handled a tricky edge case well, or wrote particularly clear error handling, say so specifically. Positive feedback with specificity is as valuable as corrective feedback.

Limit scope:

Pick the most important 3–5 issues in a PR and note the rest as nits. Don’t demand perfection from the first draft. Perfection is for the second draft.


The 1:1 Meeting

If you have a formal mentoring relationship, regular 1:1s are where the most important work happens — not in Slack, not in code review, but in dedicated time focused on them.

Structure That Works

A 1:1 is not a status meeting. You don’t need to know what they worked on this week — you can see that in commits. The 1:1 is for:

  • Things they’re uncertain about
  • Frustrations that are slowing them down
  • Skills they want to develop
  • Feedback in both directions
  • Longer-term goals and progress toward them

A simple agenda:

  1. What’s going well? (2–3 min) — Starts positive, gives you signal on what to reinforce.
  2. What’s frustrating or blocking you? (5–10 min) — The most important question.
  3. What do you want to work on in the next two weeks? (5 min) — Creates focus and accountability without micromanagement.
  4. Feedback for me? (2–3 min) — Models the behavior you want, and you’ll actually learn things.

Asking for Feedback on Your Mentoring

Most mentors don’t ask. Asking “how is the mentoring going?” feels awkward, but it’s essential. Try more specific questions:

  • “Is the amount of guidance I’m giving about right, too much, or too little?”
  • “When you get stuck, do you feel comfortable reaching out, or does it feel like an interruption?”
  • “Is there anything I explain that still feels unclear after we talk about it?”

You won’t always get honest answers immediately — psychological safety builds over time. But asking consistently signals that the relationship is a two-way street.


Common Failure Modes

The Rescuer

This mentor jumps in at the first sign of struggle. The junior has been stuck for 20 minutes? The mentor takes the keyboard. The result: a junior who learns that frustration is a signal to stop trying, not to try differently.

Fix: Agree on a “stuck threshold” — 30–45 minutes of genuine effort on something before asking for help is a reasonable default. When they do ask, start with questions, not solutions.

The Hoarder

This mentor says things like “I’ll take that ticket, it’s too complicated for you right now” indefinitely. They protect the junior from hard problems while simultaneously wondering why the junior isn’t growing.

Fix: Assign the hard ticket. Provide scaffolding — a design conversation beforehand, check-ins at key milestones — but let them do the work.

The Absent Mentor

This mentor is technically available but never actually present. They’re too busy, respond to questions a day later, and cancel 1:1s when anything comes up.

Fix: Either prioritize the mentoring relationship or be honest that you can’t mentor right now. A mentor who’s unreachable is worse than no mentor — it teaches the junior that they’re not worth time, and they develop bad habits from the absence of feedback.

The Perfectionist

Every PR becomes an extended negotiation. The mentor rewrites large chunks of “correct” code because it’s not quite what they would have written. The junior learns to be defensive rather than curious.

Fix: Accept code that works and is maintainable even if it’s not what you would have written. Your idioms are not the only valid idioms. Save the detailed aesthetic feedback for architectural decisions that actually matter long-term.

The Underprepared Mentor

This mentor wings every interaction. No 1:1 agenda, no context on what the junior is working on, no continuity between conversations.

Fix: Spend 5 minutes before each 1:1 reviewing what the junior has been working on and noting anything worth discussing. Keep a shared doc with notes from each session — both of you should be able to see the arc of development over months.


Building Psychological Safety

A junior engineer who is afraid to ask questions, admit confusion, or show incomplete work is nearly unmovable. Psychological safety — the belief that it’s safe to take interpersonal risks — is the prerequisite for all the other techniques in this guide to work.

Practical ways to build it:

Normalize not knowing: “I had to look that up last week” is a more useful thing to say than demonstrating encyclopedic knowledge. When you model that looking things up is normal, you remove the shame from not knowing.

Never make someone feel bad for asking: The classic “you should know this” or the long pause before answering that implies the question was beneath them — these are small moments that have outsized effects on whether someone asks the next question.

Celebrate attempts, not just success: “I see what you were going for here, and the approach was reasonable — here’s what we’d need to change to make it work” is more useful than “this doesn’t work.”

Admit your own mistakes openly: If you give bad advice, own it clearly. “I told you to approach it that way and I was wrong — here’s what I should have said.” This models intellectual honesty and reduces the cost of being wrong.

Be consistent: Psychological safety is built in patterns, not gestures. One supportive conversation after weeks of dismissiveness means nothing.


Teaching How to Learn, Not Just What to Know

The highest-value thing you can give a junior engineer is not your knowledge — they can acquire knowledge. It’s the meta-skill of effective learning: how to read documentation, how to debug systematically, how to find the right question to ask, how to evaluate whether an approach is sound.

Teaching Debugging Process

Most juniors debug by changing things and seeing what happens. A more systematic process:

  1. Reproduce the problem reliably — if you can’t reliably reproduce it, you can’t verify a fix
  2. Isolate it — reduce to the smallest case that still shows the bug
  3. Form a hypothesis — what do you think is causing this and why?
  4. Test the hypothesis — design a check that would prove or disprove it
  5. Update based on evidence — if the hypothesis was wrong, why, and what’s the new hypothesis?

Teaching this process is more valuable than fixing any individual bug.

Teaching How to Read Documentation

Many juniors are intimidated by official documentation and default to Stack Overflow. Show them:

  • How to navigate a reference doc vs. a guide/tutorial
  • How to read a function signature and understand parameters without reading the full docs
  • Where to find examples in source code when docs are thin
  • How to recognize when documentation is outdated or wrong

Teaching How to Ask Good Questions

The quality of someone’s questions is a strong predictor of their growth rate. Teach them to ask questions that include:

  • What they’re trying to accomplish
  • What they’ve already tried
  • What they expect to happen vs. what’s actually happening
  • Where they think the problem might be

A junior who writes “it doesn’t work” will waste everyone’s time indefinitely. A junior who writes “I’m trying to X, I tried Y and Z, I expected A but got B, and I think it might be related to C” will get faster answers and learn more from each interaction.


Measuring Progress

How do you know if your mentoring is working? The obvious answer — their code quality — is real but incomplete. Code quality has a ceiling set by the work they’re assigned, and it lags real growth. Better signals:

Independence over time: Are they asking for help on progressively harder problems? Are there problem types they used to need help with that they now handle completely on their own?

Quality of questions: Are their questions more specific and well-reasoned than they were three months ago?

Ability to estimate: Can they scope tasks and predict blockers more accurately than before?

Feedback loops: Are they running code review on their own work before sending it? Are they spotting issues in others’ code?

Communication: Are they writing clearer technical designs, commit messages, and documentation?

Track these over quarters, not weeks. Growth in junior engineers is not linear — there are plateaus, breakthroughs, and the occasional regression when they take on something significantly harder.


Mentoring as a Two-Way Investment

Good mentoring changes both people. Explaining things clearly forces you to understand them more precisely. Teaching debugging forces you to articulate your own debugging process. Watching someone make the mistakes you made five years ago gives you perspective on your own growth.

The senior engineers who mentor most effectively are almost always the ones who learned something from the process — about the codebase (through fresh eyes), about communication, about their own assumptions. They’re not just giving; they’re building a relationship with a future colleague.

The junior you mentor well today is the senior engineer in three years who mentors effectively because of what you modeled. That’s the compounding return nobody talks about.


A Quick Reference: Help vs. Not Help

Situation Feels Like Helping Actually Helps
They’re stuck on a bug Take the keyboard and fix it Ask what they’ve tried; guide them to EXPLAIN / print / logs
Their code works but isn’t how you’d write it Rewrite it in review Explain why your approach has advantages; let them decide
They ask a question you know the answer to Answer immediately Ask what they’ve already tried or found
They make the same mistake twice Fix it again Ask why they think it happened; discuss the pattern
They write slow code Tell them it’s slow Ask them to measure it first, then discuss why
They seem frustrated Solve it for them Acknowledge the frustration; ask what would unblock them
PR has many issues Leave 40 comments Pick the 3 most important; note the rest as nits
They write something clever but unclear Praise the cleverness Ask: “If you come back to this in 6 months, will you understand it?”

Getting Started

If you’ve never formally mentored before, starting is simpler than it might seem:

  1. Set expectations explicitly: “Here’s how I’d like this to work — I’ll meet with you weekly, you should come with questions, and I’ll try to help you grow toward not needing me.”
  2. Ask what they want to get better at: Don’t assume. Ask them.
  3. Assign one stretch task: Something at the edge of their ZPD, with explicit support.
  4. Review their work and explain your thinking: Not just “this is wrong,” but “here’s how I think about this class of problem.”
  5. Give it three months before evaluating: Genuine growth in this work is visible on a quarterly timeline.

The biggest mistake you can make is waiting until you feel ready. You’ll never feel ready. The techniques in this guide are learnable on the job, and the most important thing you bring — your hard-won experience — is already there.

Comments