// FRC New England Mentor Conference · 2026

One Year in the
Pits & the Bits

What I learned mentoring software, what I built,
and what I'd tell myself on day one.

Software Mentor · Team 6328 First Year Retrospective Open Source Demo
Dan Murphy
// meet.the.speaker()

Dan Murphy

  • FLL Mentor  ·  5 years
  • FRC Mentor  ·  1 year
  • Writing Code  ·  ~40 years
Team 6328 · Mechanical Advantage dan.murphy@littletonrobotics.org
// 01 · first.things.first()

From FLL to FRC:
It's a Cliff

  • FLL sets the pace: structured, scaffolded, approachable. Then FRC happens.
  • Six-week build season. Real hardware. Real stakes. Real students. No guardrails.
  • The game manual is code. Explore it as such. NotebookLM & quizzes work!
  • The hard part isn't the code. It is the domain knowledge.
// 02 · community.connect()

You're Not Alone
in the Pits

We tell the students:
learn, have fun, make a friend.
Good advice for mentors too. Even introverted software ones.
channel
NE Mentor Slack
Regional community. Ask the dumb questions. Everyone has been there.
forum
Chief Delphi
The FIRST brain trust. Read a lot, and write a little.
workspace
Team Slack
Build a transparent async channel with students, parents, and co-mentors from day one.
culture
Gracious Professionalism
Not just a phrase. The whole FIRST community practices it. It really is different.
// 03 · training.fundamentals()

Teaching Software:
The Foundation

  • Familiarity over mastery: they don't need to own Java, they need to read it. Fluency comes from immersion.
  • Acknowledge Java's verbosity. Describe the forest, then zoom to a tree.
  • Minimize time-to-code: second session ends with typing in Java and compiling it.
  • Learning how to learn: Javadoc, compiler errors, stack traces, asking better questions, LLMs
  • Stickers. Seriously. Stickers.
public Shooter(       ShooterIO io,       DoubleSupplier targetPowerSupplier,       Supplier<Pose2d> poseSupplier,       BooleanSupplier demoModeSub) {     this.io = io;     this.targetPowerSupplier = targetPowerSupplier;     this.poseSupplier = poseSupplier;     this.demoModeSub = demoModeSub;   }     @Override   public void periodic() {     io.updateInputs(inputs);     Logger.processInputs("Shooter", inputs);     updateSimState();   }
// 03b · stickers.reward()

Programmers Love Stickers

Software team sticker sheet
// 04 · new MechACoder() → demo()

Mech-A-Coder

Browser-based FRC Java training — CodingBat with robot context.
Open source by Team 6328 · Mechanical Advantage.

Monaco IDE in browser Real Java compiler Unit tests · TDD by default Google Auth + Leaderboards
6328
Built by Mech Advantage
OSS
Open source forever
Any team can use it today
// mech-a-coder · login & dashboard Mech-A Coder login screen
// mech-a-coder · leaderboard Mech-A Coder leaderboard
// mech-a-coder · challenge editor Mech-A Coder challenge editor
// 05 · robot.learn_by_doing()

Learning By Doing

CodingBat → Mech-A Coder
Bridge from general Java to FRC Java. Self-paced challenges build intuition before they touch hardware. Leaderboard keeps them coming back.
Learning how to learn
Javadoc navigation. Stack trace debugging. Asking better questions. Skills that outlast any one game year.
Dance Party / RoboRave
First hands-on robot session. Music, LEDs, drive commands. The moment they stop being students and start being engineers.
Self-paced rewards that stick
Badges, leaderboard position, stickers. Intrinsic motivation catches fire when they see their name move up.
// kitbot.dance() · sandstorm
// 06 · ai.in_the_room()

The Elephant
in the Room

I don't write assembly anymore.
That's fine.
Knowing why it works still matters.
  • Teaching software in the age of AI: don't panic, embrace the metaphor.
  • Claude Code for non-profits: inexpensive, powerful, and a teachable skill unto itself.
  • Prompting is craft. Stretching context tokens is craft. Teach students both.
  • A hunger to peek under the hood. This will always be valuable. Maybe the most important thing to teach.
// 06b · ai.teach_the_next_gen()

Teaching AI Is
Not Optional

  • This matters technically and for society — it will shape the next generation of engineers more than any framework.
  • A tool, not an implacable force. We want them wielding it, not fearing it.
  • Teach the limitations, the costs, and how to make it their own.
  • They get to help shape how it is used. That is a responsibility worth handing them.
Knowledge shines a light in the darkness.
// 07 · future.engineers()

Building Those Who
Build Tomorrow

  • Understanding the lower levels is a differentiator. More so now than ever!
  • When I hire: I look for people who understand why the abstraction exists.
  • The student who debugged CAN bus at midnight? They get it.
  • Your mentorship doesn't end at DCMP or Worlds. It can last a lifetime.
// What we're really teaching return Stream.of(   "persistence",   "debugging",   "reading the docs",   "asking for help",   "shipping under pressure",   "thinking critically" ).map(Mentor::growEngineer)  .collect(Collectors    .toList());
// 08 · session.close()

An incredible year.
An incredible community.
No joy like lighting the spark.

Show up. Say yes sometimes when every instinct says no.
Trust that your students will surprise you.

return GraciousProfessionalism.always();
01
← → or space to navigate