Curated watch path · 10 videos
Programming Classics Worth Rewatching
This programming classics route follows ten enduring talks from abstraction and deliberate design through refactoring, API boundaries, runtime behavior, performance measurement and distributed-systems testing.
Who this is for
Working developers, students and technical leads who want transferable ways to reason about software instead of framework-specific tips.
Before you start
Comfort reading code is enough. The talks use Scheme, Clojure, Ruby, Java, Elm and JavaScript, but the route focuses on ideas that cross language boundaries.
How this programming classics route was selected
The sequence starts with how programmers form abstractions, moves through complexity and design boundaries, then connects code to runtime behavior, measurement and production testing.
The independent site operator reviewed the October 31, 2026 source records for direct topic fit, learning order, evergreen status and positive Hacker News recommendation history. Titles, summaries, levels and labels come from the public dataset and may contain model-generated errors. This is an editorial ordering of source records, not a claim that every video was watched end to end. Read the source methodology and limits, or report a mismatch or broken video.
What the route connects
The route is meant to give you a more precise way to discuss abstractions, interfaces and runtime behavior, then connect those ideas to code you already maintain.
How to study it
- Bring one current design problem to each talk, such as a brittle abstraction, unclear API or failure that is hard to reproduce.
- Write down the problem the speaker identified before adopting the proposed solution; a classic talk is still context, not a rulebook.
Programming classics in a deliberate sequence
-
↗lecture · intro
Lecture 1A | MIT 6.001 Structure and Interpretation, 1986
Start with programming as the construction of processes and reusable abstractions.
11 positive HN recommenders across 9 recommendation months
-
↗talk · general
Hammock Driven Development - Rich Hickey
Learn to spend deliberate time understanding the problem before producing code.
12 positive HN recommenders across 11 recommendation months
-
↗talk · intermediate
"Simple Made Easy" - Rich Hickey (2011)
Build a vocabulary for recognizing accidental complexity and ideas that have been complected.
14 positive HN recommenders across 14 recommendation months
-
↗talk · intermediate
RailsConf 2014 - All the Little Things by Sandi Metz
Watch those principles applied to a concrete refactoring where duplication can beat the wrong abstraction.
15 positive HN recommenders across 15 recommendation months
-
↗talk · intermediate
How To Design A Good API and Why it Matters
Turn local design lessons into stable interfaces, boundaries and compatibility decisions.
12 positive HN recommenders across 12 recommendation months
-
↗talk · intermediate
"Making Impossible States Impossible" by Richard Feldman
Model data so invalid states cannot be represented in the first place.
9 positive HN recommenders across 13 recommendation months
-
↗talk · intermediate
Ruby Conf 12 - Y Not- Adventures in Functional Programming by Jim Weirich
Stretch your understanding of recursion and functional abstraction through a live derivation.
17 positive HN recommenders across 18 recommendation months
-
↗talk · intermediate
What the heck is the event loop anyway? | Philip Roberts | JSConf EU
Connect language-level code to the runtime model behind callbacks and asynchronous behavior.
16 positive HN recommenders across 14 recommendation months
-
↗talk · intermediate
"Performance Matters" by Emery Berger
Learn why benchmarks can mislead and how to measure the effect of an optimization.
12 positive HN recommenders across 10 recommendation months
-
↗talk · intermediate
"Testing Distributed Systems w/ Deterministic Simulation" by Will Wilson
Finish with a production example of reproducible testing for rare distributed-system failures.
12 positive HN recommenders across 11 recommendation months
A checkpoint for your study notes
Try it: predict an asynchronous execution order
Use this independent exercise with the event-loop talk. Run it in a browser console; familiarity with function calls and console.log is enough.
- Write down the expected output before running the code. Identify the synchronous calls, Promise callback and timer callback. Explain why a zero-delay timer cannot interrupt the synchronous code.
- Write out your reasoning before opening the answer below.
console.log('A');
setTimeout(() => console.log('D'), 0);
Promise.resolve().then(() => {
console.log('B');
});
console.log('C');Show the answer and checks
In the browser, expect A, C, B, D. The current script finishes, then the Promise microtask runs, followed by the timer task. Changing the timer to 100 ms preserves this example’s order; it does not guarantee an exact execution time.
Open the event-loop talk · Check MDN’s execution model reference ↗
An original site exercise, checked against the linked reference; not the speaker’s assignment or a viewing transcript. Checked .