
You Don't Know JavaScript Book Series - colund
http://youdontknowjs.com
======
colund
I posted this link after having read the author's comment to a one star review
on Amazon:

"Kyle Simpson8 months ago Report Abuse I can assure you, my goal of splitting
up the content into a book series had ZERO to do with making more money. It's
actually quite the opposite. One of the things I hate the most about tech
books is that I spend $35-50 on a big book of which there's only a few
chapters I actually care about. I almost never read a whole book.

I decided when I wrote this content that I'd make each logical chunk of
content available separately, which means that you can buy _only_ the stuff
that you actually care about. This COULD quite likely mean that I make a lot
less money in the overall picture, because there will be plenty of people who
don't buy all the books, or even not enough of them that would have generated
the same income as a single book would have.

This places you, the reader, more in control, not only of what you buy and
own, but more deeply of what you spend your money on compared to the content
you get. Rather than being about me greedily making more money, it rather
downgrades my ability to make bigger chunks of money per copy for the majority
of people who (like me) only want/need part of the content.

With regards to this content being "pointless", that seems quite a spurious
and unsubstantiated claim. Pointless to you? Perhaps. But I feel quite certain
there's a lot of content in there (like block scoping, etc) that most
developers (and perhaps even you) aren't fully aware of. If you're already a
JS expert (even on all the new ES6 stuff coming), then you probably _do_ know
JS and I'm not sure why you bought the book.

The spirit of the whole series (given the title) is to get us all (myself
included) to admit how we don't fully know JS and how we need to dig deeper
than we have before. If that's lost on you, I'm sorry.

One last comment: these books are all available fully for free to read here:
[http://YouDontKnowJS.com](http://YouDontKnowJS.com) In addition, Amazon's
site makes preview snippets of the book available to read for free so you can
get an idea of what you're buying. It's a shame you apparently didn't read the
content/previews before buying, you could have saved your $5-7 (at least it
wasn't $35-50)."

~~~
michaelchisari
I'll be honest, I'm working through a React book right now, and there's so
many additional subject chapters that, while useful, would be better off spun
off into their own books. I found the first 2/3 of the book immensely useful,
but now it feels like I'm slogging through to finish it (just for the sake of
finishing it).

Maybe splitting things up into very self-contained contexts makes a lot more
sense than writing another tome.

~~~
matt_
What is the book?

------
acjohnson55
Here's the thing, I do know Javascript pretty well after reading Crockford
[1], Braithwaite [2], and Javascript Garden [3]. Much of the behavior of the
language is simply too subtle and failure-prone to bother with, especially
when working on projects that aren't composed entirely of world-class JS devs
(e.g. every project ever). In its full expressiveness, Javascript yields code
that simply does not do what you think it does, unless you've memorized the 6
books of material documenting counterintuitive behavior.

I'm with the prevailing industry consensus, that Javascript has some brilliant
parts to it, and when used judiciously, and with the right abstractions, it's
not so bad. But some of the more subtle concepts in Javascript, logical
consistency aside, simply don't make for great programming.

[1] [http://javascript.crockford.com/](http://javascript.crockford.com/)

[2] [http://leanpub.com/javascript-allonge](http://leanpub.com/javascript-
allonge)

[3] [https://bonsaiden.github.io/JavaScript-
Garden/](https://bonsaiden.github.io/JavaScript-Garden/)

~~~
woah
What subtle counterintuitive behavior are you talking about? The only things I
can think of are == and if (0).

~~~
rtpg
If you try to combine object methods that use 'this' with functional
programming-style code, you're in for a bad surprise

~~~
woah
Yea, when people try to rebuild all the fanciful embellishments of classic OOP
GUI programming in JS, they're going to have a hard time. Unfortunately I've
had to maintain this kind of code in the past. Don't use 'this'. I'm afraid
that the addition of the 'class' keyword in es6 will make this tendency worse
in some programmers. Along with block scoping, it's a feature lobbied for by
people who don't actually code much JS.

~~~
orangecat
And that's JavaScript's fundamental problem: it's full of attractive nuisances
that have the nasty property of silently doing the wrong thing. 'this',
0=='0'==false==[]!=[], global variables by default, objects that are almost-
but-not-quite maps, for-in-oops-forgot-hasOwnProperty, etc, etc.

------
seasoup
Wow, everyone here seems to be really put off by this title. I thought it was
clever and funny. Title's are meant to grab attention and drive sales, and
secondarily to also inform the potential reader of the topic.

This title caught my attention, so first purpose, check.

I think the book is positioned for beginner to mid-career engineers working
with JavaScript that want to do a deeper dive and based on the title is
presented in an irreverent and funny tone. If it is those things, it
accomplishes #2.

Great title. I haven't read the book, so I don't have any opinion on it beyond
that, but can we try and take things a -tad- less personally?

------
c_moscardi
i'd be curious to hear others' opinions, but it seems to me JS isn't the sort
of language that one wants to master in itself. it's very much a language
defined by its use cases.

then again, i'm just trying to become an all-around better fullstack developer
for my current employment situation - so i'm mostly using (and pull-
requesting) frameworks rather than writing my own

given this perspective, i'm much more interested in the entire [and rapidly
expanding] toolchain for modern js development - and learning the language's
esoterica [and i am the sort of person who takes pleasure that stuff] as i
become an all-around better js dev

~~~
imdsm
> but it seems to me JS isn't the sort of language that one wants to master in
> itself

Well, depends how you define "master". To become a leading expert on it would
mean taking time away from other skills, which probably wouldn't be wise. But
if you're using JS quite a lot then learning it to an arbitrary level, let's
say 80% of "master", well, that probably would be a good shout.

I suppose it depends on your skillset projection, do you see yourself spending
a lot of the next five years with JS? If so, invest now in personal
development. If not, maybe skim read it.

~~~
_getify
The proposition that I approach JS from, including my writing of these books,
the JS workshops I teach, my OSS work, etc, is this:

If you're going to make JS your primary language that you write on a daily
basis, doesn't it make sense to invest more time into learning it than just
whatever you might accidentally pick up through trial-and-error?

Most developers in most other languages do tend to take formal learning of the
language, to a deep extent often, a more serious task, but with JS it seems
many developers just kinda get whatever they get along the way.

I have found that approach to be good at getting and keeping yourself
employed, but bad at giving you any confidence that you actually know what's
going on. If you aren't really sure exactly why your code works, my theory is
that you'll never know exactly why your code doesn't work either.

I'm just trying to provide resources for developers who want to take learning
JS seriously, and challenge "all" of us to ask, "just how much DO I know JS?"
The rest is up to you. :)

