A list of books 📚and articles 📝 for the discerning web developer to read.
<p align="center">
  <a href=" https://github.com/twhite96/js-dev-reads">
    <img src="https://res.cloudinary.com/twhiteblog/image/upload/v1552618235/books_kwrzd1.svg" alt="JavaScript Dev Reading List" />
  </a>
  <h1 align="center">The JavaScript Developer's Reading List</h1>
</p>

> A list of hand-picked books and articles for JavaScript developers

[![forthebadge](https://forthebadge.com/images/badges/built-by-developers.svg)](https://forthebadge.com) [![forthebadge](https://forthebadge.com/images/badges/built-with-love.svg)](https://forthebadge.com) [![forthebadge](https://forthebadge.com/images/badges/cc-0.svg)](https://forthebadge.com) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-green?style=for-the-badge)](http://makeapullrequest.com)
- [The problem :confused:](#the-problem-confused)
- [Solution :sunglasses:](#solution-sunglasses)
  - [Things to think about :thinking:](#things-to-think-about-thinking)
  - [Note :exclamation:](#note-exclamation)
- [Books :books:](#books-books)
  - [React & GraphQL](#react--graphql)
  - [Design patterns in JavaScript](#design-patterns-in-javascript)
  - [React Native](#react-native)
  - [Node](#node)
  - [Vue](#vue)
  - [Core concepts](#core-concepts)
  - [Software architecture](#software-architecture)
  - [Data structures and algorithms](#data-structures-and-algorithms)
  - [Miscellaneous](#miscellaneous)
- [Articles :memo:](#articles-memo)
  - [React](#react)
  - [Core concepts](#core-concepts-1)
  - [JavaScript misc.](#javascript-misc)
  - [Soft skills](#soft-skills)

## The problem :confused:

There are *a lot* of web development reading materials out there, from books to videos to blog posts. How can you know what is actually worth reading?

## Solution :sunglasses:

Here I have hand-picked web development/JavaScript books and articles I have personally read or have come highly recommended to me by other developers.

### Things to think about :thinking:

> Free books. Who doesn't like free books?! But if you are able, buy the book if it is offered as an option. No worries if you can't. But if it helps the devs continue to put out quality content then it is worth it.

---

### Note :exclamation:

> The stack most used in my list is React, GraphQL, and JavaScript, in no particular order. This is because it is the stack I am most familiar with. If you want to see Angular or Vue, [submit a pull request](https://github.com/twhite96/js-dev-reads/pulls). I would ask you to keep it to JavaScript technologies.

## Books :books:

Books are broken down by technology/stack or concept. Feel free to add yours by opening a [pull request](https://github.com/twhite96/web-dev-must-reads/pulls).


### React & GraphQL
- [FullStack React](https://www.fullstackreact.com) - Anthony Accomazzo, Ari Lerner, Clay Allsopp, David Guttman, Tyler McGinnis,Nate Murray
- [Learning React: A Hands-On Guide to Building Web Applications Using React and Redux (2nd Edition)](https://www.amazon.com/gp/product/013484355X/) - Kirupa Chinnathambi
- [Progressive Web Apps With React: Create Lightning Fast Web Apps With - Native Power Using React and Firebase](https://www.amazon.com/Progressive-Web-Apps-React-lightning-ebook/dp/B076SZY9P9) - Scott Domes
- [The Road to GraphQL](https://roadtoreact.com/course-details?courseId=THE_ROAD_TO_GRAPHQL) - Robin Wieruch
- [The Road to Learn React: Your Journey to Master Plain Yet Pragmatic React.Js](https://roadtoreact.com/) - Robin Wieruch
- [The Opinionated Guide To React](https://opinionatedreact.com/) - Sara Vieira

### Design patterns in JavaScript
- [Learning JavaScript Design Patterns: A JavaScript and jQuery Developer's Guide](https://addyosmani.com/resources/essentialjsdesignpatterns/book/) - Addy Osmani
- [JavaScript Patterns](http://shop.oreilly.com/product/9780596806767.do) - Stoyan Stefanov
- [Node.js Design Patterns](https://www.amazon.com/Node-js-Design-Patterns-server-side-applications-ebook/dp/B01D8HIIFU) - Mario Casciaro &
Luciano Mammino
- [Refactoring: Improving the Design of Existing Code (2nd Edition)](https://www.amazon.com/Refactoring-Improving-Existing-Addison-Wesley-Signature/dp/0134757599) - Martin Fowler
  - *The 2nd edition of this book's examples was rewritten from Java to JavaScript*

### React Native
- [Fullstack React Native: The Complete Guide to React Native](https://www.fullstackreact.com/react-native/) - Devin Abbott, Houssein Djirdeh, Anthony Accomazzo & Sophia Shoemaker

### Node
- [Express in Action](https://www.manning.com/books/express-in-action) - Evan M. Hahn
- [Node.js Handbook](https://flaviocopes.com/page/ebooks/) - Flavio Copes

*Books by Flavio require a newsletter sign up but I think it is worth it.*

### Vue
- [Vue.js in Action](https://www.manning.com/books/vue-js-in-action) - Erik Hanchett with Benjamin Listwon
- [Vue.js: Up and Running](https://www.oreilly.com/library/view/vuejs-up-and/9781491997239/) - Callum Macrae
- [Fullstack Vue](https://www.fullstack.io/vue/) - Hassan Djirdeh, Nate Murray, Ari Lerner

### Core concepts
- [Eloquent JavaScript, 3rd Edition: A Modern Introduction to Programming](https://eloquentjavascript.net/Eloquent_JavaScript.pdf) - Marijn Haverbeke
- [Maintainable JavaScript](https://www.amazon.com/Maintainable-JavaScript-Writing-Readable-Code/dp/1449327680) - Nicholas Zakas
- [You Don’t Know JS: Up & Going](https://github.com/getify/You-Dont-Know-JS/tree/1st-ed/up%20%26%20going) - Kyle Simpson
- [You Don't Know JS: Scope & Closures](https://github.com/getify/You-Dont-Know-JS/tree/1st-ed/scope%20%26%20closures) - Kyle Simpson
- [You Don't Know JS: This & Object Prototypes](https://github.com/getify/You-Dont-Know-JS/tree/1st-ed/this%20%26%20object%20prototypes) - Kyle Simpson
- [You Don't Know JS: Types & Grammar](https://github.com/getify/You-Dont-Know-JS/tree/1st-ed/types%20%26%20grammar) - Kyle Simpson
- [You Don't Know JS: Async & Performance](https://github.com/getify/You-Dont-Know-JS/tree/1st-ed/async%20%26%20performance) - Kyle Simpson
- [You Don't Know JS: ES6 & Beyond](https://github.com/getify/You-Dont-Know-JS/tree/1st-ed/es6%20%26%20beyond) - Kyle Simpson
- [Principles of Object-Oriented Programming in JavaScript](https://leanpub.com/oopinjavascript) - Nicholas Zakas
- [Understanding ECMAScript 6](https://leanpub.com/understandinges6) - Nicholas Zakas
- [Front-end Developer Handbook 2018](https://frontendmasters.com/books/front-end-handbook/2018/) - Cody Lindley
- [Javascript Allongé](https://leanpub.com/javascriptallongesix/read) - Reg “raganwald” Braithwaite
- [Professor Frisby's Mostly Adequate Guide to Functional Programming](https://mostly-adequate.gitbooks.io/mostly-adequate-guide/content/) - Dr. Boolean
- [Functional-Light JavaScript: Pragmatic, Balanced FP in JavaScript](https://leanpub.com/fljs) - Kyle Simpson
- [Secrets of the JavaScript Ninja](https://www.manning.com/books/secrets-of-the-javascript-ninja) - John Resig, Bear Bibeault
- [JavaScript Grammar](http://www.javascriptgrammar.com/) - Greg Sidelnikov
- [Complete Guide to Modern JavaScript](https://github.com/AlbertoMontalesi/The-complete-guide-to-modern-JavaScript) - Alberto Montalesi

### Software architecture
- [Programming JavaScript Applications: Robust Web Architecture With Node,HTML5, and Modern JS Libraries](https://www.amazon.com/Programming-JavaScript-Applications-Architecture-Libraries/dp/1491950293) - Eric Elliott
- [Building Progressive Web Apps: Bringing the Power of Native to the Browser](https://www.amazon.com/Building-Progressive-Web-Apps-Bringing-ebook/dp/B075HP52WY) - Tal Alter



### Data structures and algorithms
- [Introduction to Algorithms, 3rd Edition (The MIT Press)](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844)
- [Algorithms (4th Edition)](http://www.cs.bu.edu/~snyder/cs112/CourseMaterials/AlgorithmsChapterOne.pdf) - Robert Sedgewick & Kevin Wayne
  - *This book is included because it is a standard in understanding algorithms. Its choice of language is Java, but you can get the gist of how algorithms work in this book*.
- [Grokking Algorithms: An illustrated guide for programmers and other curious people](https://www.manning.com/books/grokking-algorithms) - Aditya Y. Bhargava

### Miscellaneous
- [Websocket: Lightweight Client-Server Communications](https://www.amazon.com/WebSocket-Client-Server-Communications-Andrew-Lombardi/dp/1449369278) - Andrew Lombardi
- [Learning Three.js: The JavaScript 3D Library for WebGL](https://www.amazon.com/Learning-Three-js-JavaScript-Library-Second/dp/1784392219) - Jos Dirksen
- [The Problem with Native JavaScript APIs](https://www.amazon.com/Problem-Native-JavaScript-APIs-ebook/dp/B008MYLMHG) - Nicholas Zakas


[Back to top ↑](#the-javascript-developers-reading-list)

## Articles :memo:

Articles are broken down into tech stack and soft skills, as well as core JavaScript concepts. Feel free to add yours by opening a [pull request](https://github.com/twhite96/web-dev-must-reads/pulls).


### React
- [How the “Golden Rule” of React components can help you write better code](https://medium.freecodecamp.org/how-the-golden-rule-of-react-components-can-help-you-write-better-code-127046b478eb) - Rico Kahler
- [How to Write Your Own Reusable React Component Library](https://itnext.io/how-to-write-your-own-reusable-react-component-library-a57dc7c9a210) - Connor Wilson
- [Data Visualization Libraries for React Developers in 2019](https://medium.com/dailyjs/data-visualization-libraries-for-react-developers-in-2019-a2b9c01262f8) - Veronika Rovnik
- [How to set up & deploy your React app from scratch using Webpack and Babel](https://medium.freecodecamp.org/how-to-set-up-deploy-your-react-app-from-scratch-using-webpack-and-babel-a669891033d4) - Nathan Sebhastian
- [I made a mistake implementing a React Hook and got a denial of service from my backend](https://dev.to/adamwknox/i-made-a-mistake-implementing-a-react-hook-and-got-a-denial-of-service-from-my-backend-5cji) -
DrKnoxy
- [How Does setState Know What to Do?](https://overreacted.io/how-does-setstate-know-what-to-do/) - Dan Abramov


### Core concepts
- [JavaScript Template Literals and styled-components](https://medium.com/@celsius/javascript-template-literals-and-styled-components-d18f97500ffd) - Celsius
- [How to make your future self happy by writing good docs](https://dev.to/gabcimato/how-to-make-your-future-self-happy-by-writing-good-docs-h8p) -
Gabriele Cimato


### JavaScript misc.
- [Performance vs Readability](https://blog.usejournal.com/performance-vs-readability-2e9332730790) - Riccardo Polacci
- [So you think you're just gonna `npm install`? Think again](https://dev.to/lirantal/so-you-think-youre-just-gonna-npm-install-think-again-lh4) -
Liran Tal


### Soft skills
- [How to be an awesome teammate from day one as a Junior Developer with these tips](https://medium.freecodecamp.org/how-to-be-an-awesome-teammate-from-day-one-as-a-junior-developer-with-these-tips-725f04000059) - Chris Blakely
- [Ace your first year as a junior developer with this advice](https://medium.freecodecamp.org/ace-your-first-year-as-a-junior-developer-with-this-advice-bbc68b6fe2d9) - Chris Blakely
- [The 14 habits of highly effective developers (Part 1)](https://dev.to/pavlosisaris/how-to-transition-from-junior-to-mid-level-developer-part-1-4gig) - Paul Isaris
- [The 14 habits of highly effective developers (Part 2)](https://dev.to/pavlosisaris/the-14-habits-of-highly-effective-developers-part-2-2io0) - Paul Isaris


[Back to top ↑](#the-javascript-developers-reading-list)

<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
[![All Contributors](https://img.shields.io/badge/all_contributors-10-orange.svg?style=flat-square)](#contributors)
<!-- ALL-CONTRIBUTORS-BADGE:END -->

<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<table>
  <tr>
    <td align="center"><a href="http://includejs.dev"><img src="https://avatars.githubusercontent.com/u/17270662?v=4" width="100px;" alt=""/><br /><sub><b>edieblu</b></sub></a></td>
    <td align="center"><a href="https://inspiredwebdev.com"><img src="https://avatars.githubusercontent.com/u/23130353?v=4" width="100px;" alt=""/><br /><sub><b>AlbertoM</b></sub></a></td>
    <td align="center"><a href="https://github.com/astv99"><img src="https://avatars.githubusercontent.com/u/5325089?v=4" width="100px;" alt=""/><br /><sub><b>Stephen Ham</b></sub></a></td>
    <td align="center"><a href="https://github.com/nyilynnhtwe"><img src="https://avatars.githubusercontent.com/u/26655762?v=4" width="100px;" alt=""/><br /><sub><b>NyiLynnHtwe</b></sub></a></td>
    <td align="center"><a href="http://aivan.io"><img src="https://avatars.githubusercontent.com/u/507464?v=4" width="100px;" alt=""/><br /><sub><b>Aivan Monceller</b></sub></a></td>
    <td align="center"><a href="https://yusadolat.netlify.app"><img src="https://avatars.githubusercontent.com/u/10975011?v=4" width="100px;" alt=""/><br /><sub><b>Yusuf Adeyemo</b></sub></a></td>
    <td align="center"><a href="https://github.com/webb04"><img src="https://avatars.githubusercontent.com/u/11618797?v=4" width="100px;" alt=""/><br /><sub><b>Jamie Webb</b></sub></a></td>
  </tr>
  <tr>
    <td align="center"><a href="https://github.com/Damiloju"><img src="https://avatars.githubusercontent.com/u/23188730?v=4" width="100px;" alt=""/><br /><sub><b>Dami</b></sub></a></td>
    <td align="center"><a href="http://www.djamba.com.br"><img src="https://avatars.githubusercontent.com/u/1785552?v=4" width="100px;" alt=""/><br /><sub><b>Leonardo Ruhland</b></sub></a></td>
    <td align="center"><a href="http://instagram.com/acharya.uzzol"><img src="https://avatars.githubusercontent.com/u/19649166?v=4" width="100px;" alt=""/><br /><sub><b>Ujjal Acharya</b></sub></a></td>
  </tr>
</table>

<!-- markdownlint-restore -->
<!-- prettier-ignore-end -->

<!-- ALL-CONTRIBUTORS-LIST:END -->