Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

I\'m a backend programmer who works mainly in Python. I\'ll probably never want

ID: 646644 • Letter: I

Question

I'm a backend programmer who works mainly in Python. I'll probably never want to be a full time front end developer, but with the goal of growing my skill set, I would like to become at least passably proficient in JavaScript. It seems like a language that is wearing a lot of hats nowadays, and if nothing else, I'd like to a little more knowledgable about 'their world' when I'm working with front end guys.

We're using NodeJS for some server side work at my company, and I was curious about it. I've found a few good tutorials and it seems interesting. It seems like it might be a good way to familiarize myself with JavaScript, since it comes at it from an angle that I understand -- server side programming.

But I am also a little worried that if I learn both at once, I won't be able to keep track of what's 'Stock JavaScript' vs features that are particular to NodeJS.

What do you guys think? Is bootstrapping myself into JavaScript familiarity by learning NodeJS a good idea? Or will I just confuse myself if I jump into Node without a solid understanding of the fundamentals of JavaScript?

Explanation / Answer

Getting into JavaScript is definitely a good idea, as JavaScript is only getting better and more popular.

Front-end JavaScript development is extremely different then Node.js (Server-side) programming/development. Each browser has their own support of JavaScript features, meaning, features are not always readily available across every browsers. Especially with the new version of ECMAScript, it's becoming extremely hard to take advantage of, as most browsers, or the majority of users (apart from chrome) are on older browsers. Chrome has had auto-updates for a long time, so it's users don't need to take any action. They typically get the majority of their users upgraded within a few weeks. You still have Internet Explorer 6,7, and 8 problems, and even 9 (Not many new features that are in HTML5 and ECMAScript spec). Firefox is fairly good, and they seem to be on a good track implementing new features all the time.

On the client-side you have 3-5 different JavaScript engines; V8 (Chrome & Node.js), IonMonkey (Firefox has had multiple engines), Carakan (Opera), JavaScriptCore (Safari), Chakra (Internet Explorer). Each engine has different architectures (JIT, byte-code, machine code, etc...) and now each have different support for ECMAScript 6 (Harmony).

With Node.js, you can start to take advantage of newer JavaScript features as you only have to support one JavaScript engine (V8). This makes it extremely easy to work with, as you're not jumping through hoops trying to do feature detection, hack the system, etc...

Lesson 1: Developing within Node.js is luxury compared to the client-side, but with the power of frameworks and libraries like JQuery, Ember.js, Angular, Handlebars (Templating), Modernizr, etc... your work load dramatically decreases.

Performance, Optimization, and the DOM... This is what client-side development is like. If you start with Node.js, you'll start to use (hopefully) build and deploy tools like GruntJS, Yeoman, Cake, etc... These will be incredibly useful when working with client-side JavaScript. Start looking into different module systems; Node.js uses CommonJS. AMD is another choice for development.

JavaScript as a language is simple to get started with. Once you dig deeper down, you'll find how flexible a prototypal model is.

The asynchronous model might be a little scary at first, but no need to be afraid. It's quite simple when you understand it. You'll go through the traditional stage of callback hell, but you'll be able to learn some design patterns to avoid them.

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote