
Ask HN: JavaScript developer – what do I need to know? - peterchon
I feel like I have a pretty firm grasp on OOJS and am proficient at solving any JS problem without using a library. What should I be concentrating on now to be &quot;Javascript developer&quot;?
======
dccoolgai
JS doesn't really become a "thing" until you combine it with the web. Learn
the new and recent things that are happening with the web platform - Web
Workers, Service Workers (Holy crap this will blow your mind when you learn
about it.), WebRTC, etc. I'm going to go directly against the grain of the
highest-rated comment here (sorry) and say "DON'T learn any of the frameworks"
(Angular, React, whatever one they came out with this week) unless you are
completely bored with the web platform / ES6 stuff. Reason: Platform stuff
will be here 5 years from now. The framework they are all monkeying with (is
it React this week?) most likely won't be. Go ahead and learn one of the
frameworks if you want to appear erudite in an interview or something, but
otherwise focus on things that will stick. (For suggestions, browse
"caniuse.com" and read the crap out of anything JS-related you haven't
seen/heard of that at least 2 browsers intend on implementing.)

Node. This is the most focused way to become one with "asyncness" in JS.

Lodash. is JS zen. Even if you don't use it for everything, try and "think
like it" when you are solving problems.

For grins and giggles go read some of the "Data Structures and Algorithms in
JS" posts or books they have. Do different sorting algorithms.

My breakthrough moment in my JS journey was codewars.com . When you see how
clever you _aren 't_ after understanding other people's much more elegant
solutions to problems - only then do you realize what you need to do to get
better. True in life - true in JS.

~~~
moron4hire
I recently told a friend who is also learning to program that using frameworks
is like driving a speedboat, and he was still learning to swim. Yes, the point
is that they get you down the coastline faster, but if it springs a leak, it
will be really bad to not know how to swim.

~~~
wwweston
jQuery and underscore/lodash _might_ be a speedboats. Backbone might be a
small yacht. Just about everything else popular is a cruise ship or aircraft
carrier.

~~~
moron4hire
Then, if we don't call passengers on cruise ships engineers, then why do we
call Angular users engineers?

------
michaelchisari
• Patterns (FRP, RP, etc)

• Ecmascript 6

• Frameworks (React, Ember, Angular are the big three)

Beyond that, it's important to understand the pain points that people are
trying to solve. For instance, why is React a better approach to front-end
UI's than MVC? Is JSX a reasonable approach to the DOM, and is it worth
breaking conventional wisdom? What problem does Facebook's css-layout solve?
What issues with modularity and reusability are people trying to solve, and
how is this different at different scales of complexity? What's the "why"
behind the changes to ES6?

And even beyond that, look at the future, and see what people are trying to
solve that nobody has quite solved yet.

In other words, don't just understand what you can do with Javascript,
understand what _hurts_ and how people are trying to fix it, or at least make
it hurt less.

~~~
peterchon
It's really weird to me trying to do a lot of data handling on the front-end
side rather than using server-side.

~~~
Bahamut
I spoke to one acquaintance about this after he told me that for his team,
they are doing the calculations on the frontend mostly - his explanation was
that it turned out to be too unperformant to cache precomputed values in a
remote database (and even in IndexedDB) and pull them out (his company does a
lot of work involving heavy data analytics & visualizations).

~~~
michaelchisari
Especially considering how fast even the slowest computers of today are, the
client-server architecture gives us the option to immediately decentralize
calculations across all clients as needed. It's an easy optimization that's
hard to give up, but does present it's own challenges.

