New Cohort Starts:

Donate
← Back to the skill map
Programming Languages/Interface & language

JavaScript Core

25 micro-topics in Programming Languages, each with the evidence that proves you have it and the written reason behind every link. Before you start, it rests on 1 other domain. Downstream, it holds up 10 domains.

25 topics  ·  depth 0–7 of 16  ·  31 internal links  ·  1 in  ·  16 out

Before you start

Load-bearing links first. Each one says what in this domain rests on what outside it, and why.

TypeScript Types

1 link

supporting

Organize code into modules rests on Annotate types

Type-aware imports are easier once annotations exist.

What you will be able to do

In prerequisite order. Each idea names the artifact that closes it, the market demand that put it on the map, and what it stands on.

Depth 0  ·  conceptual  ·  unassisted  ·  M05 §4.1

Declare variables deliberately

Chooses const, let and knows why not var

Evidence
Uses const by default and justifies each let
Market anchor
JavaScript
Rests on
Nothing sits under this one — it is an entry point.

Depth 1  ·  conceptual  ·  unassisted  ·  M05 §4.1

Reason about primitive types and coercion

Predicts what == and typeof will do

Evidence
Explains a coercion bug rather than guessing
Market anchor
JavaScript
Rests on
load-bearing

Declare variables deliberately

Types describe what variables hold.

Depth 1  ·  procedural  ·  unassisted  ·  M05 §4.5

Manipulate arrays

Applies mutating and non-mutating methods

Evidence
Transforms a dataset without a loop where a method fits
Market anchor
JavaScript
Rests on
load-bearing

Declare variables deliberately

An array is a value bound to a name.

Depth 1  ·  procedural  ·  unassisted  ·  M05 §4.6

Work with objects

Creates, accesses, and iterates key-value data

Evidence
Models a record and reads it safely
Market anchor
JavaScript
Rests on
load-bearing

Declare variables deliberately

An object is a value bound to a name.

Depth 2  ·  procedural  ·  unassisted  ·  M05 §4.1

Manipulate strings

Applies template literals and string methods

Evidence
Formats and parses text without a library
Market anchor
JavaScript
Rests on
load-bearing

Reason about primitive types and coercion

Strings are a primitive type.

Depth 2  ·  procedural  ·  unassisted  ·  M05 §4.2

Use operators and precedence

Applies comparison, logical and ternary operators

Evidence
Writes conditions that read correctly and short-circuit
Market anchor
JavaScript
Rests on
load-bearing

Reason about primitive types and coercion

Operator behavior depends on types.

Depth 2  ·  procedural  ·  unassisted  ·  M05 §4.6

Destructure and spread

Pulls values out and copies structures

Evidence
Writes a function signature that destructures its input
Market anchor
JavaScript
Rests on
load-bearing

Work with objects

Destructuring pulls values out of objects and arrays.

load-bearing

Manipulate arrays

Destructuring pulls values out of objects and arrays.

Depth 2  ·  conceptual  ·  unassisted  ·  M09 §9.3

Use classes and inheritance

Models behavior with classes where it fits

Evidence
Chooses composition or inheritance and defends it
Market anchor
JavaScript
Rests on
load-bearing

Work with objects

A class is a template for objects.

Depth 3  ·  procedural  ·  unassisted  ·  M05 §4.3

Control flow with conditionals and loops

Applies if, switch, for, while, break and continue

Evidence
Implements branching logic that terminates
Market anchor
JavaScript
Rests on
load-bearing

Use operators and precedence

Conditions are expressions.

Depth 3  ·  conceptual  ·  scaffolded  ·  M09 §9.3

Apply immutability patterns

Updates without mutating shared state

Evidence
Fixes a bug caused by shared mutation
Market anchor
JavaScript
Rests on
load-bearing

Work with objects

Immutability is about how you update structures.

load-bearing

Destructure and spread

Spread is the tool for non-mutating updates.

Depth 4  ·  procedural  ·  unassisted  ·  M05 §4.4

Write and call functions

Declares, parameterizes and returns

Evidence
Refactors repeated logic into a tested function
Market anchor
JavaScript
Rests on
load-bearing

Control flow with conditionals and loops

Functions contain the control flow you can already write.

Depth 5  ·  conceptual  ·  unassisted  ·  M05 §4.4

Use arrow functions and this

Knows how binding differs

Evidence
Fixes a broken this without a workaround
Market anchor
JavaScript
Rests on
load-bearing

Write and call functions

Arrow functions are an alternate form.

Depth 5  ·  conceptual  ·  unassisted  ·  M05 §4.4

Reason about scope and hoisting

Predicts where a binding is visible

Evidence
Explains a reference error from the code alone
Market anchor
JavaScript
Rests on
load-bearing

Write and call functions

Scope is created by functions.

Depth 5  ·  conceptual  ·  unassisted  ·  M05 §4.5

Transform with map, filter and reduce

Expresses transformations declaratively

Evidence
Replaces a nested loop with a readable chain
Market anchor
JavaScript · functional programming
Rests on
load-bearing

Manipulate arrays

These are array methods.

load-bearing

Write and call functions

They take functions as arguments.

Depth 5  ·  procedural  ·  unassisted  ·  M05 §4.8

Handle errors

Applies try, catch, finally and throws typed errors

Evidence
Fails with a message that identifies the cause
Market anchor
JavaScript
Rests on
load-bearing

Write and call functions

Errors propagate out of function calls.

Depth 5  ·  procedural  ·  unassisted  ·  M05 §4.9

Schedule work with timers

Uses setTimeout and setInterval correctly

Evidence
Debounces an input without leaking timers
Market anchor
JavaScript
Rests on
load-bearing

Write and call functions

Timers take callbacks.

Depth 5  ·  conceptual  ·  unassisted  ·  M05 §4.9

Work with promises

Creates, chains and settles asynchronous values

Evidence
Sequences dependent async calls without nesting
Market anchor
JavaScript
Rests on
load-bearing

Write and call functions

A promise wraps a deferred function result.

supporting

Schedule work with timers

Callback pain is what motivates promises.

Depth 5  ·  representational  ·  unassisted  ·  M09 §9.3

Organize code into modules

Imports and exports, statically and dynamically

Evidence
Splits a file into modules with no circular imports
Market anchor
JavaScript
Rests on
load-bearing

Write and call functions

Modules export functions and values.

supporting

Annotate types · TypeScript Types

Type-aware imports are easier once annotations exist.

Depth 5  ·  conceptual  ·  scaffolded  ·  M09 §9.3

Write higher-order functions

Passes and returns functions

Evidence
Builds a reusable wrapper around a function
Market anchor
Functional programming
Rests on
load-bearing

Write and call functions

Higher-order functions take and return functions.

supporting

Transform with map, filter and reduce

These methods are the first higher-order functions you meet.

Depth 6  ·  conceptual  ·  scaffolded  ·  M05 §4.4

Use closures

Captures state in a returned function

Evidence
Builds a counter or memoizer with closure
Market anchor
JavaScript
Rests on
load-bearing

Reason about scope and hoisting

A closure captures its enclosing scope.

Depth 6  ·  meta  ·  unassisted  ·  M05 §4.8

Read a stack trace

Locates the origin of a runtime failure

Evidence
Names the failing line from the trace alone
Market anchor
Debugging
Rests on
load-bearing

Handle errors

A trace is a record of calls that threw.

Depth 6  ·  procedural  ·  unassisted  ·  M05 §4.9

Write async and await

Expresses asynchronous flow linearly

Evidence
Fetches and renders remote data with errors handled
Market anchor
JavaScript
Rests on
load-bearing

Work with promises

Await consumes promises.

Depth 6  ·  conceptual  ·  scaffolded  ·  M09 §9.2

Coordinate concurrent promises

Applies Promise.all, race and allSettled

Evidence
Parallelizes independent calls and handles partial failure
Market anchor
JavaScript
Rests on
load-bearing

Work with promises

These are promise combinators.

Depth 7  ·  procedural  ·  unassisted  ·  M05 §4.9

Call HTTP APIs from JavaScript

Uses fetch with methods, headers and bodies

Evidence
Consumes a real API including its error cases
Market anchor
JavaScript · REST
Rests on
load-bearing

Write async and await

Fetch returns a promise.

load-bearing

Work with objects

Requests and responses are objects.

Depth 7  ·  conceptual  ·  guided  ·  M09 §9.2

Use iterators and generators

Produces values lazily and asynchronously

Evidence
Consumes an async stream with for-await
Market anchor
JavaScript
Rests on
load-bearing

Write async and await

Async iteration builds on await.

load-bearing

Control flow with conditionals and loops

A generator is a function whose loop yields.

What rests on this domain

Everything downstream that names an idea here as a prerequisite, grouped by where it lives.

Algorithms & Data Structures

3 links

load-bearing

Solve array and string problems rests on Manipulate arrays

Array problems require array manipulation.

load-bearing

Solve problems with hash maps and sets rests on Work with objects

Hash-based solutions use objects and maps.

load-bearing

Think recursively rests on Write and call functions

Recursion is a function calling itself.

React

4 links

load-bearing

Compose components rests on Write and call functions

A component is a function that returns markup.

load-bearing

Synchronize with effects rests on Write async and await

Fetching inside an effect is asynchronous.

load-bearing

Handle errors at component boundaries rests on Handle errors

Boundaries handle thrown errors.

supporting

Manage component state rests on Use closures

Hook behavior makes more sense once closures do.

TypeScript Types

2 links

load-bearing

Annotate types rests on Reason about primitive types and coercion

You annotate the types JavaScript already has.

load-bearing

Narrow types rests on Control flow with conditionals and loops

Narrowing follows control flow.

AI Interfaces

1 link

load-bearing

Consume server-sent events in the browser rests on Write async and await

Stream consumption is asynchronous iteration.

The DOM

1 link

load-bearing

Select elements from script rests on Write and call functions

DOM APIs are function calls.

Next.js

1 link

load-bearing

Fetch data on the server rests on Call HTTP APIs from JavaScript

Server fetching is the same API in a different place.

Frontend Testing

1 link

load-bearing

Unit test JavaScript rests on Write and call functions

You unit test functions.

HTTP

1 link

supporting

Explain the request-response model rests on Call HTTP APIs from JavaScript

You have already made requests; this names what happened.

Production Python

1 link

supporting

Write async Python rests on Write async and await

The await model transfers between languages.

Testing Foundations

1 link

supporting

Reason about the testing pyramid rests on Write and call functions

Test placement is easier once you have code worth testing.

Retool. Retrain. Relaunch.

375 ideas. 17 weeks. No tuition, ever.

Vets Who Code is a veteran-run 501(c)(3). The accelerator is free, remote, and we don’t take a share of your first paycheck.

Free · Remote · 17 weeks · EIN 86-2122804