
JavaScript for Impatient Programmers - MindGods
https://exploringjs.com/impatient-js/index.html
======
nottorp
Can anyone recomand a “JavaScript for profesional programmers”?

I.e. something that introduces JavaScript assuming you know a lot more about
programming than your average JS developer and explains the JS pitfalls in
common terms and not js “ecosystem” inventions?

~~~
solidist
JavaScript: The Good Parts by Douglas Crockford. Note that this was written in
2008 but still holds up well.

[https://www.amazon.com/JavaScript-Good-Parts-Douglas-
Crockfo...](https://www.amazon.com/JavaScript-Good-Parts-Douglas-
Crockford/dp/0596517742)

It may be a perfect time for a revision.

~~~
throwanem
It predates ES5, and a revision is imo long overdue. It was an excellent
resource in its day, but there are a _lot_ of good parts too new for it to
have covered.

------
toyg
I don't (think I) have much of a problem with JS syntax, generally speaking,
but I'm often baffled by the surrounding ecosystem of build tools and
"helpers". There are a million tutorials, all doing things slightly
differently without really explaining why, and stuff breaks so often...

Any recommendation for something covering that sort of thing (npm, yarn,
webpack...) in a more structured and in-depth way than "here's how to make a
todo list in 10 minutes with some magical command that may or may not still
work 3 months later"?

~~~
tyingq
I sympathize with this. I wanted to use, and slightly modify, a small web app
I found on GitHub.

Despite it being client-side only, it used node. An older version, with older
versions of webpack, Babel, and so on. And tons of now deprecated npm
packages. It was only a couple of years old.

The only way I could make it work, after days of trying, was a docker
container of an older Linux distro. I did try just upgrading packages, but the
avalanche of dependency hell made that literally impossible.

I have not had this experience with any other language.

Edit: Noting I have had to update/upgrade older Perl, Python, etc, projects.
And they weren't all easy. But they were at least possible. Dozens of things
to chase down. Not hundreds.

~~~
greggman3
I've had the opposite experience trying to get python and/or ruby not to trash
my global environment and various things wanting the system to be setup for
their versions and libraries. I like that NPM by default makes all
dependencies local and npm lets you include your dev dependencies local to
that project.

Note: I know their are magic incantations for python and ruby to get them to
make everything project local but they aren't what python and ruby do by
default.

------
eurasiantiger
I would not suggest this book. While it does begin with simple, concise
examples, it leaves out many important details.

For example:

\- The first variable using `const` is called ”immutable”, which is
misleading, since only the _assignment_ is immutable. Later on the same page,
a const object property is assigned to without any clarification as to why it
works.

\- Only single- and double-quoted strings are introduced at first, even though
template strings are arguably the cleanest for building strings.

\- Arrow functions are introduced as just another syntax - neither implicit
`this` binding nor implicit return of last block statement are mentioned.

~~~
zarathustreal
> const is called immutable which is misleading

Consider that this may simply be a knowledge gap on your end. I think most
programmers understand the concept of value vs reference types and would not
assume an object to be a value type. Obviously the reference is immutable, as
is any other value type you assign to the const.

> nor the implicit return of last block statement are mentioned

Probably not mentioned because it doesn’t exist. There is no implicit return
of the last block statement. That statement is misleading in at least two
ways: there cannot be multiple top-level block statements as the body of a
function, nor does the singular block statement body of an arrow function
implicitly return the last expression. It actually requires an explicit return
statement. On the other hand, an arrow function with an expression body -does-
implicitly return.

~~~
hoorayimhelping
> _Consider that this may simply be a knowledge gap on your end._

My experience says this is very far from the truth. JavaScript's
implementation of const is confusing for almost everyone the first time they
come across it, especially the area you're talking about - changing
collections. Junior engineers and non JavaScript senior engineers alike don't
seem to understand what const actually means until they dig in to get deeper
context, which I would point as a pretty big failure of language design.

~~~
throwanem
I think it's a failure of education, specifically around the concept of
binding as the general case of assignment.

I came late to that myself, not encountering it as a discrete concept until I
got interested in Lisp, and found it clarified a great deal for me that had
previously been obscure.

With that concept available, const is trivially explained as an immutable
binding, as indeed the author of the book under discussion explains it
elsewhere in this comment thread.

Without it, yeah, const feels full of special cases, just like everything else
involving non-primitive types. It's something I've learned to cover early in
teaching the language, because a little early effort there goes a long way
toward clearing up a lot of confusion later.

------
self_awareness
FWIW, I'd say that "javascript for impatient programmers" should have a course
teaching patience as first chapter ;)

------
rullopat
It looks like a great book, but I find it strange that the target audience is
"impatient programmers" and it's 548 pages long. Am I too impatient?

