Scott Hanselman’s AI Coding Guide for Beginners | The Neuron

Scott Hanselman’s Beginner Guide to AI-Augmented Software Engineering

Scott Hanselman’s Microsoft Build demo showed a better way to code with AI: start weird, stay grounded, review everything, and turn useful AI work into reusable tools.

Written By
Grant Harvey
Grant Harvey
Jun 3, 2026
17 minute read

The loudest narrative around AI coding right now looks like a tokenmaxxing scoreboard: tokens burned, pull requests opened, commits shipped, leaderboard screenshots posted.

Scott Hanselman’s version starts with a better question: what problem does a human actually want to solve?

In this Microsoft Build 2026 livestream with Corey Noles, Hanselman walks through his real development setup, his GitHub Copilot workflow, Windows Terminal, some cool demos like Tiny Tool Town, how he uses GitHub Actions workflows, and a live experiment that connects Copilot to his blood sugar data.



Scott Hanselman is one of the rare people who can explain software to beginners without making them feel like they missed a prerequisite course in 2007.

Scott is a developer, teacher, speaker, author, longtime podcaster, and VP / Member of Technical Staff at Microsoft and GitHub, where he works on open source, Windows developer tools, and agentic coding tools like GitHub Copilot.

His takeaway point from this stream is simple: AI can help you build faster, but speed only helps when the loop still includes taste, tests, review, grounding, and human judgment.

The highlights:

  • (1:08) Hanselman says he wants to spend the next “thousand days” teaching AI-augmented software engineering.
  • (1:23) He compares AI coding tools to a power tool, specifically a “freaking chainsaw,” and argues software engineering still matters.
  • (2:11) He mentions Windows TerminalWSLWSLg, and WSLC as part of the modern Windows developer stack.
  • (3:13) He says the practical coding loop now includes containers, multiple pull requests, and multiple Copilots in parallel.
  • (3:21) His sweet spot for parallel work is three to five Git worktrees. More than that becomes self-deception.
  • (3:56) He defines the mature version of this workflow: good SDLC, tests, code review, and reading the code AI writes.
  • (4:36) He pushes back on token leaderboards and “token maxing,” because the metric should be solved problems.
  • (5:09) He shows Hansel Projects, a dashboard that helps him pick work based on energy and emotional state.
  • (7:09) He shows the GitHub Copilot app as an action dashboard for issues, PRs, and repository work.
  • (7:34) He explains “emoji bake,” where double encoding corrupts emojis or Chinese characters into stray ASCII characters.
  • (8:15) His teammate adds 188 lines of tests after fixing the encoding issue, so it stays fixed.
  • (8:18) He says his human job is reading PRs, looking at issues, and applying code smell.
  • (9:38) He says Windows added roughly 75 command-line utilities so familiar commands work without extra setup.
  • (10:44) He explains TUIs, or text user interfaces, and why they are having a moment.
  • (12:47) He says AI is good at making features and weaker at making architecture, so humans steer with documentation.
  • (14:55) He shows Tiny Tool Town using GitHub Issues as the submission system, with “no database.”
  • (15:20) He shows a GitHub Actions workflow that texts him new tool submissions, checks stars, detects bots, and generates summaries.
  • (16:08) Tiny Tool Town has light mode, dark mode, and GeoCities modeThe web survived long enough to get fire GIFs back into the workflow.
  • (17:25) Corey compares early web tinkering to learning with AI: start with “I need to do this thing,” then learn the pieces as you go.
  • (18:46) Hanselman says to ask the AI for its confidence and make it explain why.
  • (19:04) He tells people to give the AI a rubric, then ask it to evaluate against that rubric.
  • (19:44) His workflow tags and triages submissions automatically, then leaves approval to a human.
  • (20:37) His advice: every project does not need a database.
  • (21:45) He says his 24-year blog runs on 5,300 XML files in a folder.
  • (22:28) He says 22 years of his writing fits into about 300 MB of memory.
  • (24:22) He says he logs into interfaces less now because he can ask an agent to use an API.
  • (27:18) He decides to turn his blood sugar data API into a Copilot skill.
  • (27:39) He uses dictation because his hands do not work as well as they used to after surgeries.
  • (29:43) Copilot installs the skill, reads files, and writes Python and PowerShell to call the JSON API.
  • (30:30) He asks Copilot to use the skill to see whether his blood sugar showed stress during his stage presentation.
  • (32:44) He names the bigger idea: just-in-time UI generation.
  • (33:51) The generated report says “maybe a stage adrenaline bump” and charts a 35-point rise.
  • (35:10) He says useful LLM work should become a Python script when it no longer needs a model.
  • (36:19) He proves the report is grounded by showing the JSON data pulled from the API.
  • (38:18) He shows a probability heat map for a local chatbot completing the sentence “It’s a beautiful day. Let’s go to the…”
  • (39:15) He says models are improv partners, not fact machines.
  • (39:40) He asks for his own birthday and shows the model making up wrong answers.
  • (40:48) His closing thesis: AI-augmented software engineering means “driving stick shift” and understanding how computers work.
  • (42:10) He tells people to learn HTTPDNSJSON, and the basics.
  • (43:04) He suggests creating “junior engineer specific docs,” diagrams, and interview-style explanations of your code.

