Aaron Bauer on Teaching Software Engineering in the Age of AI

How learning goals, active practice and editor design shape engineering education when models can generate the code.

ABAaron BauerGuest · Software Engineer and Developer Educator
Channel
Jane Street
Published
Sep 23, 2026
Video
1:36:37
Read
11 min
Original
English
Open on YouTube
Scroll to read and the video shrinks to the bottom-right corner. Captions follow your reading language.
Reading languageAvailable in 2 languages
You're reading the original English.
SUMMARY

In 30 seconds

Ron Minsky and Jane Street developer educator Aaron Bauer discuss teaching, developer tools and the effects of AI on learning and code review. Bauer describes defining observable learning goals, reducing cognitive load and redesigning intern training around testing, design and reviewing generated code, while acknowledging that effective AI-assisted learning is still being worked out.

  1. 1Live teaching and active learningMinsky and Bauer value the attention generated by a live lecture, while Bauer recommends breaking it up with questions and practice.
  2. 2A developer educator roleJane Street combines engineering practice with curriculum and teaching expertise to support its distinctive tools and workflows.
  3. 3Measure changing workflowsBauer’s editor telemetry showed slightly more jumps to definition per user than expected, suggesting a need to investigate how engineers understand code.
  4. 4Learning when models can write the exerciseBauer argues that implementing a technique at least once can build understanding for evaluating later generated work.
  5. 5Observable learning goalsA concrete goal specifies what learners can do afterward, guiding practice and helping evaluate the program.
  6. 6Rebuilding intern trainingThe new curriculum emphasizes testing, design, stakeholder conversations and code review, with continued adjustments to task scope and pacing.

Takeaways

  1. Live lectures can focus attention, especially when combined with active exercises and discussion.
  2. Timely feedback and repeated practice help learners correct misconceptions.
  3. Developer educators can combine technical practice with sustained attention to teaching.
  4. Generating plausible code has become cheaper, making comprehension, testing and review central concerns.
  5. Learning goals should describe observable capabilities and guide exercises and evaluation.
  6. AI-era exercises must balance hands-on understanding, realistic tool use and a scope learners can actually review.
FULL TEXT

Read the edited text by chapter

Transcript only
01

From astronomy to teaching

Bauer discovers programming through astronomy and studies human-computer problem solving. He moves into teaching at Carleton.

Ron Minsky introduces Aaron Bauer, a Jane Street software engineer and developer educator. Bauer’s work combines programming with teaching other engineers, a combination he has pursued since his first experiences in computing.

Bauer says computers fascinated him as a child, but programming seemed intimidating. At a six-week summer science program in New Mexico, he used telescope observations and Python to calculate an asteroid’s orbit. He discovered that programming was the part he most enjoyed.

His small-town high school did not offer AP computer science, so he took an online North Carolina course taught by a retired teacher. Before graduate school he returned to the science program as a teaching assistant, wrote exercises and lectured on binary search trees. That experience got him hooked on teaching.

Minsky notes the long connection between scientific computing and computer science. Bauer recalls working on a Fortran simulation of asteroid or comet impacts derived from code for modeling atomic explosions. They discuss the mixture of sophisticated computing and practical, domain-driven programming in scientific work.

A computer graphics course inspired Bauer to apply to PhD programs, though he learned that much rendering research had moved to industry. His work eventually included game design and computer science education, ending in a dissertation on human-computer problem solving in the scientific game Foldit.

Bauer describes Foldit as combining players’ big-picture geometric insight with automated local optimization. Players, often without biochemistry backgrounds, helped resolve structures that had resisted laboratory work and later designed new proteins. He assumes such known structures would have been included in AlphaFold’s training, but does not claim direct knowledge of its dataset.

His graduate research also had a cognitive psychology element: how people learn, think and apply skills. Wanting teaching to be his primary work, he joined Carleton College in Minnesota. After two in-person quarters, the pandemic moved four quarters online.

02

Online teaching and the live classroom

Pandemic teaching prompts experiments with flipped classes and interaction. The speakers discuss lectures, note-taking and reasoning on paper.

Bauer initially used the text-only model of his own online AP course to accommodate students with limited internet access. Feedback quickly showed that what had worked for him did not work for everyone. He experimented with flipped classrooms, synchronous sessions and small working groups.