------
marijn
See if [http://eloquentjavascript.net](http://eloquentjavascript.net) works
for you. It doesn't focus on OO, but that's okay, because trying to model
everything as OO in JS is going to be painful.

~~~
verbin217
The first few chapters of this book are, to the extant that I'm aware, the
best introduction to the concepts of programming in existence.

Also, the online version of the book features an inline code-highlighting text
editor from the same author as the book. You can use it to edit and evaluate
the examples. It's actually the same editor used in the Chrome developer
tools.

------
mobinni
If you're focusing on OOJS then you should be focusing on learning other
programming patterns in JS, because it isn't meant to be used in an OO
context.

Look into stuff like functional programming, reactive programming, contextual
programming. Learn the patterns and learn to apply them in your projects

~~~
peterchon
I guess that was the problem I faced when I started down the OOJS - what do I
exactly use this for? I understand that it's a great way for reuse &
extending, but aside from giant applications with numerous developers, is it
really useful?

~~~
mobinni
Well with any program language you can solve a multitude of problems I guess
what you need to do is start by learning the concepts from the basics

[http://eloquentjavascript.net/1st_edition/chapter6.html](http://eloquentjavascript.net/1st_edition/chapter6.html)

Also maybe look at larger libraries like underscore, lodash and get acquainted
with the programming concepts they apply since they are well maintained
libraries.

I read you are familiar with AngularJS, get into the source code, understand
how the beast works. Get your hands dirty, maybe build something into the
angular library itself just to test it out.

------
bvanslyke
\- Location of a good bar near your workplace.

\- A taste for strong drinks.

\- An ignorance of how nice other languages/environments are.

------
ksmithbaylor
I have been reading through this awesome book series called You Don't Know JS
(youdontknowjs.com), and it's helped me SO MUCH to understand JS at the next
level.

I had the immense pleasure of taking a workshop with Kyle Simpson, the author,
at a conference last year and it covered much of the material from his books.
In particular I found the book on 'this' and object prototypes to be
fantastic.

~~~
peterchon
I'll have to check that out - thanks!

------
M8
[http://wtfjs.com](http://wtfjs.com)

~~~
peterchon
interesting find. It's a wonder that JS is moving into everything.

~~~
Zelphyr
Every language has its idiosyncrasies, annoyances, and wtf's. Because they're
written by humans who have idiosyncrasies, annoyances, and wtf's.

JS is moving into everything because it's easy to learn, reasonably
expressive, and is accessible. It may not be the best but often as not its the
"good enough" that seems to rise to the top.

In other words; you're better off accepting it for what it is and doing the
best you can with it.

~~~
M8
No. It's moving into everything because it's well established in browsers.
Otherwise nobody would use it.

~~~
Zelphyr
Thus it being "accessible".

------
steveax
I think Rebecca Murphey's latest "Baseline" post [1] covers this pretty well.
Not sure I'd include Node, but ES2015, modules, testing and build
tools/automation for sure. You should know your way around the browser dev
tools, have a good handle on async and promises and understand the DOM and
events.

[1]: [http://rmurphey.com/blog/2015/03/23/a-baseline-for-front-
end...](http://rmurphey.com/blog/2015/03/23/a-baseline-for-front-end-
developers-2015/)

------
rohitv
Closure/ Promises.

I am surprised by how many js developers that I personally know are unaware of
them.

------
haidrali
I think you need to get hands on Front end JavaScript frameworks like
AngularJS. Also you should be comfortable with widely used JS libraries and
plugins (bootstrap, J query etc)

~~~
peterchon
I have a pretty solid understanding of AngularJS, and I can't really think of
any project that really <i>requires</i> jQuery.

~~~
hashberry
Yet many projects do use jQuery, so if you're in an interview you should be
able to say you've built a jQuery plug-in.

------
joshuapants
If you haven't already, start compiling a portfolio. Show what you can do, and
all the better if you can show that what you've worked on has practical use.

~~~
peterchon
I have, but I'm having hard time creating projects that uses (or rather
justify using) the higher-level JS programming paradigm.

~~~
michaelchisari
Build a social network to compete with Facebook.

I kid (I tried to do the same thing), but in reality, the higher level
programming paradigms come into play when your software complexity increases
to unmanageable levels.

Building small projects won't help you understand why they're necessary.

------
andyfleming
Are you looking to develop server-side projects in javascript, client-side
applications, or both?