Start with the power tool, then keep the process

Hanselman opens with the thing everyone feels right now: AI coding tools are powerful enough to change the way software gets made.

At (1:08), he says he wants to spend the next “thousand days” teaching AI-augmented software engineering. At (1:23), he calls AI a “freaking chainsaw.”

A chainsaw makes the work faster. It also makes mistakes louder.

AI-augmented software engineering means using AI inside the real software workflow: planning, coding, testing, reviewing, shipping, and maintaining. Vibe coding means prompting an AI tool to build software quickly from plain-language instructions.

Vibe coding is great for exploration. The upgrade is putting it inside a process that can survive contact with users.

Advertisement

Measure solved problems

At (4:36), Hanselman pushes back on token leaderboards and “token maxing.” Burning more tokens can look productive while the actual work stands still.

He cares less about pull request count, commit count, lines of code, and token volume. He cares about the user story that moved.

That distinction matters because AI makes motion cheap. You can generate ten branches, five prototypes, and a pile of code before lunch. The work starts counting when a human problem gets smaller.

Hanselman’s Hansel Projects dashboard, shown around (5:09), adds a more human operating system. It looks across his projects and helps him choose work based on energy and emotional state.

Some days are good for pull requests. Some days are good for one hard problem. Some days are good for small automations.

AI can accelerate the work. The human still chooses the work worth doing.

Work in small, reviewable changes

At (3:13), Hanselman talks about containers, pull requests, and multiple Copilots running in parallel. At (3:21), he says three to five Git worktrees is probably the sweet spot.

GitHub is a place where people store code, track changes, discuss bugs, review updates, and ship software together. A repository, or repo, is a project folder tracked by GitHub. A pull request, or PR, is a proposed change to the code.

A diff shows exactly what changed. A Git worktree gives you another working copy of the same project, so separate changes can stay separate.

That setup keeps AI work visible. One agent can try one path. Another can try another. The human compares the results, reads the diff, and decides what survives.

The practical rule: ask AI to build one change at a time. Keep each change separate. Review the diff before accepting it.

Advertisement

Read the code and write the tests

At (7:34), Hanselman shows an “emoji bake” fix. Emoji bake happens when text encoding breaks and turns an emoji or Chinese character into several stray ASCII characters.

The fix is only half the story.

At (8:15), his teammate adds 188 lines of tests so the same bug stays fixed. At (8:18), Hanselman says his job is reading PRs, looking at issues, and applying code smell.

Code smell means something in the code feels suspicious. The code might run today while its structure hints at future bugs, complexity, or maintenance pain.

Automated tests are code that checks other code. A good test catches the same bug if it returns later.

Use AI to fix the bug. Then use AI to write tests that would have caught it.

You just fixed this bug. Now write tests that would fail before the fix and pass after it. Then explain each test in plain language, including what case it protects against.

Steer architecture with docs

At (12:47), Hanselman says AI is good at making features and weaker at making architecture.

Features are local. Architecture is the shape of the system.

A model can add a button, create a form, write a script, or implement a helper function. Architecture asks a larger question: how should this whole thing fit together so the next change still makes sense?

Hanselman steers with documentation. At (13:03), he describes writing docs for how localization should work, then checking PRs against those docs.

Architecture documentation is a short set of rules for the project. It can describe:

  • Where data lives
  • Which files call an API
  • How errors should be handled
  • How secrets and credentials are stored
  • Which patterns the project should follow
  • Which patterns the project should avoid

A file called ARCHITECTURE.md gives the AI something stable to obey. Without that, it solves the immediate request in whatever way seems plausible.

Advertisement

Build small tools that make you care

Hanselman’s Tiny Tool Town demo starts from a small, weird place.

At (13:29), he talks about Baby Smash, a silly game he made for his kid. Then it got hundreds of thousands of users. At (14:01), he introduces Tiny Tool Town, a homepage for small tools made for an audience of one.

