Good Afternoon!

Sharpening Your JS Claws

@mafinar

Alternate Title(s)

  • JavaScript: The Meta Parts
  • Understanding a misunderstood ecosystem
  • Why I hate JavaScript?
  • Not...
  • Beyond $jQuery, beyond copy-paste, beyond fatigue

... and many more

But let's not give you JS fatigue already...

How many JavaScript programmers does it take to change a light-bulb?

Counter: How many light-bulbs do you want to end up with?

In all seriousness...

  • One of the most popular programming languages in the world
  • Huge ecosystem, thousands of libraries
  • Used by all websites and apps that matters
  • Owns a non-replaceable position in a niche
  • Got some really cool ideas worth familiarizing with

Stuff I'd discuss

  • The Language
  • The Flavors
  • The Libraries & Frameworks
  • The Tools
  • The Nutshell(?)

Above all...

The attitude to start groking the culture and road towards using it...

and NO CODES :D

JavaScript As A Language

  • Family: C
  • Object Oriented: Prototypal
  • Typing: Dynamic and Weak
  • Functional: Scheme Influenced
  • Sugary Sweet (ES6)

Make sure you know the damn language!!!

and reason about its usage(s)...

Sharpen your claw...

  • Asynchronous v Synchronouse flow
  • Type Coercion
  • Prototype Inheritance
  • Functional Programming
  • Closures, Callbacks and Promises
  • Design Patterns
  • Question Everything
    • Reason the Answers

Flavors of JavaScript

On the Browser

  • Glue
  • Mediumish
  • OMG Full SPA

The Server

  • "The" Library
  • Some Libraries
  • Frameworks

Mobile

  • Hybrid Framework
  • Go Native

Everything Else...

  • There is a library for almost everything...

Languages...

  • JavaScript
  • ES{x: 1 > x > 6 || 2015 < x < 2017}
  • CoffeeScript
  • TypeScript
  • ClojureScript
  • Elm
  • ...
  • ...
  • FatigueScript

Libraries and Frameworks

But let's think for a second...

Think about flavors...

  • What are you building?
  • Why are you building what you're building?
  • Who are you building it for/with?
  • When are you shipping it?

Going meta...

  • What type of personality defines you?
  • What school of thought are you in?
  • What company do you keep (or work at?)
  • What's your aim in life?

My Personal Favorite...

  • Re-Frame/Reagent
  • React[Native]
  • MobX
  • Inferno
  • OnsenUI
  • NuclearJS

Languagewise...

  • ClojureScript
  • TypeScript
  • ES2016

Sharpen your Claw...

  • Explore frameworks within your domain
  • Once selected, stick with it
  • Know it, live it, inside out
  • Make great projects with it
  • Be loud about it
  • Know the community
  • Go to step 1

The Tools

Focus on the work at hand...

Introducing...

  • Build Tools and Task Runners
  • Boilerplates and Generators
  • Debuggers
  • Module Bundlers
  • Transpilers
  • Fatigue Relievers(?)

They exist for a reason...

Make sure you  know what you need

and ensure you do...

You don't need everything...

Stuff I use...

  • Gulp
  • Webpack
  • Brunch

Sharpen your Pencil

  • Don't Repeat Yourself, use Tasks
  • Let the tools compile it for you, or run, or test, or pretty much any non-business logic stuff
  • I think boilerplates are cool for a language like JavaScript, use them, or give us one...
  • If you're happy with your tool, use it well.

Le Nutshell...

  • JavaScript is inevitable at times, learn it well.
  • Learn it rights
  • The language is often misunderstood, understand it well
  • Embrace best practices, test, benchmark, debug and document
  • The ecosystem is overwhelming for a reason, don't let that get to you
  • Start with your use case, pick a set and go to town with it!
  • Make "reasoning about" your mantra and the path will walk itself for you
Made with Slides.com