~~~
rauschma
The book did indeed get longer than I had planned. However, there is a “quick
mode” for reading it: [https://exploringjs.com/impatient-js/ch_about-
book.html#isnt...](https://exploringjs.com/impatient-js/ch_about-
book.html#isnt-this-book-too-long-for-impatient-people)

------
rauschma
Thanks for the mention! The book is free to read online and was updated to
ECMAScript 2020 last week.

------
markstos
Impatient Programmers should be reading "Patience for Impatient People" or
consider an alternate career.

------
fefe23
Suggestion: If you are impatient, do not become a programmer.

Programming is a craft. It needs patience. You need time to learn the ropes.

Some people look for shortcuts, learn the tricks of the trade instead of the
trade. Please do not be one of those people.

Imagine what would happen if someone with that mindset built bridges or
skyscrapers. Or roads. Anything, really.

In fact, be prepared to try things and then throw them away, because only
after you failed once have you gained an understanding of your environment and
what you are actually trying to achieve in it.

~~~
drawkbox
Larry Wall, granted he made Perl, says these are the three virtues of
programming.

> _Laziness: The quality that makes you go to great effort to reduce overall
> energy expenditure. It makes you write labor-saving programs that other
> people will find useful and document what you wrote so you don 't have to
> answer so many questions about it._

> _Impatience: The anger you feel when the computer is being lazy. This makes
> you write programs that don 't just react to your needs, but actually
> anticipate them. Or at least pretend to._

> _Hubris: The quality that makes you write (and maintain) programs that other
> people won 't want to say bad things about._

I think in the end the best way to describe a good programmer is "detail-
oriented" and "results-based" that cuts out the bullshit and can ship. The
better programmers that are product developers see programming as a tool to
make products, not a tool to bike shed and yak shave all day.

[1] [http://threevirtues.com/](http://threevirtues.com/)

~~~
ezequiel-garzon
How did you come across such a narrowly scoped website? Is it yours?

~~~
loco5niner
I've seen this site multiple times. Larry Walls quote is well-known, and this
site is often referenced at the same time.

------
m0ck
Thank you, this is just what I needed! I started reading Eloquent Javascript
recently, but since I already know Java and Python it was too slow paced for
me (I don't need to read 5 pages on if/else statement)

~~~
weenus
I skipped some sections, but I feel like that book does a really good job of
introducing lesser-known aspects of the language (like how async/await is kind
of just generator functions + promises, or how Symbol.iterator works), and
then it gives good historical context for idiosyncrasies (like the difference
between esmodules and commonjs).

------
Syzygies
While a PhD is short for a Doctor of Philosophy, at universities such as
Princeton or Stanford the title "Dr." is reserved for medical doctors. At less
secure schools one sees the title imposed by administrators. It's a wonderful
poker tell; you'd think people would be aware what they're signalling? Or they
know, but we're not their intended audience.

In Germany, "Herr Professor Doktor" is often in jest, as one usually restricts
to the highest ranking title. And titles are fading, a form of class-
consciousness. To use "Doktor" unnecessarily reveals one is not a Professor.

So I don't understand the cultural context for this author's use of "Dr." It's
welded to his web site dr-axel.de; perhaps this is a stage name like "Dr.
Ruth".

~~~
duxup
I always just read it as "this person is proud they put the work in to get
that title" and leave it at that. Life is too short to worry about the the
other stuff ;)

Granted like you I noticed it too, it is something that I think I've seen less
commonly used too ;)

------
keithnz
I thought the title was just a declarative statement about javascript rather
than the name of instructional material

------
OmniTroid
Love the writing style. Concise, straight to the point, zero nonsense. Will
consider getting the paperback.

------
distalx
I'm very much in awe of author's subject expertises & writhing skills.

------
29athrowaway
So few people understand prototypal inheritance.

e.g.: sometimes you can do Object.create(obj) instead of Object.clone(obj) if
you just want to have a one-off object.

------
kwanbix
I don't get it. The ebook is 34 USD. At amazon you get the printed version for
31 USD. What is the logic there?

------
qwerty456127
> 🇺🇸 Amazon.com (USD) 🇬🇧 Amazon.co.uk (GBP)

What kind of letters is this? 🇬🇧 (copied) / GB / gb - same font, different
letters. Why?

~~~
ruricolist
Regional indicator symbols:

[https://en.wikipedia.org/wiki/Regional_Indicator_Symbol](https://en.wikipedia.org/wiki/Regional_Indicator_Symbol)

------
m4r35n357
Heh, show me a patient JS dev ;)

~~~
noisem4ker
I consider myself a patient developer, yet I don't have any patience for
JavaScript's bullshit.

~~~
m4r35n357
sort of my point . . .

------
0xDEEPFAC
Just what we need - more uncaring ECMA programmers putting out substandard,
massively slow, non-native code...