In a flipped classroom, students watch a prepared lecture before class, leaving shared time for exercises, discussion and individual tutoring. Bauer ultimately preferred mixing interactive activities with instruction during class rather than relying entirely on the flipped model.

Minsky argues that live lectures are often underrated: a lecture is also a compelling human performance. Bauer agrees that a live presenter can focus attention and encourage note-taking, while warning that an uninterrupted hour of talking can lose students. He favors active learning, pausing for questions, discussion or short problems.

They discuss note-taking as a way to process and distill material, even when notes are never reread. Both recall claims that handwriting helps more than typing but do not cite a particular study. Bauer adds that a screen between student and teacher also brings distractions.

Minsky describes teaching his children programming on paper. Without a computer to run the code, they had to reason about what an expression meant instead of simply trying changes until it worked. Bauer agrees that paper can push beginners to think about program behavior.

03

Feedback and mastery

Recordings and automated feedback remain useful after returning to class. Bauer discusses repeated attempts and cautious use of model feedback.

After returning to the classroom, Bauer kept recording lectures. At Carleton, students still attended and could use recordings after missing class or revisit a timestamped explanation. The experience may vary by institution or lecturer, they note.

He also retained automated quizzes and homework feedback. Feedback arriving a week or two later can be too late, after students have moved on. Automated checks allowed repeated attempts and a limited form of mastery learning: students could keep working until they demonstrated competence.

Minsky recalls that advanced mathematics sometimes only made sense months later. Bauer says mastery learning is often applied more fully with younger students; university courses need more targeted use and deadlines. His weekly quizzes permitted multiple attempts and kept the best result, with shuffled questions and answers to make understanding more practical than brute force.

Asked about LLM feedback, Bauer sees potential in bounded tasks such as code style alongside tests and linters. He also warns that model feedback can contain misleading false positives, so students need careful framing or a lower error rate.

04

Developer educators at Jane Street

The firm creates a role combining technical practice and education. Bauer and Minsky discuss hiring and growing training needs.

Bauer moved to Brooklyn to be near family and found Jane Street hiring for an unusual educator-programmer role. Minsky explains that the firm already invested in teaching its distinctive trading domain, language and tools, but wanted people with sustained educational expertise who also practiced engineering in the same environment.

The intended split is roughly half programming and half education, including curricula, teaching and helping colleagues become better teachers. Minsky says hiring for this intersection has been harder than expected. Bauer notes that experienced educators often work in academia and may not want a substantial engineering role in industry.

Bauer says making education a first-class responsibility allows sustained attention. Needs continue to grow: new employees learn OCaml, experienced staff must learn changes to the language, and everyone needs to understand new AI tools. The firm is also interested in educators for programming languages and machine learning.

Minsky wants engineers to move among tools such as OCaml and Python rather than being confined to one language. Bauer suggests embedding educators in technical teams, including AI assistance, while Minsky notes that different technical placements would also broaden the educators’ collective experience.

05

Editors as the engineer’s home base

The editor integrates code review and other tools. Large diffs, indexing and Python notebooks introduce technical challenges.

Bauer works on the editors team in tools and compilers, supporting VS Code, Emacs, Neovim, code indexing and the OCaml language server. One project made it easier to split and arrange work for separate reviews in Iron, Jane Street’s feature-management tooling.

Minsky explains that a Jane Street “feature” is roughly analogous to a commit or pull request depending on context. Iron supports chains resembling stacked pull requests, but had awkward diff editing. Different tooling choices have produced a distinct development and review culture.

At Jane Street the editor is the engineer’s home base: code review, version control and other interactions are integrated there and navigable by keyboard. Reviews use comments in the editor, but a reviewer can also directly make a fix. Minsky notes that this collaborative style can feel strange to people used to separate pull-request interfaces.

Bauer describes problems of scale in general-purpose editors. Very large diffs can cause VS Code’s diff algorithm to hang and block other diff views. Integrations can violate assumptions about buffers and make search behave strangely, while richer OCaml indexing can consume so much memory that an index no longer fits on available machines.

Python notebooks are another difficult area. Different notebook tools have different limitations, and introducing a replacement that lacks a previous feature can leave multiple systems to maintain. Code written in notebooks may also be hard to share as a library; the team is exploring its own solution after performance and usability problems.

06

Building internally and working upstream

The team weighs custom solutions against shared open-source tools. Integrating languages and concurrency adds complexity.

