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.

  1. Everything is code

    An introduction to the idea that code is just text that can be read like any other document.

    Free preview
  2. Humans in the loop

    How human judgment shapes code, and why that matters when reading it.

  3. Who is this for

    An overview of who benefits most from developing deliberate code-reading skills.

  4. You have everything you need

    Why your existing reading abilities transfer directly to reading code.

  5. The five modes of reading

    An overview of the five reading modes covered in this course.

  6. What is cognitive load?

    How cognitive load affects your ability to read and understand code.

  7. Bounded context simplified

    A practical explanation of bounded contexts and why they aid comprehension.

  8. Abstraction vs Concretion

    The difference between abstract and concrete code, and why it matters for reading.

  9. Why layering matters

    How architectural layers shape the structure you see when reading a codebase.

  10. Understanding scope

    How variable and function scope influences what code is visible where.

  11. Jobs To be Done

    Applying the Jobs-to-be-Done lens to understand what code is trying to accomplish.

  12. Schema formation

    How your brain builds a mental model (schema) of code over repeated exposure.

  13. Ergonomics

    Setting up your workspace for effective, sustainable code reading.

  14. GitHub and OPP

    Using GitHub and other people's projects as a code-reading practice ground.

  15. Package Managers

    How package managers work and what their files tell you about a project.

  16. Virtual Environments

    What virtual environments are and how to interpret them when exploring a project.

  17. What the heck is an IDE?

    A tour of the IDE features that make code reading faster and less error-prone.

  18. Intro to Previewing

    How to form a high-level mental model of a codebase before reading any code.

  19. Conventions and cognitive load

    How naming and structural conventions reduce the cognitive load of previewing.

  20. Case Study: Joplin

    A worked example of previewing an open-source project from scratch.

  21. Previewing with Copilot

    Using AI assistance to accelerate the previewing phase.

  22. Mental Model: What are the bounded contexts?

    Identifying the major bounded contexts in a codebase during previewing.

  23. Mental Model: What are the architectural layers?

    Mapping the architectural layers of a codebase at a glance.

  24. Mental Model: What jobs does the software do?

    Framing a codebase in terms of the jobs it performs for users.

  25. Previewing with Visual Code

    Practical previewing techniques using Visual Studio Code.

  26. Intro to Skimming

    How to extract structure and hierarchy from code without reading it in detail.

  27. Outline view

    Using the outline view to skim a file's structure at a glance.

  28. Type hierarchy

    Reading type hierarchies to understand how a codebase is organized.

  29. Call hierarchy

    Using call hierarchy views to trace how functions are connected.

  30. Minimaps

    How minimaps give you a bird's-eye view of a file's shape and density.

  31. Folding

    Using code folding to collapse detail and see structure.

  32. Intro to Scanning

    How to locate specific information in a codebase without reading everything.

  33. Fuzzy find

    Using fuzzy file search to navigate to the right file quickly.

  34. Symbol search

    Finding function and class definitions with symbol search.

  35. Find references

    Tracing how a symbol is used across a codebase with Find References.

  36. Find concrete classes

    Locating concrete class implementations in a class hierarchy.

  37. Find concrete methods

    Finding concrete method implementations when reading an interface or abstract class.

  38. Bookmarks

    Using editor bookmarks to mark and revisit key code locations.

  39. Intro to Detailed Reading

    When and how to shift into detailed reading mode for deep code comprehension.

  40. Zen mode

    Using distraction-free editor modes to support focused detailed reading.

  41. Syntax highlighting

    How syntax highlighting reduces parsing effort when reading code carefully.

  42. Parameter hints

    Using parameter hints to understand a function's signature while reading.

  43. Error warnings

    Reading inline error and warning markers as part of code comprehension.

  44. Programmer Comments

    How to read and evaluate programmer comments and documentation.

  45. Copilot "Explain this"

    Using AI explanation tools to accelerate understanding of unfamiliar code.

  46. Intro to Critical Reading

    How to move from comprehension to evaluation when reading code.

  47. Human Review

    How to read code with the intent of evaluating its correctness and quality.

  48. Pull Requests

    Reading pull requests as a unit of change with context, not just as diffs.

  49. Comparing Things

    Techniques for comparing code versions, implementations, and approaches.

  50. Pull Request Review Exercise

    A practical exercise in reading and reviewing a pull request critically.

  51. Git logs

    Reading git history to understand how code evolved and why changes were made.

  52. Programmer Intent

    Distinguishing what code does from what the programmer intended it to do.

  53. Tests

    Reading tests as a specification and a source of insight about the code under test.

  54. Debugging

    Using the debugging process as a structured form of critical code reading.