Verbal craft — the unfair advantage
📖 Walk me through it — plain English
This lesson is not about code at all — it is about the talking you do while you code in an interview. "Verbal craft" just means the skill of narrating your thinking out loud so the interviewer can follow your reasoning in real time. ("Narrate" = describe what is happening as it happens, like a sportscaster calling a game; here the "game" is your own thought process.) The big claim here is blunt but true: two people can write the exact same correct solution, and the one who explained their thinking clearly gets the offer. The interviewer is not only grading whether the code runs — they are imagining what it is like to sit next to you in a meeting, debug a production incident with you at 2 a.m., or hand you a vague task and trust you to ask the right questions. Your words are half the test, and they are the half most candidates never practice.
Think of it like a cooking show. A quiet chef who silently plates a perfect dish leaves the audience confused — they saw the result but learned nothing and felt no connection. A good TV chef talks the whole time: "I'm searing this first so it keeps its juices… I'll taste before I add salt." Same food, but now you trust them and enjoy watching. The interview works the same way. The interviewer is your audience, and your spoken reasoning is what turns a silent result into a performance they can root for. Crucially, a rooting interviewer is a helpful interviewer — when they understand where you are headed, they drop hints; when they are lost, they just watch and worry.
A key distinction from the lesson: narrate the why, not the what. The "what" is the literal action the code performs — and the interviewer can already read that on the screen, so describing it adds nothing. The "why" is the reason you chose that action over the alternatives — your strategy — and that is the thing actually being graded. Saying "I'm writing a for loop" is narrating the what. Saying "I'm looping once because I only need the running minimum, not every pair" is narrating the why. ("Running minimum" means the smallest value seen so far as you scan left to right — you keep one variable and update it whenever you find something smaller. "Every pair" would mean comparing all possible two-element combinations, which there are roughly n²/2 of, so it is far slower.) The why reveals that you understood the structure of the problem; the what reveals only that you can type.
Here is how to actually use the six tactics on the cards below, in roughly the order they tend to come up during a problem:
- When stuck, think out loud. Name the brute-force cost, point at the slow part, then ask out loud what would fix it. ("Brute force" = the most obvious, unoptimized solution — the first thing anyone would try, usually correct but slow.) Example: "Brute force is O(n²) — that notation means the running time grows with the square of the input size, so doubling the input roughly quadruples the work. The slow part is the inner scan, where for every element I re-scan the whole array. If I had instant, constant-time lookup of 'have I seen this value?', that points straight at a hash map." Saying this out loud often walks you into the better answer, because naming the bottleneck out loud forces you to confront exactly what needs to change. And even when it doesn't hand you the answer, the interviewer sees a methodical problem-solver instead of a frozen, silent screen — which is the single worst thing to present.
- Use "Let me…" to buy quiet thinking time. "Let me trace this with the input [1,3,2]" gives you a legitimate 10–30 seconds to think without awkward silence — what interviewers call "dead air," the stretch of nothing that makes everyone uncomfortable and makes you look stuck. The phrase reframes the silence: it signals you are actively working a concrete example, not stalling or blanking. ("Trace" = step through the code or algorithm by hand on a small input, tracking how each variable changes — the manual version of running it.)
- Set a confidence floor. Never say "sorry, I'm not sure." That phrase volunteers doubt and invites the interviewer to doubt you too. Replace it with a framing that sounds like deliberate engineering: "I see two options here — let me weigh them." It is exactly as honest (you genuinely haven't decided), but it lands as a thoughtful engineer comparing trade-offs rather than someone apologizing for existing. A "confidence floor" just means a worst-case version of yourself that still sounds composed.
- Use the interviewer as a sounding board. A "sounding board" is a person you bounce a half-formed idea off of to test it before committing. Try: "I'm leaning toward a hash map here — does that match what you're thinking?" A quick check like this can save you from confidently coding the wrong approach for 20 minutes. Interviewers almost always nudge you when you ask directly, because a question gives them permission to help without feeling like they are giving the answer away.
- End with a summary. Once it works, recap the complexity and edge cases out loud: "So this is O(n) time, O(n) space; the edge cases are empty input, a single element, and duplicate values; and I could trade down to O(1) space if I'm willing to accept O(n log n) time by sorting first instead." ("Edge cases" = the unusual or boundary inputs — empty, exactly one item, repeats, the largest possible value — that naive code tends to mishandle. "O(n) time, O(n) space" means both the time taken and the extra memory used grow in direct proportion to the input size.) This recap is the last thing the interviewer hears, so it sets the final impression: organized, complete, and aware of trade-offs.
Why this matters so much: the code can be re-read and judged calmly after the interview is over, but communication can only ever be judged live, in the room — there is no replay. That makes your spoken reasoning the single signal the interviewer weighs most heavily when they ask themselves the real question behind the hire: "what would working with this person every day actually feel like?" That is why the lesson ends with a drill: do one SoloMock practice session each weekday from week 2 onward, and afterward ask for specific feedback on the three places verbal craft most reliably breaks down — where you went silent, where your complexity claims were vague or hand-wavy, and which edge case you forgot to mention. You get good at talking through problems the same way you get good at anything physical: deliberate reps, plus honest feedback that names the exact thing to fix next time.
Two candidates with identical solutions get different offers because of how they communicate while solving. This is the part most guides skip — and the part SoloMock exists to drill. The good news: unlike raw algorithm skill, verbal craft is mostly a small set of reusable phrases you can rehearse until they come out automatically under pressure. The six cards below are those phrases.
The six tactics, with sample phrasing
Each card pairs the tactic with a ready-to-say line. Read the line out loud now — the goal is to make it muscle memory, so it surfaces on its own the moment your mind goes blank in a real interview. A phrase you have said aloud ten times in practice is one you can reach for when your heart rate is up and the cursor is blinking.
Bad: "I'm writing a for loop." Good: "I'm iterating once because I only need the running min — I don't need the full pair." The first describes typing; the second reveals strategy, which is what gets graded.
"Brute force is O(n²). The bottleneck is the inner scan. If I had constant-time lookup… that's a hash map." Naming the slow part out loud often walks you straight into the fix.
"Let me trace this with [1,3,2]." Earns you 10–30s to think with no dead air, because it signals active work on a concrete example instead of stalling.
Replace "sorry, I'm not sure" with "I see two options — let me weigh them." Same honesty, but it sounds like an engineer comparing trade-offs, not an apology.
"I'm leaning hash map here — does that match what you're thinking?" A 5-second check that prevents coding the wrong thing for 20 minutes.
"To recap — O(n)/O(n), edge cases empty/single/dup. Could trade to O(1) space at O(n log n)." The last thing they hear, so make it organized and complete.
Common pitfalls — what breaks verbal craft under pressure
Knowing the tactics is not the same as executing them when adrenaline hits. These are the failure modes that show up most often on mocks, and the small correction for each:
- Silent debugging. The moment a bug appears, most people go quiet and hunch over the screen for two minutes. To the interviewer that silence reads as "lost." Instead, narrate the hunt: "The output's off by one, so let me check my loop bounds — I suspect the
<=should be<." You stay legible, and the interviewer can help. - Narrating the what, slipping back to typing-commentary. Under stress people default to reading their own code aloud ("now I set i to zero"). Catch yourself and re-aim at the why: reason for the line, not the line.
- Vague complexity claims. Saying "this is pretty fast" or "probably linear-ish" signals you do not actually know. State the exact Big-O and one sentence of justification: "O(n) because I touch each element once and every operation inside is O(1)."
- Coding before aligning. Diving into code without floating the approach risks 20 wasted minutes. Spend 30 seconds using the interviewer as a sounding board first.
- Forgetting the summary. Once tests pass, the urge is to exhale and stop talking. But the recap is free points — it demonstrates rigor and leaves the last impression. Always close the loop on complexity and edge cases.
Takeaway: the interviewer is grading two things at once — your solution and what it would be like to work with you — and only the second can be judged live. Narrate the why not the what, keep talking when stuck, buy time with "Let me…", swap apologies for "I see two options," check direction with the interviewer, and always end with a spoken recap of complexity and edge cases.