Minsky worries about overbuilding internally but values control when external notebooks do not fit the firm’s needs. Conversely, the team is replacing some custom Emacs functionality with upstream alternatives. Bauer says upstream code benefits from other users, maintainers and better compatibility with standard extensions.

The boundary between native editor languages and Jane Street’s OCaml extensions remains challenging, particularly for asynchronous work in Emacs. Bauer hopes to reduce awkward dependencies and potential deadlocks. Minsky notes that combining concurrency systems across languages is hard even when each has a reasonable model.

07

AI, editors and understanding code

Telemetry helps investigate changing workflows. The speakers consider review aids and more participatory ways to work with coding models.

Agentic AI changes developer tools, but Bauer still sees the editor as a useful home base. Engineers may type less code while continuing to inspect diffs, review changes, navigate definitions and understand what has been produced.

Bauer is using editor and language-server telemetry to understand actual workflow changes instead of guessing. He expected per-user jumps to definition to decline if models wrote more code; the data appeared to show a slight increase instead, perhaps because people need to read more code. He treats this as an observation and possible explanation, not a settled conclusion.

Minsky says creating a plausible-looking change has become much cheaper, while verifying it remains difficult or may be harder: generated code can look polished and still be broken. He wants better tools for understanding, including LLM explanations and conventional evidence such as definitions, inferred types and test results.

Bauer tried Claude Code’s learning output style, which sometimes leaves a task for the human to complete. Stopping to read the generated code and implement a piece helped him build a mental model. He wants to explore workflows that cultivate understanding during generation, not just explanations after the fact.

Bauer compares reviewing generated code with reviewing another person’s finished change: unlike writing code incrementally, the reviewer must reconstruct a mental model from the result. Minsky sees an analogy with taking notes and suggests that active participation may improve understanding.

They consider new review aids. Minsky imagines custom visualizations generated for a particular change. Bauer suggests dividing code into logical sections with precomputed explanations available during review; these are ideas to explore, not deployed solutions.

08

Teaching when AI can do the work

Bauer and Minsky discuss practice, productive struggle and the difficult choice of exercise scope. They explore models as tutors.

Bauer describes a testing workshop on property-based testing and deterministic control of time. When an LLM can write an example using a new library, educators must decide what knowledge is essential and what is merely boilerplate. So far, he thinks implementing a technique oneself at least once helps build the understanding needed to assess later generated code.

They have not settled how to teach effective AI use while the tools change quickly. Minsky worries that learners need to struggle with material and can now ask a model to solve most exercises immediately. The range of tasks both manageable for a learner and hard for a model to solve in one shot may be very narrow.

Bauer has encountered the other side of this trade-off: tasks large enough to require real work on generated code can be too large to review and polish in the time available. He expects experimentation with a combination of activities done with and without models, each serving a defined learning purpose.

For OCaml Boot Camp, Bauer considers models that ask questions, provide a skeleton while leaving substantial implementation to the learner, or act as tutors giving hints. Minsky emphasizes preserving the learner’s opportunity to do difficult thinking. Bauer connects this to his earlier research on patient automated tutors available outside a teaching assistant’s office hours.

09

Boot camps and learning goals

Bauer describes onboarding, further teach-ins and the value of observable goals. Cognitive load and active learning shape the curriculum.

New engineers normally start with OCaml Boot Camp: a sequence of exercises building a client-server application, learning core libraries and receiving mentor code review. Production Boot Camp then introduces deployment, monitoring and configuration. Together they occupy roughly the first two weeks.

Bauer says the materials introduce concepts in the context of a specific feature or need, rather than introducing a tool and searching for a problem it solves. This gives learners a reason to use the tool and a hook for understanding it.

During the first year, engineers can take further teach-ins on testing, OCaml performance, debugging, advanced functional programming, Bonsai and market data. Bauer anticipates a course-catalog approach, with a manager or team selecting relevant material and self-study available when needed.

Minsky asks how to balance practical tools with conceptual lessons. Bauer says experienced colleagues already solve difficult problems in their daily work, so a canned puzzle can be less useful than guided practice with tools they can apply. Concepts still matter, but fuller understanding often develops when the tools are used on real desk problems.

Minsky recalls Bauer asking for the learning goals of a testing workshop. Bauer defines them as observable changes in what students can do after an activity. “Understand property-based testing” is vague; writing a property-based test for a specified kind of input is more concrete and measurable.

