- The Changelog - [Twice a Month] - Interview
- Code Newbie - [Weekly] - Interview, Beginner
- JavaScript Jabber - [Weekly] - Interview
- Healthy Hacker - [Weekly] - Themes, Interview
- Shop Talk - [Weekly] - Themes, Interview
- Node Up - [Weekly] - Themes, Interview
- Developer Tea - [Weekly] - Themes, Interview
- Coder Radio - [Weekly] - Themes, Interview
- Syntax
The first set of books are highly recommended to start out with, the rest are more specific to certain situations and can be covered as needed, at your leisure.
- Code Complete : Steve McConnell
- Pragmatic Programmer : Dave Thomas
- JavaScript - The Good Parts by Douglas Crockford
- Design Patterns by the Gang of Four
- Introduction to Algorithms by Cormen, Leiserson, Rivest & Stein
- The C Programming Language: Brian W. Kernighan & Dennis Ritche
- Clean Code - Uncle Bob Martin
- Refactoring - Martin Fowler
- Release It! - Michael Nygard
- Team Geek - Brian Fitzgerald, Ben Sussman
- Lean UX
- The Art of Computer Programming by Donald Knuth
- Gödel, Escher, Bach by Douglas Hofstadter
- Test-Driven Development: By Example by Kent Beck (free PDF)
- Hackers: Heroes of the Computer Revolution by Steven Levy (free ebook)
- Zen and the Art of Motorcycle Maintenance by Robert M. Pirsig
- The Tao of Programming by Geoffrey James (free ebook)
- The Productive Programmer by Neil Ford
- Introduction to Functional Programming by Richard Bird
- Express.js Guide - Azat Mardanov (Leanpub)
- High Performance Browser Networking - Ilya Grigorik
https://github.com/chhantyal/influential-cs-books
Packt Free Book a Day
Free Dev Book each day!
Closures (credit: Bronson Avila, C23)
Open Letter to less experienced developers
What do older programmers know that younger ones don't
This is a must read: Binary Stars
Chrome Developers Channel
HTTP 203 and Designer vs Developer are really good series of videos to keep your eye out for.
TheNewBoston (credit: Baseem Missaghi, C19)
Top Algorithms for Coding Interviews
(There is a good list of talks about JS to be found here) I would recommend anything by Douglas Crockford, Paul Irish, Ryan Dahl, Brenden Eich first. The rest can be specific to certain topics so pick and choose things that are interesting to you.
- Node.js in 20 Minutes [00:23:08] by Edmond Meinfelder
- Crockford on JavaScript by Douglas Crockford (it's 10 hours long!)
- Really. JavaScript. [00:46:10] by Douglas Crockford
- Monads and Gonads [00:49:48] by Douglas Crockford
- Introduction to Node.js [00:58:18] by Ryan Dahl
- Is Node.js Better [00:41:43] by Brian Ford
- Creating A Scalable JavaScript Application Architecture [00:41:54] by Nicholas Zakas
- Large Scale JavaScript Application Architecture [00:50:40] by Dan Lynch
- Dissecting WebGL [01:11:04] by Justin Windle (you might want to take a look at the slides, you cannot really see them well)
- ES6 and 7, the future of JS [01:07:12] by Brendan Eich
- What the heck is the event loop anyway? [00:26:53] by Philip Roberts
- Build Production Ready Javascript Apps With Grunt [00:40:51] by Shai Reznik
- Javascript Combinators [00:54:55] by Reginald Braithwaite
- The Art of the Javascript Metaobject Protocol [00:58:06] by Reginald Braithwaite
- The Art of the JavaScript Metaobject Protocol: Duck Typing, Compatibility, and the Adaptor Pattern [00:26:29] by Reginald Braithwaite
- Functional programming patterns for the non-mathematician [00:29:58] by Brian Lonsdorf (beware; the pace is somewhat high)
- Hey Underscore, You're Doing It Wrong! [00:36:31] by Brian Lonsdorf
- Version 7: The Evolution of JavaScript [01:11:54] by Jafar Husain
- Redemption from Callback Hell [00:50:25] by Michael Jackson & Domenic Denicola
- Async JavaScript with Reactive Extensions [00:28:39] by Jafar Husain
- Immutability, interactivity & JavaScript [00:26:20] by David Nolen
- Raw WebGL [00:55:21] by Nick Desaulniers
- How to effortlessly integrate Three.js into your projects [00:22:00] by Jason Farrell (not as technical as the other *GL talks)
- Classical Inheritance is Obsolete - How to Think in Prototypal OO [00:43:18] by Eric Elliott
- Reactive Game Development For The Discerning Hipster [00:31:06] by Bodil Stokke
- If you wish to learn ES6/2015 from scratch, you must first invent the universe [00:25:49] by Ashley Williams
- Constraint programming in the browser [00:28:15] by Adam Solove
- Solving the real callback hell [00:21:54] by Tim Ruffles
- Benchmarking JavaScript [00:40:54] by Vyacheslav Egorov
- Improving Your Workflow With Code Transformation [00:30:18] by Sebastian McKenzie
- Go To There and Back Again [00:49:06] by Douglas Crockford
- The Birth & Death of JavaScript [00:28:44] by Gary Bernhardt
- Community.js [00:21:40] by Chris Williams
- An End to Negativity [00:27:26] by Chris Williams
- Life is Terrible: Let's Talk About the Web [00:32:07] by James Mickens
- Virtual Machines, JavaScript and Assembler [00:25:57] by Scott Hanselmann
- HTML5 Boilerplate [01:04:20] by Paul Irish
- Delivering the goods [00:23:25] by Paul Irish
- Parallax Performance [00:32:01] by Paul Irish
- React: Rethinking best practices [00:29:32] by Pete Hunt
- React: RESTful UI Rendering [00:36:15] by Pete Hunt
- Hacker Way: Rethinking Web App Development at Facebook [00:44:36] by Tom Occhino, Jing Chen & Pete Hunt (it starts pretty slow and marketingy, but gets much better over time)
- Reactive Programming Overview [00:09:18] by Jafar Husain (very concise and dense)
- Immutability: Putting The Dream Machine To Work [00:22:06] by David Nolen
- How I learned to Code by Making 180 websites in 180 days [00:22:03] by Jennifer De Walt
- How NOT to Measure Latency [00:42:59] by Gil Tene
- C10M - Defending The Internet At Scale [00:47:53] by Robert Graham
- Upgrading the Web [00:41:19] by Douglas Crockford
- Ilya Grigorik: Website Performance Optimization (Udacity course) [1:13:57]
- Build Things (credit: Baseem Missaghi, C19)
Jeff Atwood - Co-founder of StackOverflow
Joel Spolsky - Co-founder of StackOverflow and founder of Trello
Chad Fowler : Check out his books section and follow on twitter
Martin Fowler : Founder of ThoughtWorks
TJ Holowaychuk - Creator of Express.js!
Paul Irish - Google Chrome Developer Relations team
Paul Lewis - Google Chrome Developer Relations team
Ilya Grigorik - Google Chrome Developer Relations team
Addy Osmani - Google Engineer on the Chrome Team
Jake Archibald - Google Chrome Developer Relations team
Douglas Crockford - Evangelist for JavaScript Language
For some reason, all the developers tend to use Twitter and Blogs like Medium to get their thoughts and opinions out more so than anything else.
- @addyosmani - Google Engineer on the Chrome Team
- @defunkt
- @fat
- @jordwalke - Creator of React.js
- @mbostock - Creator of D3
- @sindresorhus
- @goloroden
- @jeresig - Creator of jQuery
- @rauschma
- @yakudoo
- @Mamboleoo
- @slicknet
- @rem
- @BrendanEich - Creator of the JS Language
- @thespite
- @mrdoob
- @tmrDevelops
- @keithclarkcouk
- @davidwalshblog
- @twholman
- @hakimel - Creator of Slides.com and the presentation framework DL uses
- @tjholowaychuk - Creator of Express.js
- @iamdevloper
- @PHP_CEO
- @50NerdsofGrey
- @SwiftOnSecurity
- @migueldeicaza
- @codinghorror - Co-founder of StackOverflow
- @thepracticaldev
- @spolsky - Creator of Trello
- @jonskeet
Ed Kim:
Try to learn one language in depth. What I mean by that is to learn it completely. Learn how the entire stack works. Learn how it's compiled to the microprocessor. Learn about the concurrency model it uses. Is it OOP? Imperitive? Functional Programming? Is it a statically type language or dynamically typed? What's the package management system it uses? What's the best practices? Who are the people to follow?
This make transitioning to another language much easier because the differences between languages is pretty small. Once you understand how to manipulate the data in one language, it's largely the same for all languages. Constructs such as for loops, arrays, hashes, etc are relatively the same across languages. Understanding the architectural differences between languages will be the single thing that differs between languages. (Static vs dynamically typed, single threaded vs multi-threaded, OOP vs functional vs imperative). Some languages will have quirks, python is whitespace based, Assembly is meant for the microprocessor specifically, LISP only has 3 methods (car, cdr, cons) but you could build anything from that, Haskell has only immuteable data, etc.
Ed Kim
The best way to become a better programmer is to write code. A. LOT. OF. CODE. Continue to build things that pique your interests, whether it's a desktop app with Electron or a new mobile app with React Native or Flutter, just keep building anything that interests you.
In between building things, spend a lot of time just reading code. If you use jQuery a lot, go read the source for jQuery. Or if you spend a lot time in Moment.js, Angular, React, lodash, or any other library you use often, go read up about how it works, then read the source code itself to see how developers with more experience than you built those concepts. Github and NPM are great places to start just reading how people turn concepts into code.
If you spend a lot of time learning about new (to you) concepts like Singleton patterns, or the Observer Pattern, you'll notice when they make sense to use in your own codebase. Reading about how other people have implemented these pattern give you a insight into the engineering challenges they've overcome to make these concept work in whatever language you're currently using.
Another good thing to keep up with is to build cool things that you've seen elsewhere. Did you see a cool animation on someone else's page? Try and recreate it yourself on your own page. There's a lot to learn in just trying to replicate other's work.
In the same vein, try to rebuild some functionality you've seen somewhere else. Never implemented a payment portal on a website? Build a demo website with Stripe built in and try to see if you can get test accounts to work. Never sent an email from the backend? Try and send a confirmation email whenever a test user creates an account. These will all be things you will be asked to write at some point in the future, if you can get ahead of it now, it'll be easier to implement when it's needed in your day job. Rip apart any application you can get your hands on and see if you can recreate small parts of it, or even the whole application yourself. Even if you don't get far, you'll still learn a lot along the way.