Live data from Hacker News

Ask HN: Resources for learning advanced JavaScript and React

news.ycombinator.com

31–40 of 45 posts

Re: Ask HN: Resources for learning advanced JavaScript and React

#31
It seems everyone is recommending books/courses/similar. I'll go the other way around. This is difficult for me to say, but I think I am an expert in CSS+JS. I know the inner workings and really advanced things of CSS, and while JS API is quite broader I know some in-depth JS APIs that your average developer doesn't even know exists.

I got to this point first in CSS and then with JS by making side projects and focus each one on a different advanced concept. I will also say it in 1st person as I experienced it as it might sound insulting otherwise:

- Don't get attached to my code. My code is crap. My 6+ months old code is a lot more crap. Always think ways of improving it. Sidenote: try to make it as standard of possible. Initially I did things my way until my open source started to get some traction and it was a mess.

- Once I got past the basics and mid-level, what I did to keep up learning was to try to focus each small side project around a technology I wanted to learn in-depth. Examples: Umbrella JS[1] is about a modular codebase, Superdom [2] is about Proxy, drive-db [3] is about talking with external APIs and DB design, etc.

- Push the limits on the technology on each project. Don't just do the basics and call it a day, try to find what is possible and what is not. Examples: Umbrella JS'[1] performance is similar to jQuery thanks to using the prototype properly, Superdom's [2] Proxies are recursive-ly, drive-db [3] is cached for maximum performance, etc.

- If I don't use it no one will. Publish it for feedback after it is polished from feedback from different projects. Focus on the positive comments to keep going and on the negative ones to keep improving. Because I know my code is crap, when someone says X is quite bad I agree on principle and find a way to fix it or prove to myself that it _was_ the right approach. Examples: Umbrella JS initial code wasn't good for the different ways of importing it, so I added a UMD-ish kind of thing. Superdom was really buggy so I had to write a few tests all around it. drive-db was not good for promises-based code so I converted it to ES7.

There is something I haven't made which I am trying now that it's reading and understanding large, public projects such as Ghost. I have done something similar while contracting, but those closed-source project's code is IMHO generally messier and you are normally trying to go for business requirements, not really focusing on pleasure/learning so much.

[1] https://umbrellajs.com/

[2] https://superdom.site/

[3] https://github.com/franciscop/drive-db

Re: Ask HN: Resources for learning advanced JavaScript and React

#32
React is full of declarative code. Something I'd recommend whole-heartedly is Michael Fogus' Functional Javascript book. It shares a lot in common with POODR in that it's conscious of why functional techniques are useful and how to think in a data-oriented way. The book is self-aware of the beginner's mindset in absorbing that information and is very well-layered.

Personally, I feel the best way to learn is by experience and by exposure. By seeing similar code in different contexts, you can learn why React programs tend to rely on certain patterns. To that end, working through something like How To Design Worlds (http://world.cs.brown.edu/1/) or the Elm guide (https://guide.elm-lang.org/) will give you points of comparison that will help you better articulate what you decide to do in React.

Re: Ask HN: Resources for learning advanced JavaScript and React

#34
post #32

React is full of declarative code. Something I'd recommend whole-heartedly is Michael Fogus' Functional Javascript book. It shares a lot in common with POODR in that it's conscious of why functional techniques are useful and how to think in a data-oriented way. The book is self-aware of the beginner's mindset in absorbing that information and is very well-layered. Personally, I feel the best way to learn is by experi…

http://eloquentjavascript.net/ is another fantastic book in the same vein (and free!).

Re: Ask HN: Resources for learning advanced JavaScript and React

#35
post #22

React-Redux complements React in some great ways. It has been my state storage of choice from the beginning. IMO, it would be better to start react with it rather than changing habits later. The go-to tutorial series is here: https://egghead.io/courses/getting-started-with-redux And definitely use typescript if you value good code quality (and your sanity). The advanced type system and compile time type checking is r…

Typescript works fine even with all the libs written in js/es6 from npm ?

Re: Ask HN: Resources for learning advanced JavaScript and React

#36
I would say pair programming with others and reading code as a group together is the best way to level up. While reading open source projects will fill in some knowledge gaps and teach you to write cleaner code. You may miss the subtle aspects that makes the code one step better then others. When I pair program with seniors I get to see how they come at a problem, make design decisions, and find out why they do something some way. Pairing with a less senior developer causes you to reflect on yourself. If you can't explain something to someone else in simple terms then you might need to revisit that idea. Also a good way to remind yourself how much you have grown as a developer, and how much farther you still need to go. Pair programming in a group is a great for a team to understand how each other thinks. It also confirms styling techniques for the code base and also allows people to fill in random knowledge gaps they may not know they have. Finally it has been proven over and over again the more a team communicates with one another the better they work as a team even though our codes and docs suppose to be the best way to convey our thoughts to other programmers. Spending some time every day talking and working together is the fastest path to bring entry level and junior level developers to a senior level.

Re: Ask HN: Resources for learning advanced JavaScript and React

#37
I'll throw in Brian Lonsdorf's "Professor Frisby's Mostly Adequate Guide to Functional Programming"

https://drboolean.gitbooks.io/mostly-adequate-guide/content/

And the related video series on Egghead (which I think requires a subscription)

https://egghead.io/courses/professor-frisby-introduces-compo...

Which reminds me, if you can get an employer to pay for an Egghead subscription and/or a Frontend Masters subscription as part of a training budget, both are great. Also probably worth buying on your own if work won't cover it.

Re: Ask HN: Resources for learning advanced JavaScript and React

#39
post #35
post #22

React-Redux complements React in some great ways. It has been my state storage of choice from the beginning. IMO, it would be better to start react with it rather than changing habits later. The go-to tutorial series is here: https://egghead.io/courses/getting-started-with-redux And definitely use typescript if you value good code quality (and your sanity). The advanced type system and compile time type checking is r…

Typescript works fine even with all the libs written in js/es6 from npm ?

Most popular libraries these days either include their own typescript definitions, or the definitions are available vie @types (it is as easy as npm install --save-dev @types/library-name)

If on the off chance that no typings are available, you just write a simple namespace declaration (usually a one liner) and start using the library right away, albeit without smart code sensing / completion. See https://stackoverflow.com/questions/22842389/how-to-import-a...

Re: Ask HN: Resources for learning advanced JavaScript and React

#40
post #29

I'm always surprised that reading source code is such a rare occurrence or suggestion in this world. If you consider yourself even in the vicinity of "advanced", I think you're capable of learning great stuff by looking at anything on github. Something big, but well organized. Lo-dash, Node, Mocha, etc. Of course you won't understand everything on first read. But you will learn really good things if you know how to l…

I question the utility of this.

I don't break apart an engine to figure out how to use it, I read the manual about inputs and outputs.

Post reply on HN