Specific goals determine both what to include and what to leave out. Educators can design exercises that practice the desired capabilities, then identify the lectures, code and background needed to support them. Minsky adds that checking whether students can do those things also evaluates the teaching program itself.

Bauer applies cognitive-load ideas to OCaml Boot Camp. An earlier version introduced OCaml, a new editor, version control and code review at once. The revised sequence begins with small OCaml exercises, then introduces the editor and version control separately before combining them.

Active learning is another principle. New intern materials use small-group discussion, design activities and practice talking with stakeholders, so students interact and work through material rather than simply hearing it.

10

Rebuilding the internship curriculum

Intern projects and training now put greater emphasis on design, tests and review. Bauer discusses lessons from early iterations and future changes.

The intern curriculum changed because AI tools could complete a former four-week introductory project with a prompt. Bauer says projects are becoming more open-ended and realistic, with design and requirements gathering; producing code alone is a less useful signal than before.

The new material also teaches effective use of LLM tools and their failure modes. Exercises need to be substantial enough that a model does not produce a complete solution immediately, but small enough for interns to inspect the output. Testing receives more attention, including writing a strong suite for a database-backed application.

Interns examine good and bad design documents and practice gathering requirements from full-time staff role-playing stakeholders. Code review, formerly uncommon for interns, becomes part of their work. Three days of mid-internship training use prepared changes, reference comments, group discussion and peer review before mentors send real features.

Asked how the redesign has gone, Bauer says the team is learning. If an exercise asks interns to generate more code than they can polish, it undermines the lesson that they own and must carefully review it. Oversized review examples with too many problems likewise make important issues hard to spot.

He values the new interactive structure: interns work in groups of four and regularly discuss their use of models and the problems they see in generated tests, often with mentors. He expects future revisions to adjust scope, pacing and expectations for people who progress at different rates.

An early version emphasized multitasking and vibe coding first; the team decided that set the wrong tone and moved high-quality testing to the start. Bauer expects more considered guidance on workflows as experience grows. Small-group discussions help participants exchange what works, while both speakers note that the tools change quickly and may behave differently for different users.

More from this channel

1:48:29EN
JSJane Street· Oct 16, 2026How AI Is Changing Programming: John Krazit and Ron MinskyRon Minsky, John Krazit · Jane StreetJane Street’s AI tooling lead and the Signals and Threads host examine agent infrastructure, security, code review and the changing experience of writing software.Coding agentsDeveloper productivityEvals+2
9 slides1:05:45EN
JSJane Street· Sep 11, 2026Cyrus Omar on Live Programming and a Computational Commons for Humans and AICyrus OmarA demonstration of Hazel shows how immediate feedback, structured collaboration and carefully scoped permissions could support people and AI agents working together.Programming LanguagesHuman-AI CollaborationDeveloper workflows & testing+2
1:25:00EN
JSJane Street· Sep 2, 2026Eric Mannes on Turning Messy External Data Into Trading ResearchRon, Eric Mannes · Jane StreetFrom commodity futures and an Excel risk system to point-in-time datasets and AI, Eric Mannes explains the domain knowledge behind data engineering at Jane Street.Data quality & curationDeveloper workflows & testingInvesting+2
7 slides1:16:29EN
JSJane Street· Aug 26, 2026Grant Sanderson and Alok Puranik: Positional Encodings Through Group TheoryGrant Sanderson, Alok Puranik · 3Blue1BrownStarting with assumptions about attention, they derive matrix exponentials and connect rotations, decay and Jordan blocks to RoPE and ALiBi.Transformers & attentionMathematicsML fundamentals+1
27:39EN
JSJane Street· Aug 21, 20263Blue1Brown and Jane Street on Trading, Machine Learning and CultureGrant Sanderson, Nitya, In Young, Craig, Alok · 3Blue1BrownGrant Sanderson talks with Jane Street colleagues about market making, shared compute, research and the paths that brought them to the firm.Machine LearningFintechCompany Culture+2
4:41EN
JSJane Street· Jul 6, 2026Inside Jane Street’s Internship: Projects, Mentorship and LearningCody · Jane StreetInterns and employees describe collaborative interviews, learning finance from the basics, and working on projects used by the firm.CareersCompany CultureMachine Learning+1