Skip to content
Fox photography representing the Roadmaps section

Roadmaps

JavaScript Developer Roadmap

From syntax to asynchronous behaviour, modules and tooling: the JavaScript that makes every framework afterwards feel straightforward.

  • 5 stages
  • 5-8 months part time
  • Framework independent

Realistic timeline

5-8 months at 10-15 hours per week

Stages

5 in order

Mentorship

Details below

The language itself, in depth - the foundation every framework on this site depends on. Work through the stages in order, finish the milestone for each one before moving on, and treat the project ideas as the evidence that a stage is genuinely complete.

Learning order

The stages, in sequence

Each stage assumes the one before it. Skipping ahead is the most common reason people stall.

  1. Syntax and the mental model

    4-6 weeks

    Write correct small programs and understand why they behave as they do.

    Skills

    • Types, coercion and why == and === differ
    • let, const and block scope
    • Functions, parameters, defaults and return values
    • Conditionals, loops and truthiness
    • Template literals, destructuring, spread and rest
    • Reading the console and the debugger properly

    Milestone

    Predict the output of an unfamiliar snippet before running it, and be right most of the time.

    Project ideas

    • Small exercises: FizzBuzz, string manipulation, array statistics
  2. Objects, arrays and functions in depth

    6-8 weeks

    Work fluently with data structures and treat functions as values.

    Skills

    • Objects, references and copying versus mutating
    • Array methods: map, filter, reduce, find, some, every, sort
    • Closures and why they matter in practice
    • this, call, apply, bind and arrow function behaviour
    • Prototypes, classes and inheritance
    • Error handling with try/catch and custom errors

    Milestone

    Transform a messy nested data structure into the shape a UI needs, using only array methods.

    Project ideas

    • A data-processing script over a JSON file
    • A tiny state container in fifty lines
  3. The browser and the DOM

    4-6 weeks

    Make a page respond to people without any framework.

    Skills

    • Selecting, creating and updating elements
    • Events, bubbling and delegation
    • Forms, validation and the constraint API
    • Storage: localStorage, sessionStorage and their limits
    • Performance basics: reflow, repaint, debouncing and throttling
    • Accessibility of dynamic content: focus, roles, announcements

    Milestone

    An interactive application with no dependencies that survives a keyboard-only user.

    Project ideas

    • A to-do app with persistence
    • A modal and menu system built from scratch
  4. Asynchronous JavaScript

    5-7 weeks

    Understand the event loop well enough to reason about order of execution.

    Skills

    • The call stack, task queue and microtask queue
    • Callbacks, promises and async/await
    • Promise.all, allSettled, race and when each applies
    • fetch, request cancellation with AbortController, and timeouts
    • Error handling across async boundaries
    • Race conditions and how to avoid them

    Milestone

    Explain the output order of a snippet mixing setTimeout, a promise and synchronous code.

    Project ideas

    • A search box with debouncing and cancellation
    • A retrying API client with backoff
  5. Modules, tooling and quality

    5-7 weeks

    Work on JavaScript the way professional teams do.

    Skills

    • ES modules, import/export and circular dependency pitfalls
    • npm, semantic versioning and lockfiles
    • Bundlers and what a build step actually does
    • Testing with Vitest or Jest, including async tests
    • ESLint and Prettier as a shared standard
    • TypeScript fundamentals as the natural next step

    Milestone

    A published npm package or a library with tests, documentation and a changelog.

    Project ideas

    • Extract a utility from an old project and publish it properly

Mentorship

Mentorship Details Coming Soon

If you want to connect, please WhatsApp: 3265503569

One-to-one mentorship for the roadmaps on Fox Is Happy is being set up. Sessions will cover code review, project feedback, interview preparation and a learning plan matched to where you actually are - not where a generic curriculum assumes you are.

Pricing will be reasonable and listed clearly before you book - pay per session, with student-friendly rates planned. No subscriptions and no bundles you do not need.

Register interest

