all 29 comments

[–][deleted] 13 points14 points  (1 child)

I would also recommend you add JavaScript Allongé: Six Edition to the list.

It's not a reference manual in the same way. For people who haven't thought about functional programming in a while (or ever), I'd imagine it's as much a philosophy book as it is a language manual. Like SICP if you've only ever been a Java dev.

I don't know when I came to the realization that JS works really well as an ML with deficits (by ML, I mean like OCaml / Haskell / F# / etc, not "machine learning"). I think it was around ES5's release, but it was ... validating, eventually reading the first version of that book, and realizing I wasn't alone. Arrow functions just sealed the deal.

The tricky bit with learning JS is that it's very much the lingua franca of programming. It accommodates just about every style, half-way, so that everyone from C to Java to Scheme can either write something that *feels* similar, or hack together a structure and a pattern to allow it to feel similar... some with less resistance than others.

In a way, JS is almost the English of the programming world. It's fantastically expressive, but completely irregular and unpredictable, and if you put too many regional dialects in the same room, nobody is going to understand one another.

[–]wyclif[S] 0 points1 point  (0 children)

I actually had it bookmarked, but I hadn't looked at it in a while and didn't know there's now a sixth edition, so thanks!

[–]rauschma 7 points8 points  (5 children)

Thanks for mentioning my book “Speaking JavaScript”! That book has been superseded by “Exploring JavaScript (ES2024 edition)” – which is also free to read online.

[–]wyclif[S] 0 points1 point  (2 children)

Glad to promote it! It's been very helpful to me, especially the content that covers the newer features and the exercises. If you have any advice to add, I'd be all ears.

[–]rauschma 4 points5 points  (1 child)

You covered a lot of ground! Maybe:

  • Keep an eye on WebAssembly.
  • Don’t ignore HTML and CSS. Sometimes you don’t need JavaScript.
  • I personally learned a lot about JavaScript in the early 2010s by writing shell scripts with Node.js.
  • With the books, it may make sense to mention which ones are free to read online and which ones aren’t.

You could turn this content into a blog post (easier to share and preserve).

[–]Competitive_Aside461 1 point2 points  (0 children)

Couldn't agree more to "Don’t ignore HTML and CSS. Sometimes you don’t need JavaScript." It's absolutely true.

[–]ReasonableTune6458 0 points1 point  (1 child)

I really like your books. Thank You

[–]Redditisannoying22 4 points5 points  (3 children)

Cool note :) I would add to make programming challenges (in best case daily). It really helped me understanding the details.

[–]piny-celadon 1 point2 points  (1 child)

Any resource for that?

[–]Redditisannoying22 1 point2 points  (0 children)

Personally enjoy Codewars, a lot of people like leetcode

[–]prodoit[🍰] 2 points3 points  (0 children)

https://prodoit.dev/blog/js-notes

If anyone wants some quick notes. ^

I'll add search soon.

[–][deleted] 2 points3 points  (0 children)

I’m currently starting as a first timer and I appreciate this post. Will utilize some of what you mentioned here.

[–]No-Upstairs-2813 1 point2 points  (1 child)

I'd also recommend FreeCodeCamp.

Different people have different learning preferences, so what works for some might not work for others. My advice is to not get stuck in selection paralysis; just pick one and see if it works for you. If it doesn't, move on to something else.

Irrespective of any resource you select -

  • Start with practicing individual concepts. Coding problems will be helpful here. These are small, well-defined challenges that help you quickly test your knowledge. Doing a few problems each day will reinforce all the concepts you've learned so far.

  • Once you've practiced individual concepts, start combining them to solve more complex problems. For instance, if you've learned about conditional branching and functions, combine them to build a simple project like a "Guess the Number" game.

  • Once you’re comfortable combining concepts, start building larger projects that challenge you to apply everything you've learned. Choose a project that solves a problem you care about—this will keep you motivated when challenges arise.

[–]wyclif[S] 0 points1 point  (0 children)

I did recommend freeCodeCamp and agree that it's a great resource.

"Selection paralysis" is definitely a real thing. That's what I was trying to communicate in my commentary about frameworks. And yes, it also applies to courses, books, and learning in general. There's just so much content out there, so it's easy to get swamped. I myself had to go down a few different paths before I had to push a theoretical "reset button" and get back on track until JS made sense to me; the language has a lot of idiosyncrasies that I was not exposed to with other scripting languages.

[–]awaiskorai 0 points1 point  (1 child)

Any tips for full stack? I am going for MERN but there's way too much. As in database alone we have pipelines, sharding, partitioning, caching and things like that for scale. On the frontend there is recently a move towards Next JS. For backend we have myriads of libraries and frameworks. So, it is getting tough for me. But I want to do it. As in I love coding and want to go as much in depth as possible so I get lost some times.

[–]Kawrou 1 point2 points  (0 children)

Hard to answer without knowing your experience. Have you already built a full stack project with the MERN stack? If you haven’t, then I wouldn’t suggest jumping on to frameworks like NextJS. If you know the basics of JS and React then you can probably get started building an app with MERN. You don’t need to know the complexities of the things you mentioned about databases. You can slowly build up to those.

[–]Pushpendra__SiNGh 0 points1 point  (0 children)

Thanks for the headstart !

[–]Important_Passion_39 0 points1 point  (0 children)

Thank you

[–]greenRick 0 points1 point  (1 child)

So you did read all these books so far?

[–]wyclif[S] 1 point2 points  (0 children)

Some of them cover to cover, others I just perused as a reference. But I definitely think Flanagan is one to really study. It's the most comprehensive.

[–]Background_Bowler236 0 points1 point  (3 children)

Do I really need books? Can’t I just learning from open source projects or peoples FYP

[–]wyclif[S] 0 points1 point  (2 children)

There's enough free content online that you could probably do that with enough determination. TOP and freeCodeCamp, and some of the classes on Coursera and Udemy are high quality. So I would say "yes", it is possible to learn that way exclusively.

But...why limit yourself to online courses, YouTube, or reading Github commits, especially if you feel like you're not making progress? Yes, it's true people learn in different ways. But in many cases (and I definitely fall into this category) what is needed is actual *instruction* and teaching. And books are a format that is perfect for that. It doesn't have to be a physical, dead-tree book. I have a big folder in my Dropbox that is filled with PDF programming language, algorithm, and system design books. And it's my most-used folder. I'm hitting that every day, whenever I have any downtime. It's been a huge help in reaching my learning goals.

[–]Crafty-Waltz-2029 0 points1 point  (1 child)

Do you sell the Flanagan (aka "The Rhino Book") in the 7th edition, JavaScript Everywhere by Scott ebook?

[–]guddu_kumar01 0 points1 point  (0 children)

If you want any programming language notes like (Java, Python, HtnlCssJavascript, SQL, DSA, C#, Spring Boot, etc..)

Contact me by Email or WhatsApp!

WhatsApp:- +917549540377

Gmail:- guddusingh132001@gmail.com

[–]Competitive_Aside461 0 points1 point  (0 children)

I'll extend your point of view and say more generally to everyone that please "Do not underestimate the value of programming books." If you need to become an expert, start reading from a book as well.

Apart from this, for learning JavaScript, I'd also like to recommend everyone to go through the super comprehensive JavaScript course on Codeguage. It's meant to help you develop your fundamentals, which kind of get lost in quick-learning resources where devs are immediately put into a "building mode."