That shape works: small enough to finish, specific enough to care about, weird enough to keep going, real enough to force decisions.

Tiny Tool Town includes coloring tools, terminal utilities, custom pages, light mode, dark mode, and Geocities mode at (16:08).

Geocities mode is the joke. The lesson is the permission structure. People learn faster when the project feels like theirs.

Corey makes that connection at (17:25). Early web development often started with “I need to do this thing.” Then people learned HTML snippets, links, images, and little pieces of code because the project demanded them.

AI brings back that path. Make the thing. Ask why it works. Follow the next layer down.

Keep the stack boring until it needs to grow

At (14:55), Hanselman shows Tiny Tool Town submissions happening through GitHub issues. Then he says the line that explains the whole architecture: “There’s no database. The database is GitHub.”

At (20:37), he says every project does not need Supabase or Cosmos DB. Tiny Tool Town runs on GitHub PagesAstro, and a giant JSON file.

JSON is a common text format for storing structured data. It uses names and values, like titleurl, and descriptionXML is an older structured text format. Hanselman’s blog uses one XML file per post.

At (21:45), he says his 24-year blog is 5,300 XML files in a folder. At (22:28), he says 22 years of writing fits into about 300 MB of memory.

Many apps need structured data long before they need a real database.

Start with a JSON file, a spreadsheet, a Notion database, or GitHub issues. Upgrade when the project proves it needs more.

Advertisement

Automate toil, keep judgment human

Tiny Tool Town gets more useful when submissions arrive.

At (15:20), Hanselman shows a GitHub workflow that checks new tools, looks at stars, detects whether the submitter is a bot, and generates summaries.

At (18:22), he runs a triage skill that checks for duplicates, license, images, commercial submissions, and fit.

Then he gives the operating move at (18:46): ask the AI for its confidence and make it explain why.

He adds the next piece at (19:04): give it your own rubric.

A rubric is a scoring guide. It tells the AI what “good” means for this project.

For Tiny Tool Town, a rubric might check whether a submission has:

  • A public repo
  • A license
  • Screenshots
  • A real person behind it
  • A clear local use case
  • No commercial spam
  • Enough weirdness to fit the site

At (19:44), Hanselman keeps the boundary clean. The agent tags and triages. A human approves.

Connect AI to real data through APIs and skills

The Nightscout demo turns the workflow into personal software.

At (24:22), Hanselman says he logs into interfaces less and asks agents to do things through APIs more.

An API is an interface that lets software talk to software. A REST API is a common web-style API where a URL returns data or performs an action. A skill is a packaged set of instructions, scripts, or tools that teaches an AI assistant how to do a repeatable task.

At (25:54), Hanselman explains that he has Type 1 diabetes. He has an insulin pump in one arm and a sensor in the other. At (26:28), he explains the open-source artificial pancreas community, Loop, and Nightscout.

CGM, or continuous glucose monitor, reads blood sugar every few minutes.

At (27:18), he realizes he has a REST API and can turn it into a skill. Then at (27:39), he dictates the instruction to Copilot:

Take this GitHub repository. It has a skill. Bring the skill down, install it, ask me what you need to ask me, and then we’re going to check my blood sugar.

If your data has an API, your AI assistant can help you build a tool around it.

For a first pass, use safe, non-sensitive data: weather, reading lists, invoices, workout logs, task lists, or public spreadsheets. Medical and financial data raise the stakes fast.

Advertisement

Let the interface fit the job

Hanselman uses dictation because of hand surgeries. At (27:57), he mentions voice options, including Windows dictation and voice in GitHub Copilot.

AI coding is becoming multimodal in ordinary ways. You can type a prompt, speak a prompt, review files visually, ask for a diagram, use a terminal, or use a graphical app.

At (31:53), Hanselman says command-line intimidation is fine. If you prefer the GitHub Copilot app, you can open the same folder graphically.

A terminal is a text-based place to run commands. PowerShellBash, and ZSH are command-line shells. They receive commands and run programs. A TUI, or text user interface, is a visual interface that runs inside the terminal.

Use the interface that lets you understand the work. Then learn one layer deeper when the moment calls for it.

Run the local voice stack Scott mentions

When Hanselman switches to dictation, he casually drops the important part: the voice system happens locally. Your personal voice does not need to stream to someone else’s server just to become text.

The two NVIDIA model families to know here are Parakeet and Nemotron Speech.

Parakeet Unified English 0.6B is the easiest place to start. It turns speech into text, supports punctuation and capitalization, and can run in offline mode for normal transcription or streaming mode for live voice input.