3265503569

WhatsApp only. Message on WhatsApp to register interest and be told first when places open.

Mention JavaScript Developer Roadmap in your message so the reply matches what you are working on.

Why depth in JavaScript pays for itself repeatedly

Frameworks change every few years. The language underneath does not, and every hour spent on it keeps returning value long after a particular library has been replaced.

The parts people skip, and regret skipping

Three topics account for most of the confusion in intermediate JavaScript: closures, the value of this, and the event loop. All three are skippable in the short term, because you can write working code without understanding them. All three become unavoidable the moment something behaves unexpectedly, which in a real project is roughly weekly.

Closures explain why a variable captured in a callback has the value it does. The rules around this explain why a method loses its context when passed as a handler. The event loop explains why your code ran in an order you did not expect. Spend the time once and a whole category of bugs becomes readable.

Reference versus value

Objects and arrays are handled by reference, primitives by value. That single sentence causes more subtle bugs than any other feature of the language. Copying an array with the spread operator produces a new outer array whose contents are still the same references, so a "copy" of nested data is not independent. Understanding this properly is also what makes immutable update patterns in React feel obvious rather than arbitrary.

Common gotchas worth internalising
ExpressionResultWhy
0.1 + 0.2 === 0.3falseBinary floating point cannot represent 0.1 exactly
typeof null"object"A bug from 1995 kept for compatibility
[] == falsetrueLoose equality coerces both sides - use === instead
[10, 9, 1].sort()[1, 10, 9]Default sort compares strings, not numbers

Asynchronous code is where seniority shows

Anyone can await a fetch call. The distinguishing skills are handling the cases around it: cancelling a request that is no longer needed, running independent requests in parallel rather than in sequence, deciding whether one failure should fail the whole operation, and preventing a slow earlier response from overwriting a fast later one. Those four problems appear in every real application and are almost never covered in an introductory tutorial.

How to practise deliberately

  1. 1Before running a snippet, write down what you expect. Being wrong is the useful part.
  2. 2Rebuild one small library feature yourself - a debounce, a deep clone, a simple event emitter.
  3. 3Read the source of a small open source utility and work out why it is written that way.
  4. 4Explain a concept out loud or in writing. Gaps become obvious immediately.
  5. 5Solve the same problem twice: once imperatively, once with array methods.

Build a debugging habit early

The fastest-improving learners share one habit: they read the error before they search for it. A JavaScript error message names the type of problem, the value involved and the line it happened on, and three quarters of the time that is enough. When it is not, the debugger beats scattered logging - set a breakpoint, step through, and watch the values change rather than guessing at them from the outside. Learning your browser devtools properly takes an afternoon and saves that time back within a week.

When to move on

You are ready for a framework when you can build an interactive application with no dependencies, debug it from the error message rather than by searching, and explain why your code runs in the order it does. That standard is higher than most tutorials imply and much lower than perfection. After that, the React Developer Roadmap is the usual next step, and the Frontend Developer Roadmap places both in a complete skill set. If the server side appeals, Node.js is the shortest transition and the Backend Developer Roadmap covers it.

Frequently asked questions

Should I learn TypeScript instead of JavaScript?

Learn JavaScript first. TypeScript is a type layer on top of it, so without the underlying language you cannot tell which layer an error comes from. Add it once JavaScript feels comfortable.

How do I know when I am ready for a framework?

When you can build an interactive app with no dependencies, debug it from the error message, and explain the execution order of asynchronous code.

Keep going

Related resources

Hand-picked pages that pair well with this one.

Roadmaps

React Developer Roadmap

Learn React in the order that prevents the classic mistakes: state design, effects, data fetching, then frameworks.

Open

Roadmaps

Frontend Developer Roadmap

A realistic path from first HTML page to employable frontend developer, in the order that actually works.

Open

Roadmaps

Backend Developer Roadmap

From your first HTTP endpoint to services that handle data, auth, failure and load without falling over.

Open