Skip to content

Instantly share code, notes, and snippets.

@glebec
Forked from joedotjs/gist:2807153d0d6dcdfde00d
Last active December 6, 2021 04:09
Show Gist options
  • Save glebec/c8139b51feb86005504810b8f58a696c to your computer and use it in GitHub Desktop.
Save glebec/c8139b51feb86005504810b8f58a696c to your computer and use it in GitHub Desktop.
Books and Resources

Books

JavaScript in General

Douglas Crockford | Beginner/Intermediate

Legendary book, a must-read for any Javascript programmer at least once. Goes into the basics of Javascript with the assumption that the reader is an experienced programmer already, coming from another language or already understands a fair bit about Javascript itself. Very good review of basics and more advanced concepts (like scope/closure, functions as first class objects, etc).

Stoyan Stefanov | Intermediate

A fairly small book about what design patterns are and how to implement/make use of them in Javascript. Lots of practical use of closures, IIFEs and other advanced strategies. Beginning to feel a little dated however.

Addy Osmani | Intermediate

Is there an echo in here? Having déjà vu? Another O'Reilly book on JS patterns, this one is free online and covers many more generic programming patterns as applied to JS (instead of patterns specific to JS). It takes some inspiration from the "Gang of Four" book (see Design Patterns elsewhere in this list).

Kyle Simpson | Intermediate/Advanced

A review of the Javascript's basic features, but in a very deep and different way. Will give you insight into how a Javascript engine thinks about the language, parses text, etc. Will be recommended to you again and again -- it is a more complex read but extremely insightful.

Henrik Joreteg | Intermediate

This book is moreso about writing Javascript that not only works, but is elegant and maintainable by yourself and your collaborators. It will not dwell on how Javascript itself works or its features, but moreso on patterns to be used for solving problems in sane, controllable ways. A good read for someone looking to understand these problems and start exploring the craft of writing good code.

John Resig | Beginner/Intermediate

A fairly large book, and lots about cross-browser DOM differences. Addresses a large range of concepts from Javascript features, how Regex is used, how the DOM is wrangled.

Reg Braithwaite | Advanced

A heavy, fast-paced book about Javascript and design pattern concepts. The writing is complex, a bit unforgiving at times, but brilliant. Addresses different strategies for object composition, building different constructs and code clarity/reusability.

David Herman | Beginner/Intermediate

Broken into 68 different concepts and "did-you-knows" about Javascript, easy to pick up and read for 10 minutes and put down again. Very well-written and exposes a lot of different quirks of Javascript.

Angus Croll | Beginner/Intermediate

A fun read! Takes a problem and solves in a variety of different ways as if the solutions had been written in the style of famous authors, including, as you might expect, Ernest Hemingway. Interesting to see the different ways a single problem could be solved as well as what a "different style" of programming could possibly look like.

Brian Lonsdorf, aka Professor Frisby | Beginner/Intermediate/Advanced

Don't let the title fool you — while this is a self-published gitbook, it goes far beyond "adequate." Lonsdorf guides any knowledgeable JavaScripter through using the language in ever more abstract, algebraic, functional patterns — transforming the way you will think about processing information and structuring applications. Best paired with his quirky (and free) Egghead video course, Professor Frisby Introduces Composable Functional JavaScript.


React & Redux

Cássio de Souza Antonio | Beginner/Intermediate

The book teaches you how to use React completely, and learn best practices for creating interfaces in a composable way. Additionally, It also covers tools and libraries in the React ecosystem (such as React Router and Flux/Redux architectures). Each topic is covered clearly and concisely and is packed with the details you need to learn to be truly effective.

Node/Back-end Programming

Jim R. Wilson | Beginner/Intermediate

A short but dense book, goes over the concepts of Node, what makes it different from other platforms, and its basics like CommonJS, building servers, using TCP sockets. Recommended for review and some new concepts.

Kristina Chodorow | Beginner/Intermediate/Advanced

This book starts off simple and moves quickly into advanced concepts of MongoDB like indexing, sharding, scaling. Good for those interested in why MongoDB is used, advanced concepts and how it differs from other database systems.

Eric Evans | Advanced

Not about Javascript, Node or MongoDB, but a classic software book about strict ideas of architecture which are very relevant to back-end programming and database theory. Not for the faint of heart, but an excellent read for those ready to learn about the importance of application architecture at scale.