Nemotron Speech Streaming 0.6B is built for the low-latency case: voice agents, live captions, and interruptible conversations where the system needs to hear you while you are still talking.

Both run through NVIDIA NeMo, NVIDIA’s open framework for speech and multimodal models.

Advertisement

Option 1: Run Parakeet for simple speech-to-text

Use this when you have an audio file and want a transcript.

python -m venv .venv
source .venv/bin/activate

sudo apt-get update && sudo apt-get install -y libsndfile1 ffmpeg
pip install Cython packaging
pip install "git+https://github.com/NVIDIA/NeMo.git@main#egg=nemo_toolkit[asr]"

Then save this as transcribe_parakeet.py:

import nemo.collections.asr as nemo_asr

asr_model = nemo_asr.models.ASRModel.from_pretrained(
model_name="nvidia/parakeet-unified-en-0.6b"
)

output = asr_model.transcribe(["audio.wav"])
print(output[0].text)

Run it:

python transcribe_parakeet.py

That gives you the basic version of Scott’s workflow: speak, transcribe locally, then send the text into Copilot, Codex, Claude Code, or whatever agent you are steering.

Option 2: Run Nemotron Speech for low-latency streaming

Use this when the timing matters. Parakeet is great for normal transcription. Nemotron Speech Streaming is the model to test when you want something closer to live voice control.

Install the same NeMo stack, then test a whole-file transcription first:

import nemo.collections.asr as nemo_asr

asr_model = nemo_asr.models.ASRModel.from_pretrained(
model_name="nvidia/nemotron-speech-streaming-en-0.6b"
)

output = asr_model.transcribe(["audio.wav"])
print(output[0].text)

For real streaming, clone NeMo and use NVIDIA’s cache-aware streaming script:

git clone https://github.com/NVIDIA-NeMo/NeMo.git
cd NeMo

python examples/asr/asr_cache_aware_streaming/speech_to_text_cache_aware_streaming_infer.py \
model_path= \
dataset_manifest= \
batch_size=1 \
att_context_size="[70,13]" \
output_path=outputs/

The important knob is att_context_size. It controls the latency tradeoff. Smaller right context gives faster responses. Larger right context gives the model more audio to work with, which usually improves accuracy.

For a voice-agent experiment, start with the safer setting:

att_context_size="[70,13]"

Then try lower-latency settings as the demo gets stable:

att_context_size="[70,6]"
att_context_size="[70,1]"
att_context_size="[70,0]"

This is the same idea as Scott’s broader workflow: start with the working version, then tighten the loop.

Advertisement

What this unlocks

Once local speech-to-text works, voice becomes another input layer for the agent.

You can say:

Open the repo, read the failing test, explain the error in plain English, then propose the smallest fix.

Or:

Review the diff in this pull request and tell me what looks risky before I merge it.

Or:

Take this messy voice note, turn it into an issue, add acceptance criteria, and suggest the first implementation step.

That is the practical version of Scott’s point. Voice removes friction from the prompt. Local ASR keeps the input closer to your machine. The agent still needs the same engineering guardrails: tests, docs, diffs, and human review.

Side note: NVIDIA, you need a desktop app to run these models for beginners to use! I'm willing to bet y'all could vibe-code something... just saying...

Ask for the report you need

At (30:30), Hanselman asks Copilot to check whether his blood sugar suggests he was stressed on stage.

Then he changes the request while talking. He moves from a simple chart or Markdown file to a “cool local website report.” Corey points out at (31:01) that the extra context helps.

Treat the first prompt as the start of the conversation. Add constraints. Explain how you will use the output. Change your mind out loud.

At (32:32), Copilot says it is writing a single self-contained local HTML report.

At (32:44), Hanselman names the pattern: just-in-time UI generation.

Just-in-time UI generation means creating the interface when you need it, shaped around the task in front of you. Instead of opening a dashboard someone designed months ago, you ask for the exact report, chart, or page the question requires.

At (33:51), the report lands: “maybe a stage adrenaline bump,” with a chart showing his blood sugar rose during the stage window and fell later.

The loop is simple:

  • Find real data
  • Build a skill to access it
  • Ask a real question
  • Generate a local report
  • Inspect the underlying data
Advertisement

Move repeated work into scripts

At (34:59), Hanselman says tools can be reused. At (35:10), he gives the rule:

If this doesn’t need to be an LLM anymore, I need to move it immediately into a Python script.

LLMs are useful for ambiguity. Scripts are useful for repeatability. Once the steps are clear, move the stable pieces out of the fuzzy reasoning layer and into deterministic code.

