How to Read Code
A practical course on five modes of reading code — previewing, skimming, scanning, detailed reading, and critical reading — so you can navigate any codebase with confidence.
- Free preview
Everything is code
An introduction to the idea that code is just text that can be read like any other document.
Humans in the loop
How human judgment shapes code, and why that matters when reading it.
Who is this for
An overview of who benefits most from developing deliberate code-reading skills.
You have everything you need
Why your existing reading abilities transfer directly to reading code.
The five modes of reading
An overview of the five reading modes covered in this course.
What is cognitive load?
How cognitive load affects your ability to read and understand code.
Bounded context simplified
A practical explanation of bounded contexts and why they aid comprehension.
Abstraction vs Concretion
The difference between abstract and concrete code, and why it matters for reading.
Why layering matters
How architectural layers shape the structure you see when reading a codebase.
Understanding scope
How variable and function scope influences what code is visible where.
Jobs To be Done
Applying the Jobs-to-be-Done lens to understand what code is trying to accomplish.
Schema formation
How your brain builds a mental model (schema) of code over repeated exposure.
Ergonomics
Setting up your workspace for effective, sustainable code reading.
GitHub and OPP
Using GitHub and other people's projects as a code-reading practice ground.
Package Managers
How package managers work and what their files tell you about a project.
Virtual Environments
What virtual environments are and how to interpret them when exploring a project.
What the heck is an IDE?
A tour of the IDE features that make code reading faster and less error-prone.
Intro to Previewing
How to form a high-level mental model of a codebase before reading any code.
Conventions and cognitive load
How naming and structural conventions reduce the cognitive load of previewing.
Case Study: Joplin
A worked example of previewing an open-source project from scratch.
Previewing with Copilot
Using AI assistance to accelerate the previewing phase.
Mental Model: What are the bounded contexts?
Identifying the major bounded contexts in a codebase during previewing.
Mental Model: What are the architectural layers?
Mapping the architectural layers of a codebase at a glance.
Mental Model: What jobs does the software do?
Framing a codebase in terms of the jobs it performs for users.
Previewing with Visual Code
Practical previewing techniques using Visual Studio Code.
Intro to Skimming
How to extract structure and hierarchy from code without reading it in detail.
Outline view
Using the outline view to skim a file's structure at a glance.
Type hierarchy
Reading type hierarchies to understand how a codebase is organized.
Call hierarchy
Using call hierarchy views to trace how functions are connected.
Minimaps
How minimaps give you a bird's-eye view of a file's shape and density.
Folding
Using code folding to collapse detail and see structure.
Intro to Scanning
How to locate specific information in a codebase without reading everything.
Fuzzy find
Using fuzzy file search to navigate to the right file quickly.
Symbol search
Finding function and class definitions with symbol search.
Find references
Tracing how a symbol is used across a codebase with Find References.
Find concrete classes
Locating concrete class implementations in a class hierarchy.
Find concrete methods
Finding concrete method implementations when reading an interface or abstract class.
Bookmarks
Using editor bookmarks to mark and revisit key code locations.
Intro to Detailed Reading
When and how to shift into detailed reading mode for deep code comprehension.
Zen mode
Using distraction-free editor modes to support focused detailed reading.
Syntax highlighting
How syntax highlighting reduces parsing effort when reading code carefully.
Parameter hints
Using parameter hints to understand a function's signature while reading.
Error warnings
Reading inline error and warning markers as part of code comprehension.
Programmer Comments
How to read and evaluate programmer comments and documentation.
Copilot "Explain this"
Using AI explanation tools to accelerate understanding of unfamiliar code.
Intro to Critical Reading
How to move from comprehension to evaluation when reading code.
Human Review
How to read code with the intent of evaluating its correctness and quality.
Pull Requests
Reading pull requests as a unit of change with context, not just as diffs.
Comparing Things
Techniques for comparing code versions, implementations, and approaches.
Pull Request Review Exercise
A practical exercise in reading and reviewing a pull request critically.
Git logs
Reading git history to understand how code evolved and why changes were made.
Programmer Intent
Distinguishing what code does from what the programmer intended it to do.
Tests
Reading tests as a specification and a source of insight about the code under test.
Debugging
Using the debugging process as a structured form of critical code reading.