6 ms·
I would consider myself pretty close to an expert with JavaScript. I've been using it for 5 years professionally, currently use ES2020. Fairly familiar with Nod
by warent 7y ago
I would consider myself pretty close to an expert with JavaScript. I've been using it for 5 years professionally, currently use ES2020. Fairly familiar with Node 12, V8, etc. But I'm always worried about those situations where you dont know what you dont know. This might sound strange, but would anyone recommend any reading material or blogs for someone at my level?
- mpoteat 7y agoI would maybe recommend Typescript if you want to harness the type level power of "proving" correctness for certain aspects of your code.
- leshow 7y agoBig scare quotes there, you can't really 'prove' much in typescript. Don't get me wrong, it's a nice type system they've tacked on to JS, but it's far and away from proofs of correctness. At best, it's an optional type system with escape hatches.
- futureproofd 7y agoYou can only 'prove' what you expect from your design. This works in most cases and saves a lot of guesswork on big, unfamiliar projects. It's not an integral part of JS though, so I wouldn't recommend learning it as a foundation.
- narak 7y agohttp://youdontknowjs.com/ http://youdontknowjs.com/
- guruparan18 7y agoI am not a full blown Javascript developer (backend developer here), but had been using JS and other frameworks for about 10 years now. I subscribed to Dan Abramav's "Just Javascript" [1] email. It is really good to read/follow and has one concept and idea explained well. [1]: https://justjavascript.com/ https://justjavascript.com/
- iceIX 7y agohttps://2ality.com https://2ality.com
- jrajav 7y agoHave you ever read through this annotated ES5 spec? Even annotated it's still pretty dense, but it's a nice way to both dive deeper into the language and as a 'minimap' to guide you through the parts you have yet to totally master. It definitely helped me level up more. https://es5.github.io/ https://es5.github.io/
- nicoburns 7y agohttps://v8.dev https://v8.dev
- tchaffee 7y agoIn addition to the already mentioned 2ality blog and YDKJS books, read Javascript Allonge [1]. [1] https://leanpub.com/javascriptallongesix/read https://leanpub.com/javascriptallongesix/read
- nivethan 7y agoThank you the recommendation, it is written quite well and I'm really liking the tone.
- varrock 7y agoI decided to read Eloquent JS before exploring Allonge. Can anybody who has read both give their opinions on each? How are they similar/dissimilar?
- Dangeranger 7y agoEloquent is more of a fundamentals focused book, whereas Allongé is an excellent object-oriented foray, mixed with functional tidbits and examples. Allongé shows that you can get the best of both worlds, object and functional, by applying the right technique in the correct places.
- varrock 7y agoOne thing I've struggled with in JavaScript is choosing a more functional or OOP approach in certain situations. I can never tell if I should stick to one or the other. Allonge sounds like it'll really help me figure that out.
- galaxyLogic 7y agoOne thing I don't get it is people who would say you must choose between objects and functions, or that FP is "better" than OOP. Objects have function-valued properties called methods. So Objects can't do without functions. Functions can return either a) atomic values like strings and numbers OR b) Objects. Note that in JavaScript Functions are Objects too. So I hope no-one is seriously suggesting that FP can do without Objects, by saying that functions should only return atomic values.
- ggregoire 7y ago> But I'm always worried about those situations where you dont know what you dont know. This might sound strange, but would anyone recommend any reading material or blogs for someone at my level? It's not very clear what you are asking, neither what's your background. In your situation I wouldn't spend more time learning stuff about JavaScript, I would just improve my skills in software engineering (design patterns, code quality, refactoring, etc) and diversify my knowledge (learn other languages (python, go, or some FP language to learn something really different); databases and SQL; web servers and REST; etc).
- weaksauce 7y agoif you can't find something you didn't already know in the free book series "you don't know javascript" then I'd imagine you might not have any gaps in your knowledge. (at least for 99% of it) (you can buy a hard copy of it if you want but it's open source) https://github.com/getify/You-Dont-Know-JS/blob/1st-ed/README.md https://github.com/getify/You-Dont-Know-JS/blob/1st-ed/READM...
- mrdoob2 7y agoI would recommend watching Andreas Kling's youtube series where he builds a javascript engine from scratch. https://www.youtube.com/watch?v=byNwCHc_IIM https://www.youtube.com/watch?v=byNwCHc_IIM
- mttyng 7y agoOh, this is great! Thanks!
- hoorayimhelping 7y agoI've been using JavaScript professionally for about 12 years. You're going to have to look for talks and really technical posts. Consider whitepapers and source code for JavaScript engines at this point. You'll probably want to start reading up on the things attached to JavaScript, rather than the language itself. Browser rendering, event loop, V8 things, garbage collection, etc. I'm sure you've seen it, but things like this: https://www.youtube.com/watch?v=8aGhZQkoFbQ https://www.youtube.com/watch?v=8aGhZQkoFbQ, and this: https://www.youtube.com/watch?v=SmE4OwHztCc https://www.youtube.com/watch?v=SmE4OwHztCc It might be time for you to start writing what you know about JavaScript.
- nujabe 7y agoI definitely wouldn't consider the first video 'advanced' material (an excellent talk btw), JavaScript event loop is something beginners should know about and intermediate developers know very well.
- azangru 7y agoAh, but do they know where in the event loop, for example, "microtasks" get executed as opposed to... I forget.. tasks? In other words, how execution of promises is different from the execution of setTimeout?
- quickthrower2 7y agoI was lucky enough to see this live - https://v8.dev/blog/elements-kinds https://v8.dev/blog/elements-kinds - but I recommend watching and reading for anyone. Half because is pretty interesting and accessible at the same time. And half because you might use it . Also Typescript is well worth learning.
- mosdl 7y agoThis. For example, classes are much easier to optimize for than json objects, which really hurts the functional programming and redux crowd.
- emmanueloga_ 7y agohumble opinion: N years of using any language won't make you an expert. There's knowledge about how to express certain patterns in a given language, more like an application design expertise. There's knowledge and familiarity with the APIs. And then there's the deep language knowledge, the one that pretty much only someone implementing a language VM, parser, compiler and other tools may acquire with time. Also, there are a lot of specifics about every particular JS implementation. Also, Dunning–Kruger :-) On the internals of VMs, https://mrale.ph/ https://mrale.ph/ has a lot of blog posts on internals/optimizations on V8. https://www.wingolog.org/tags/javascript https://www.wingolog.org/tags/javascript also has deep JS articles very freqently.
- _hardwaregeek 7y agoSome of the TC39 proposals might be worth looking at. The ES spec too. If you really want to go all out, you could write a simple JS interpreter. Probably don't want to go full spec compliant but you could implement a decent subset. Especially if you skip the parsing step with Acorn https://github.com/acornjs/acorn https://github.com/acornjs/acorn
- LocalPCGuy 7y agoNot sure how it holds up, but Secrets of the Javascript Ninja was the book I read when I felt like that, and it significantly helped me understand a few concepts I had struggled with. By John Resig (created jQuery). But it's a few years old now, so likely won't cover much if any ES6+ stuff. But I'd bet the concept stuff is still very valid. Also the You Don't Know JS series. And Elliot's Programming Javascript Applications. I don't know you, so I don't know if this applies or not, but be careful not to fall into the "expert beginner" trap (i.e. Dunning Kruger). Your first sentence starts to feel that way, but the fact you're asking for more resources and aware there are things you don't know are good signs. Always keep learning, the rabbit hole goes ever deeper.
- aastronaut 7y agoI think the sentiment of "you dont know what you dont know" is especially cumbersome with JS, since its usability is so much defined by its extensions (WebAPIs, runtimes etc.) Reading into specs (ECMAScript[0], W3C[1]), some more approachable explanations[2] of them and some implementations[3, 4] of embedded engines seem to be my approach. [0]: https://tc39.es/ecma262/2020/ https://tc39.es/ecma262/2020/ [1]: https://github.com/w3c https://github.com/w3c [2]: http://dmitrysoshnikov.com/ecmascript/javascript-the-core-2nd-edition/ http://dmitrysoshnikov.com/ecmascript/javascript-the-core-2n... [3]: https://bellard.org/quickjs/ https://bellard.org/quickjs/ [4]: https://v8.dev/docs/embed https://v8.dev/docs/embed
- colordrops 7y agoAre you familiar with various tc39 proposals? Do you understand how JS VMs work? Knowing the internals of the engine really informs you on performance and resource utilization characteristics of various ways of writing code.
- bryanrasmussen 7y agoread "you don't know JS" series of books, also second edition https://github.com/getify/You-Dont-Know-JS https://github.com/getify/You-Dont-Know-JS I find the workshops very helpful as well, which I've watched through my oreilly membership don't know if you can find them elsewhere, I would suggest combine this with reading the specs. on edit: one reason the specs are not enough is generally specs will tell you what needs to be implemented but a good book, like these ones, will tell you how it has been implemented or what the spec implies for implementation and what all that will mean for you as a user of the language.
- toohotatopic 7y agoAt one point, there will be only sourcecode to read. Read what the best programmers actually do use.
- smlckz 7y agotry to implement a ES2020 interpreter from scratch (like fabrice bellard's quickjs) when you're done, you'd have learnt enough on the way and know what you don't know