Generic Programming

Steve McConnell | Advanced

A legendary book, my (Joe's) favorite book about software (Gabriel likes it too). It is not Javascript specific—in fact, at one point, it literally calls Javascript a toy language, which is okay because the book is fairly old. It addresses almost EVERYTHING relevant to programming, including how to think about software, name variables, create modules, communicate with other programmers, communicate with non-programmers about software, write a function, you name it.

The ultimate point and goal of this book is to distinguish what skills and knowledge allow programs to work and what makes those programs good. Not for the faint of heart: It is MASSIVE, the writing is very dry and your ambition should not be to read it cover-to-cover. But it is a fantastic book with tons of insight and will make you a better programmer one day.

Harold Abelson et al | Advanced

Another legend, often referred to simply as SICP. Based on the LISP dialect Scheme, but with many language-agnostic lessons. This book addresses effective ways to think about software, specifically the mental models necessary to understand the organization and operations of software, including abstraction, code flow and composition.

Gayle Laakmann McDowell | Intermediate

An instant classic, reviews common whiteboarding problems used in industry interviews. Great for data structures and algorithms practice, good preparation and companion with REACTO in senior phase.

Steven Skiena | Intermediate/Advanced

No JS, but a very clearly-written and enjoyable reference for diving deeper into data structures and algorithms. Examples are in pseudocode / simple C but are not too challenging to follow. A large book that will take a long time to finish but will definitely improve your understanding of fundamental computer science topics.

Alternatively, CLRS is a rigorous and advanced CS text with a focus on mathematical proofs, and is considered the ultimate reference on this topic.

Erich Gamma et al | Intermediate/Advanced

A classic known as the "Gang of Four" or just "GoF" for its four authors, this book has long served as an example of thinking in terms of architecture and information flow. The focus is (as the title suggests) on OOP techniques, and parts of it are beginning to feel dated, but GoF is still quoted and referred to frequently due to the many timeless solutions codified within.

Charles Petzold | Beginner

A terrific and approachable book which can be enjoyed by readers with zero or significant coding experience alike. "Code" walks the reader through first principles — signals, information, encodings, telegraphs — all the way up through transistors, logic gates, integrated circuits, machine language, assembly, graphics, and more. Great for anyone who wants a concise and easy introduction to everything lower-level than a typical programming language.

Bruce Tate | Beginner

In this book you'll get a hands-on tour of Clojure, Haskell, Io, Prolog, Scala, Erlang, and Ruby. Whether or not your favorite language is on that list, you'll broaden your perspective of programming by examining these languages side-by-side.


Industry/Interpersonal

Andrew Hunt et al

Another legend. Once again, not Javascript specific, this book is concerned moreso with how programmers communicate with their peers and others -- through what they write and what they say. Much shorter than the above, and the writing is loose and funny. Once again, the goal is to explore and teach how to be an effective programmer as opposed to a programmer that simply gets things to work.

Mickey W. Mantle et al

This book is does not instruct on programming at all: it is about the industry, a programmer's day-to-day, how effective programming teams function and how to be a good manager of software teams. Even if you are not planning to be a manager, this advice will apply to your understanding of YOUR manager/lead developer and the dynamics of the team around you, as well as give you interpersonal tips for your job search.

More job search advice, focusing on the process, but also including coding examples in C, C++, C# and Java.

Frederick P. Brooks Jr.

A famous perspective on how software engineering projects scale (or rather, don't), and the management strategies intended to cope with the effects of many people working on large systems. Geared heavily towards leadership roles, but even new programmers can benefit from considering these challenges.


Angular.js

Shyam Seshadri et al | Beginner/Intermediate

More of an introduction to Angular, goes over the basics you would expect. Written by some of the core Angular team.

Ari Lerner | Intermediate/Advanced

The most commonly recommended book on Angular, is very thorough about a bunch of different concepts, including advanced topics of bootstrapping, how directives work under the hood, etc.. Can sometimes make assumptions about reader's knowledge and is usually better read by hopping around chapters.

@Evidsson
Copy link

It's a good list of books, thanks. I think that reading is a good way to get new knowledge, but it's also important to apply them in practice. I also think that people should read not only professional literature but also fiction. Recently I've done some interrogations on the logical fallacy in the crucible and decided to read this book. I can say that it's really interesting and help to escape from the reality.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment