Ask HN: Recommend book(s) or course(s) on modern front end dev for back end guy
Now my Javascript knowledge dates back to the days when variables were hoisted (is that still a thing btw?), and URLs started with "http://". Oh, and any time I had to "compile" (???) frontend code I was always shocked about the immaturity of the ecosystem... We had JSP and even JSF, and NodeJS was in its infancy and looked down upon by the "serious" guys. So there is quite a bit of ground to cover.
What I would like to have: a few books or courses about modern Javascript, Typescript, browsers, development tools, libraries, that can quickly get me up to speed. For example, on the backend we have this thing called the IO monad - is Javascript still a land of callback hell? Also would appreciate info on React, Angular and Vue (I think these are the most common frameworks?).
I'm also primarily interested in learning the important things. I'm a quick learner and I don't really need stuff that I can easily search for on the net - BUT I do need to know WHAT to search for.
What I do NOT need: books on theory, algorithms, books for beginners, books for dummies, books on functional programming, books on <pick your style of programming>, books on web design or color harmonies (no, I will not be designing stuff!)...
Why I am asking: I could just start reading books randomly, and it usually takes ages to find out of a 100 books the roughly 10 that are good, and about 1 or 2 that are spectacular. I am looking for those. Thank you. I'm also happy to pay for online courses, if they are worth it (I still remember Martin Odersky's FP/Scala course on Coursera from ~10 years ago, which I thought at the time was one of the best, and was worth every minute I spent on it).
PS. I heard about "Javascript - the good parts", which I'm definitely going to check out, but man, that book is 14 years old now! How much of it is still relevant I wonder.
10 comments
[ 4.0 ms ] story [ 38.4 ms ] threadAs for things to learn, async/await and promises are probably the most complicated, but Mozilla will no doubt have documentation covering all of that.
For React, prefer small contained functional components, avoid classes and inheritance, and learn what hooks are and how they work.
For Typescript, avoid using any or unknown everywhere, avoid the urge to make very complex types, and generally stick to interfaces with minimal inheritance and you’ll be fine.
As you are jumping to an existing codebase follow the conventions of that codebase. Avoid the classic blunder of jumping into a new codebase and making massive changes.
Good luck!
The existing codebase was unfortunately developed by not-so-senior people, so I'm reluctant to just jump in without first trying to establish a base line. I mean I saw some of their Java code, it was... interesting.
To your question, I strongly believe “JavaScript the Good Parts” is of historical interest only (say, if you want to take over an application written before ~2010). I recommend “Effective JavaScript” instead.
On the other hand, backend has a number of environments to start with (native, Java, .net, or interpreted like Python), then you have to choose a language, the version of the language, the build tool, the libraries (ok, here Spring Boot is just as dominant as Javascript on FE)... and you are still nowhere because you now choose your database technology (or -ies, you can have Postgres + Redis + Elasticsearch in a typical web app), messaging technology, business modeling, etc, etc.
I do have my set of preferred tools, if you asked me what I would choose for a project, I could pick from them and then I would be able to recommend literature for it. But it is very hard to recommend something that is generic enough that any BE dev would benefit from it (once you have the basics of course, algorithms, O(n), OOP and FP...).
Effective Javascript is from 2012, I can't believe no interesting JS book was written in the past few years!
Like, I could just as easily say that on the backend there isn't a dominant language, just a lot of churn for some reason. People keep reinventing new ways to take a request, make some backend calls, wait for the results, and compose a response. It seems like best practices should have evolved by now...
I'm reminded of the relevant Spolsky article: https://www.joelonsoftware.com/2002/12/11/lord-palmerston-on...
"Leaky abstractions mean that we live with a hockey stick learning curve: you can learn 90% of what you use day by day with a week of learning. But the other 10% might take you a couple of years catching up. That’s where the really experienced programmers will shine over the people who say “whatever you want me to do, I can just pick up the book and learn how to do it.” If you’re building a team, it’s OK to have a lot of less experienced programmers cranking out big blocks of code using the abstract tools, but the team is not going to work if you don’t have some really experienced members to do the really hard stuff."
Anyway, the argument's been done to death and I doubt we'll convince each other.
That said, "the 90% day-to-day" of JS/React/Chrome devtools really is as easy as everyone says for an experienced programmer. You can use almost any resources to grok the basics.
I'm genuinely very surprised that there's not a new edition of Effective JavaScript - it should really exist. I haven't read Effective TypeScript, but I've heard good things. I also enjoyed "CSS - The Definitive Guide" from O'Reilly, but I haven't read the latest editions.
It's just because it is so compact, that I don't get why there is not an up-to-date comprehensive guide covering _everything_ there is.
So far the closest I found was "Professional Javascript for Web Developers" by Matt Frisbie.
Btw. the React Beta page is also very good, if a little shallow. It tends to stop explaining things just when they are getting interesting, but I get that it's a guide for all audiences, and it would easily be twice the size if they answered all my "why" questions...
https://www.udemy.com/course/the-complete-web-development-bo...
https://www.udemy.com/course/the-complete-web-developer-zero...
You do not need to watch all courses materials but can pick the parts that you are interested in. You can also look at Udemy for other webdev courses too.
Keep in mind that at Udemy there are very often sales and courses prices are around 9~20$. If price is above it just wait some time for sale.