💻 Code Reading & Description
10 exercise sets. The skill every developer needs in code reviews, pair programming, and technical interviews — explaining code clearly in English.
Example: Describe this function
{exampleSnippet} This function takes another function and a delay in milliseconds as arguments. It returns a new function that, when called, waits for the specified delay before executing the original function. If the returned function is called again before the delay expires, the timer resets. This prevents the original function from being called too frequently — a pattern called "debouncing".
- Beginner
Describing Functions & Methods
Read a function and describe what it does in plain English. Cover parameters, return values, edge cases, and side effects.
- Intermediate
Classes & Objects
Describe a class definition in English: its purpose, properties, methods, and relationships with other classes.
- Beginner
Reading Error Messages
Read exception messages, stack traces, and compiler errors. Explain in plain English: what went wrong, where, and why.
- Advanced
Describing Algorithms
Read a sorting or searching algorithm implementation. Explain the logic in plain English using sequence language: "first", "then", "finally".
- Intermediate
SQL Queries Explained
Read a SQL SELECT statement with JOINs and WHERE clauses. Describe in plain English what data this query retrieves.
- Advanced
Describing Regular Expressions
Read a regex pattern and describe what it matches in plain English. Critical for code reviews and documentation.
- Intermediate
API Responses & Data Structures
Read a JSON API response. Describe the data structure, identify nested objects, and explain what each field means.
- Intermediate
Reading Config Files
Read YAML and configuration files — CI/CD pipelines, app configs, docker-compose — and describe them in plain English for documentation and onboarding.
- Advanced
Docker & Kubernetes Configs
Read Dockerfiles and Kubernetes manifests (Deployments, Services). Explain multi-stage builds, resource limits, and probes to your team.
- Advanced
TypeScript Interfaces & Types
Read TypeScript interfaces, generic types, discriminated unions, and mapped types. Describe them clearly for code reviews and wiki documentation.
Useful language for describing code
Describing purpose
- "This function takes X and returns Y."
- "This class is responsible for managing…"
- "This method checks whether…"
- "This query retrieves all records where…"
Describing sequence
- "First, it validates the input…"
- "Then, it calls the database…"
- "If X is true, it returns Y; otherwise…"
- "Finally, it cleans up the resources."
Describing errors
- "This error occurs when…"
- "The stack trace shows that the error was thrown in…"
- "The root cause is…"
- "This is a NullPointerException, which means…"
Part of These Learning Guides
Code reading and description skills are featured in these role-specific learning guides:
Frequently Asked Questions
Why is code reading an English skill for IT professionals?
Code reading in English involves more than syntax — it means understanding variable and function names (which convey intent), reading inline comments and docstrings, interpreting commit messages and PR descriptions, understanding code style guides (camelCase vs. snake_case naming conventions), and comprehending error messages. Non-native speakers who can read code but miss its English annotations miss critical context.
What vocabulary helps when reading and discussing code?
Code discussion vocabulary: refactor (restructure without changing behaviour), idiomatic (follows language conventions), boilerplate (repetitive standard code), abstraction (hiding complexity behind an interface), coupling (interdependency between modules), side effect (function modifies state outside its scope), immutable (cannot be changed after creation), deterministic (same input always gives same output).
What are common English patterns in naming conventions?
Naming patterns: is/has/can prefix for booleans (isActive, hasPermission, canDelete), get/set/fetch for accessors (getUserById, setStatus, fetchData), create/build/make for construction (createSession, buildQuery), handle/process/on for event handlers (handleClick, onSubmit, processRequest), validate/check/verify for guards (validateEmail, checkPermission). Understanding these patterns helps you infer function purpose from names.
How do I read and understand stack traces in English?
Stack trace reading: the error message is on the first line ("TypeError: Cannot read property 'id' of undefined"), caused by location follows ("at processRequest (server.js:42:15)"), the stack shows the call chain from most recent to oldest. Key phrases: "caused by", "at line", "expected [X] but got [Y]", "uncaught exception", "unhandled promise rejection". Your code appears between the framework/library calls.
What English is used in code docstrings and JSDoc?
Docstring conventions: "@param name {type} - description", "@returns {type} - what the function returns", "@throws {ErrorType} - when the exception is raised", "@deprecated - Use [alternative] instead", "@example - usage code". Docstring language uses imperative mood: "Returns the user by ID" (not "This function returns..."). "Computes", "Validates", "Fetches", "Transforms" — active, precise verbs.
What code comments should I be able to understand?
Comment types in real codebases: TODO/FIXME/HACK markers, workaround comments ("This is a workaround for Safari bug #1234"), context comments explaining non-obvious decisions ("Using polling instead of WebSockets due to corporate proxy restrictions"), deprecation notices ("@deprecated since v2.3 — use createToken() instead"), and licence headers. Understanding these is essential for maintaining legacy code.
How do I describe what code does in a code review?
Code description phrases: "This function iterates over the users array and filters out inactive accounts", "The middleware validates the JWT token before passing the request to the handler", "This class encapsulates the database connection logic", "The early return on line 12 prevents processing if the input is null", "This refactor extracts the validation logic into a separate helper."
What vocabulary is used when discussing design patterns?
Design pattern vocabulary: Singleton (one instance), Factory (object creation abstraction), Observer (event subscription), Decorator (add behaviour dynamically), Strategy (interchangeable algorithms), Repository (data access abstraction), Facade (simplified interface to complex system). Usage: "We're using the Repository pattern here to abstract the database layer."
How do I ask about code I don't understand professionally?
Professional questions about code: "Could you walk me through what this function is doing?", "I'm not sure I understand the intent here — could you add a comment?", "What's the expected behaviour when X is null?", "Is there a reason we're not using [standard approach] here?", "I see this pattern in a few places — is there a shared utility I should use instead?" Curious, not critical.
What are regex patterns and how do I discuss them in English?
Regex discussion: "This regex validates email format", "The pattern [A-Z]{3}-\d{4} matches ticket IDs like ABC-1234", "The lookahead assertion ensures the match is followed by...", "This captures the first group — the domain name", "The quantifier {2,5} means between 2 and 5 characters." Regex is notorious for being hard to read — good comments explaining what a regex matches are valuable.