Deterministic means the same input should produce the same output every time.

Use the AI to discover the workflow. Then ask it to turn the stable parts into a script.

This workflow now works. Identify which parts still require judgment and which parts are repeatable. Convert the repeatable parts into a script. Keep the judgment steps as clear checkpoints for a human.

Ground the answer before trusting it

The Nightscout report only matters if the numbers are real.

At (36:19), Hanselman shows that the data came from JSON pulled from the API. At (36:36), he checks the current serum glucose value against the command line.

Grounding means connecting the AI’s answer to a real source of truth: a file, database, API, document, or live system.

Then he shows the opposite.

At (38:18), he demos a local chatbot completing a sentence with probabilities. “Park” and “beach” are plausible because language models predict likely next words.

At (38:48), he adds context about being from Portland, his dad being a firefighter, and his mom being a zookeeper. The model follows that context to “zoo.”

At (39:15), he says these systems are improv partners, not fact machines.

Then he asks for his own birthday at (39:40). The model gets it wrong. When he tells it to try again, it keeps making things up.

Use the model for brainstorming. Use grounding for facts. Use verification when the cost of being wrong is high.

Advertisement

Learn by interviewing your own code

Corey asks what someone should learn if AI brought them into coding.

Hanselman answers with a driving analogy at (41:38). His dad made him learn to change oil, change a tire, and drive stick shift before driving.

Then he adds the balance at (41:47). Requiring assembler, C, and years of prerequisites puts a wall in front of creativity.

Start where you are, then pop the hood one level deeper.

At (42:10), he tells people to learn HTTP, DNS, JSON, and the basics.

HTTP is the protocol browsers and servers use to send webpages and data back and forth. DNS is the internet’s address book. It turns a name like example.com into the server address your computer needs. Localhost means a server running on your own computer.

Corey describes his learning loop at (42:24): build something with AI, then ask another AI to walk through how it works.

Hanselman sharpens that at (43:04): make junior engineer specific docs. Ask for diagrams. Interview the code.

Explain this code as if I am a junior engineer joining the project today. Start with what problem it solves, then draw the data flow in words, then explain the key files, then list what I should learn next.

Interview this codebase. Ask the code what it was designed to do, what assumptions it makes, where it is fragile, what inputs it expects, and what would break if the project grew 10x.

Make the thing. Understand the thing. Then use that understanding to make the next thing less mysterious.

The workflow to copy

Hanselman’s workflow reduces cleanly:

  1. Pick a tiny real project you personally want.
  2. Ask AI to help build the first working version.
  3. Keep the architecture simple: JSON, GitHub issues, static files, or a spreadsheet before a database.
  4. Ask AI to explain every file it created.
  5. Ask for tests that prove the core behavior works.
  6. Review the diff before accepting changes.
  7. Write a short architecture doc so the AI follows your rules next time.
  8. Add a rubric for decisions the AI should help evaluate.
  9. Let AI triage and summarize repetitive work.
  10. Keep final approval with a human.
  11. Connect to real data only when you can verify the source.
  12. Turn repeated workflows into scripts.
  13. Learn one layer deeper every time: HTTP, DNS, JSON, GitHub, APIs, tests, and deployment.

Vibe coding gives people a reason to learn. A person who would never finish a textbook chapter on HTML might spend three hours getting a weird personal tool to work.

That energy is useful. It also needs a path.

Hanselman’s demos show the path from prototype to practice: small projects, simple architecture, AI help, human review, tests, docs, grounded data, and repeatable scripts.

The open question is whether coding tools will make that path feel natural. The industry loves screenshots, demos, and activity metrics because they are easy to celebrate. The craft lives in quieter places: the diff, the test, the doc, the rollback plan, and the moment a human says, “I understand why this works.”

That is the real shift. AI coding makes software easier to start. AI-augmented software engineering makes it easier to keep up.

Grant Harvey

Grant Harvey is the Lead Writer of The Neuron, where he continues to lead the publication's daily coverage of AI news, tools, and trends.

The Neuron Logo

Don't fall behind on AI. Get the AI trends & tools you need to know. Join 700,000+ professionals from top companies like Microsoft, Apple, Salesforce and more.

Property of TechnologyAdvice. © 2026 TechnologyAdvice. All Rights Reserved

Advertiser Disclosure: Some of the products that appear on this site are from companies from which TechnologyAdvice receives compensation. This compensation may impact how and where products appear on this site including, for example, the order in which they appear. TechnologyAdvice does not include all companies or all types of products available in the marketplace.