------
AndrewDucker
Six books, each $20, none of them that big? That seems excessive to me.

Does it need to be spread so thinly?

~~~
_getify
> each $20

I'm trying to work with O'Reilly to bring down the prices on the books a
little bit. I always wanted them to be priced so that price wasn't a barrier
to entry. As you can imagine, there's lots of intricate details which restrict
what I can do with pricing.

> none of them that big

Hmmm...

Page counts on the titles (so far) are: 65, 98, 176, 189, 296. The last book
isn't finished yet, but I'm projecting it to be somewhere around the 150-200
mark.

I can appreciate that $20 for a 100pg book may feel "excessive", but what
about $26 for a 296 page book?

Moreover, I'm working (still) on getting O'Reilly to release a box set for a
flat price that will be much more reasonable than buying each book
individually, so that if you want the whole series you'll have an affordable
option for that.

And you'll of course still have the option to buy just one or two of the books
if that's your fancy.

~~~
Tad_Ghostly
Thank you for showing a commitment to getting useful knowledge published at
reasonable prices. And of course, there isn't anything more reasonable than
"free on github". I'm excited to pick through these books to become a stronger
javascript programmer.

------
cdata
I love reading Kyle's work and have had the privelige of seeing him speak a
few times. He has an uncommon capacity to dig into the little, grouty nooks of
JavaScript and uncover precious veins of knowledge. If there is anyone that I
would trust to write a worthy series of technical books on JavaScript, it's
him.

------
hokkos
The content is interesting but I find them verbose, but I like when it is very
terse.

------
jthk
I take the title to mean that someone has taken time to do some research and
share it with me. reading the material will help me fill in some gaps and
hopefully dispell or validate assumptions I never took the time to test.

~~~
_getify
That is exactly my intent. I certainly hope the books live up to that vision.

------
a0viedo
I think it could be great to give an order for reading the series for someone
that's learning JavaScript. I often recommend this series but everyone asks me
where should they start reading.

~~~
_getify
Great point! The order of titles listed here is the intended reading order:

[https://github.com/getify/You-Dont-Know-
JS/blob/master/READM...](https://github.com/getify/You-Dont-Know-
JS/blob/master/README.md#you-dont-know-js-book-series)

Also, the "Up & Going" title, Chapter 3, has descriptions about the titles and
the narrative/story arc being told across them, which helps understand the
intended order as well:

[https://github.com/getify/You-Dont-Know-
JS/blob/master/up%20...](https://github.com/getify/You-Dont-Know-
JS/blob/master/up%20&%20going/ch3.md#chapter-3-into-ydkjs)

------
bart42_0
I'm missing the title:

"Everything you always wanted to know about Javascript but were afraid to
ask."

By Woody Anybody

------
mlntn
For those interested, I recently found a tool that will convert Markdown files
into an ebook. I used it for the Laravel docs, but you could use it for these
books too. I'm sure there are other tools, but this was very simple to get
going.

[http://easybook-project.org/](http://easybook-project.org/)

~~~
_getify
Also note that these books are available for purchase as actual official
ebooks. If you read the content and find it helpful, I of course appreciate
any purchases made. :)

------
shacharz
Is there content in the book that isn't on Github?

~~~
_getify
The book series (6 of them) is drafted, and to some extent edited, on GitHub.
What you see is what you get.

There are some edits and refinements that happen to the content during the
publishing/production phase at O'Reilly that aren't necessarily appropriate to
back-port to the repo. But I do try to get most of the main substance stuff
sync'd.

The free GitHub repo versions of this content represents the drafts of the
books in the mostly complete stage, whereas the published books (digital or
print) are the final, final versions.

------
semperfaux
"You don't know x."

"10 things you didn't know about y."

"Everything you thought you knew about z is wrong."

Am I the only one that finds titles like this completely offputting? If you
think you have insight that's useful to people, try _not_ talking down to
them. As it is, hell, I may not know Javascript, but I'm certainly not
clicking through.

~~~
_getify
I explain the title, and the intended tone and purpose of the book series, in
the preface. If you wouldn't mind taking the 3 minutes to read it, I'd be
curious if it changes anything about your opinion of the title:

[https://github.com/getify/You-Dont-Know-
JS/blob/master/prefa...](https://github.com/getify/You-Dont-Know-
JS/blob/master/preface.md)

~~~
ekidd
Nope, it still doesn't work for me, personally. I never played "You Don't Know
Jack", and so I tend to interpret your title literally. And your title implies
that no matter how much somebody knows about JavaScript, it's not enough.

Two decades ago, I was really into learning all the disgusting corners of
badly-designed programming languages. I got really excited about C++ implicit
conversions and clever template hacks. But that always proved to be a mistake,
because nobody wants to read or maintain any of that crap.

These days, I try to focus on the essentials of a language: What works well
and portably? What offers unique expressive capabilities that I haven't seen
before? What's idiomatic? If I learn any nasty corner-cases, I only do it
solve a specific problem, or to avoid pitfalls.

I really can't get excited about the implicit conversion semantics of
JavaScript's "==" operator or the weirder points of how "this" get bound in
callbacks. It's all just pointless technical arcana. If something neither
expands my brain nor solves an immediate commercial problem, I'm happy
ignoring it until it becomes obsolete. And my clients are usually a lot
happier, too.

(That said, the actual books are nicely written. But you asked about the
titles.)

~~~
billyhoffman
This. "Technical arcana" is exactly right.

Your code should rarely be clever or rely on the the weird dark corner-case
cruft of a language. Too often I see JS code written like an entry in the
Obfuscated C contest. Yes, that code _can_ work, but don't do that.

~~~
_getify
The books point all the arcane points of the language so that the reader can
understand them. They're also full of commentary like "never do this".

Rather than most books which gloss over the "bad parts", which prevents people
from fuller learning and leaves them to their own devices when they run across
that stuff in the real world, YDKJS covers all the parts, and tries to use the
deeper understanding as a tool and guide to making better-informed decisions
about how to effectively write JS.

I think it's entirely unfair to suggest that covering "technical arcana" is
the same thing as endorsing it.

~~~
billyhoffman
I never once mentioned your books Kyle. I actually enjoy the parts that I've
read. I was making a broader point that I have witnessed with the JS
community: using technical arcana in production code as if it was a good
thing. Just one example:
[https://github.com/twbs/bootstrap/issues/3057](https://github.com/twbs/bootstrap/issues/3057)

------
deeteecee
no i really dont... and i dont care lol

