At Least Skim The Manual
Tags: programming, javascript, webdev, beginners
Published: 2024-01-09 00:44:30

I first learned JavaScript by reading the Netscape JavaScript Reference manuals many years ago. They have undergone a number of transitions and transformations, this content lives on as MDN [JavaScript Reference](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference) and [Tutorials](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide).

While the language and associated Web APIs contain far more content than in the late 90s, I still recommend browsing through MDN to new developers.

## Known Unknowns

I don't expect any developer to know the entire spec from memory, especially as it grows and changes so fast. Just knowing these pages exist and browsing through the titles provides a chance to learn about features that sound interesting and, more importantly, to later spark a memory that something _might exist_. You don't have to master or even learn all the features, but having a vague idea of these _known unknowns_ — things you know you don't know – can sometimes be the difference between minutes of targeted reading and hours or days of research.

## Keeping Pace

The language changes quickly these days. There are browsers implementing different proposed solutions before they are part of the specification. Some of these [have been deprecated](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Deprecated_and_obsolete_features) over time, and knowing what to remove can be important, too.

Every year in June [the ECMAScript specification](https://tc39.es/ecma262/) is updated. Conveniently, [the Introduction](https://tc39.es/ecma262/#sec-intro) has a list of what is included in each annual update.

Then there are [proposals for new features](https://github.com/tc39/proposals). Some proposals move through quickly, though some of these will never make it into the spec. They can be available months or years in advance through Babel plugins and other tools. Be aware that these allow you to write code that _may never become valid JavaScript_, but they can be useful for simplicity and readability, so long as you understand the requirements.

And when dealing with new features or broad browser support concerns, there's nothing like [Can I use...](https://caniuse.com) to ensure support.

## Web APIs

In addition to pure JavaScript, there are [hundreds of Web APIs documented at MDN](https://developer.mozilla.org/en-US/docs/Web/API). These APIs cover everything from the DOM to Web Workers with great detail.

Scrolling through that list may seem daunting at first, but realize that there are "categories" with lots of members, so the list isn't as large as it might seem.

* **Audio**: 22
* **CSS**: 64
* **GPU**: 35
* **RTC**: 39
* **SVG**: 113

These API docs can be a huge time saver as they cover capabilities we use less frequently than JavaScript itself. You may never use the [Beacon API](https://developer.mozilla.org/en-US/docs/Web/API/Beacon_API) for guaranteed send-and-forget analytics or user monitoring data, but knowing it exists can save a lot of time if you need to guarantee a request happens when a page is unloaded.

## NodeJS

NodeJS is a hugely popular application and it provides [excellent, detailed documentation](https://nodejs.org/docs/latest-v20.x/api/index.html). These docs can be a crucial time saver, especially making sure to reference the appropriate version. It can be helpful to compare the age of answers on platforms like StackOverflow against release versions to see if your Node release takes different options or provides different solutions.

## Site Search Shortcuts

These days I regularly use the browser's built-in support for quick search/search shortcuts ([Chrome](https://support.google.com/chrome/answer/95426), [Firefox](https://support.mozilla.org/en-US/kb/how-search-from-address-bar), [Safari](https://support.apple.com/en-is/guide/safari/ibrwe75c2a3c/mac)) by prefixing my requests with `mdn `. This helps me avoid links to W3Schools or GeeksForGeeks, or whatever site has managed to ~game the search results~ assert search authority and land higher up in the results than _the manual_.

## Always Another Resource

There are so many great sources of information out there and tools to improve the developer experience of documentation. [Dash](https://kapeli.com/dash) can make some of these online resources local for instant search and access on-the-go, if you prefer.

Sharing resources can help us all become better, more efficient developers. Let us know what tools and websites you use to stay up to date or learn more!