SlideShare a Scribd company logo
1 of 17
How to survive the
JavaScript apocalypse?
Póth Attila 2016
HOW DID WE GET HERE?
Explain the last 20 years of JS world to your grandma
#WebDev 1990s
"Should array indices start at 0 or 1? My compromise
of 0.5 was rejected without, I thought, proper
consideration." - Stan Kelly-Bootle
#WebDev 2000s
"Alternative browsers, led by Firefox, continue to steal back market share from Internet Explorer. As a result,
sites that only work in IE are seen by the industry and by media as the sub-standard pieces of junk they are,
and are subjected to public ridicule on the web, in newspapers, and in magazines, and maybe even on TV. "
- Roger Johansson (456 Berea street): Predictions and hopes for 2005
#WebDev 2015
"At times, I think where web
development is at this point is some
cruel joke [...]"
- Drew Hamlett: The Sad State of Web Development
"Lastly, combining a quick iteration cycle with a
seemingly infinite amount of libraries makes for a
very dangerous mix. Everything is just one bower
install oh-my-shiny-library away."
- Manuel Bernhardt: Generation Javascript
(R)EVOLUTION
What's happening?
Phylogenetic tree & eras of
the UI world
1. Stone age: PHP +
static HTML + JS
enhance era
2. Bronze age: jQuery
era
3. Iron age: RequireJS +
Backbone
4. Renessaince: Node -
CommonJS / tooling /
MVC-MVVM-MV*
wars
5. Steampunk: Post-
MV* / bundling /
components + libs era
6. Space age: ...?
1. PHP / jQuery plumber-hackers,
Joomla-Wordpress gurus,
fullstack garage-company saviors
2. Oldschool classic
first-gen MVC grandmasters,
"own frameworkers"
3. Opinionated MVC superheroes,
Angular evangelists,
anti-Angular freedom fighters
(a.k.a. "haters gonna hate")
4. Early-adopter trendhunter ninjas,
popularists gold-diggers
5. Future-seer weirdo
wizards / monks / oraculums
Typical developer characters based on
which era they coming from
LEVEL UP FOR PLUMBERS
Fighting with the spaghetti monster
Fighting with the spaghetti monster
• Know the language
• Good, bad & the ugly: use style guides (Airbnb, Google,
Crockford)
• There is always a better code: refactor!
• Design patterns (Addy Osmani ebook)
• OOP vs Functional programming (mpj youtube channel)
• Get familiar with concepts: modularisation, dependency
management, MVC (Backbone), task runners, envs
• Know your tools, hello command line!
• There is a solution already for everything: know libraries,
frameworks!
• Stay tuned: Javascript weekly, HTML5 weekly, Smashing Mag
LEVEL UP FOR THE OTHERS
Framework world wars
Framework world wars
• Level up command line (Git bash)
• Think in a team: Git, Github, feature branching, pull
requests, code reviews
• Write modular code, extract everything you can,
• Use task runners (Gulp, Grunt, Broccoli), bundle your
code for different envs (Webpack, Browserify)
• Try as many frameworks as you can, master one
• Choose based on the requirements (not every
project needs a full-blown MVC like Angular)
ASKING THE RIGHT QUESTIONS
Adapt or die? Swim with the flow?
Technology stack evolution
1. jQuery, jQuery UI, Prototype
Dep.mgmt: IIFE, globals
Tools: copy-paste online
minifiers, CVS
2. MVC, Backbone, templating,
REST
Dep.mgmt: RequireJS
Tools: SVN, Git
3. MVVM, Angular, Ember
(+jQuery)
Server-side js: Node
Dep.mgmt: CommonJS vs AMD
Tools: Grunt, Karma-Jasmine
CSS preprocessors
4. MV*, Angular + jqLite, MEAN stack,
Polymer shadow-dom, Material design
Compile to JS, Babel, webassembly
IO.js
PostCSS
Tools: Gulp, Broccoli
Devtools: Chrome devtools
Automated testing: Selenium,
Protractor, CucumberJS
5. React, React Native, RX, cycle.js
ES6-ES7
Inline CSS w/JS
Model: Flux, Redux, Falcor, GraphQL,
ImmutableJS, Relay
Tools: Browserify, Webpack
Devtools: time travel debugging, hot
reload
LEVEL UP+: SECRET ARCANUMS
Trends & future-proof recipees
Trends & future-proof recipes
1. Tech interview question: if you could choose
only one framework / technology in 2016,
which would you pick? (ES6!)
2. Functional / stateful / applicative / declarative
over imperative (Redux)
3. Component development over MVCs
4. Purpose-specific libs over the One True
Framework (moment.js). Question: how these
fit together? (package.json w/ hundreds of
devDeps)
5. Open source ecosystem: popularity wars will
not end. Read the sources!
6. Everything is a stream (RX.js) – js meant for
functional, not OOP
7. Do we even need CSS anymore?
8. Native ES6-7 task runners
JavaScript,

More Related Content

What's hot

What is FED
What is FEDWhat is FED
What is FEDSam Lee
 
Dev evening - MonoTouch, MonoDroid, Mvvm MvvmCross and databinding
Dev evening - MonoTouch, MonoDroid, Mvvm MvvmCross and databindingDev evening - MonoTouch, MonoDroid, Mvvm MvvmCross and databinding
Dev evening - MonoTouch, MonoDroid, Mvvm MvvmCross and databindingStuart Lodge
 
Mobile JavaScript
Mobile JavaScriptMobile JavaScript
Mobile JavaScriptFil Maj
 
codecept.js introduce - front end test E2E tool introduce
codecept.js introduce - front end test E2E tool introducecodecept.js introduce - front end test E2E tool introduce
codecept.js introduce - front end test E2E tool introduceCaesar Chi
 
JavaScript와 TypeScript의 으리 있는 만남
JavaScript와 TypeScript의 으리 있는 만남JavaScript와 TypeScript의 으리 있는 만남
JavaScript와 TypeScript의 으리 있는 만남영욱 김
 
Enki.js, lessons learned while writing a javascript framework
Enki.js, lessons learned while writing a javascript frameworkEnki.js, lessons learned while writing a javascript framework
Enki.js, lessons learned while writing a javascript frameworkRadu Iscu
 
Morden F2E Education - Think of Progressive Web Apps
Morden F2E Education - Think of Progressive Web AppsMorden F2E Education - Think of Progressive Web Apps
Morden F2E Education - Think of Progressive Web AppsCaesar Chi
 
Unleash and Empower Your Engineers
Unleash and Empower Your EngineersUnleash and Empower Your Engineers
Unleash and Empower Your EngineersJeff Harrell
 
Introduce Angular2 & render & firebase flow
Introduce Angular2 & render & firebase flowIntroduce Angular2 & render & firebase flow
Introduce Angular2 & render & firebase flowCaesar Chi
 
Building a PWA with Ionic, Angular and Spring Boot - Jfokus 2017
Building a PWA with Ionic, Angular and Spring Boot - Jfokus 2017Building a PWA with Ionic, Angular and Spring Boot - Jfokus 2017
Building a PWA with Ionic, Angular and Spring Boot - Jfokus 2017Matt Raible
 
WebAssembly: Digging a bit deeper
WebAssembly: Digging a bit deeperWebAssembly: Digging a bit deeper
WebAssembly: Digging a bit deeperAll Things Open
 
Anton Sakharov: The risks you take when develop cross-platform apps using HT...
 Anton Sakharov: The risks you take when develop cross-platform apps using HT... Anton Sakharov: The risks you take when develop cross-platform apps using HT...
Anton Sakharov: The risks you take when develop cross-platform apps using HT...Mobile Trends
 
Typescript: Javascript senza problemi by Andrea Boschin
Typescript: Javascript senza problemi by Andrea BoschinTypescript: Javascript senza problemi by Andrea Boschin
Typescript: Javascript senza problemi by Andrea BoschinCodemotion
 
WHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDY (English)
WHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDY (English)WHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDY (English)
WHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDY (English)Hyun-woo Park
 
Alexander Shitikov: Cross Platform Mobile Development. Business Logic for mob...
Alexander Shitikov: Cross Platform Mobile Development. Business Logic for mob...Alexander Shitikov: Cross Platform Mobile Development. Business Logic for mob...
Alexander Shitikov: Cross Platform Mobile Development. Business Logic for mob...Mobile Trends
 
Letter to a Junior Developer: The Engineering Side of Programming
Letter to a Junior Developer: The Engineering Side of ProgrammingLetter to a Junior Developer: The Engineering Side of Programming
Letter to a Junior Developer: The Engineering Side of ProgrammingLazar Kovacevic
 
[Mas 500] Mobile Basics
[Mas 500] Mobile Basics[Mas 500] Mobile Basics
[Mas 500] Mobile Basicsrahulbot
 
Full stack development
Full stack developmentFull stack development
Full stack developmentArnav Gupta
 

What's hot (20)

What is FED
What is FEDWhat is FED
What is FED
 
Dev evening - MonoTouch, MonoDroid, Mvvm MvvmCross and databinding
Dev evening - MonoTouch, MonoDroid, Mvvm MvvmCross and databindingDev evening - MonoTouch, MonoDroid, Mvvm MvvmCross and databinding
Dev evening - MonoTouch, MonoDroid, Mvvm MvvmCross and databinding
 
Mobile JavaScript
Mobile JavaScriptMobile JavaScript
Mobile JavaScript
 
codecept.js introduce - front end test E2E tool introduce
codecept.js introduce - front end test E2E tool introducecodecept.js introduce - front end test E2E tool introduce
codecept.js introduce - front end test E2E tool introduce
 
JavaScript와 TypeScript의 으리 있는 만남
JavaScript와 TypeScript의 으리 있는 만남JavaScript와 TypeScript의 으리 있는 만남
JavaScript와 TypeScript의 으리 있는 만남
 
Enki.js, lessons learned while writing a javascript framework
Enki.js, lessons learned while writing a javascript frameworkEnki.js, lessons learned while writing a javascript framework
Enki.js, lessons learned while writing a javascript framework
 
Coffee script throwdown
Coffee script throwdownCoffee script throwdown
Coffee script throwdown
 
Morden F2E Education - Think of Progressive Web Apps
Morden F2E Education - Think of Progressive Web AppsMorden F2E Education - Think of Progressive Web Apps
Morden F2E Education - Think of Progressive Web Apps
 
Unleash and Empower Your Engineers
Unleash and Empower Your EngineersUnleash and Empower Your Engineers
Unleash and Empower Your Engineers
 
Introduce Angular2 & render & firebase flow
Introduce Angular2 & render & firebase flowIntroduce Angular2 & render & firebase flow
Introduce Angular2 & render & firebase flow
 
Building a PWA with Ionic, Angular and Spring Boot - Jfokus 2017
Building a PWA with Ionic, Angular and Spring Boot - Jfokus 2017Building a PWA with Ionic, Angular and Spring Boot - Jfokus 2017
Building a PWA with Ionic, Angular and Spring Boot - Jfokus 2017
 
WebAssembly: Digging a bit deeper
WebAssembly: Digging a bit deeperWebAssembly: Digging a bit deeper
WebAssembly: Digging a bit deeper
 
Anton Sakharov: The risks you take when develop cross-platform apps using HT...
 Anton Sakharov: The risks you take when develop cross-platform apps using HT... Anton Sakharov: The risks you take when develop cross-platform apps using HT...
Anton Sakharov: The risks you take when develop cross-platform apps using HT...
 
Typescript: Javascript senza problemi by Andrea Boschin
Typescript: Javascript senza problemi by Andrea BoschinTypescript: Javascript senza problemi by Andrea Boschin
Typescript: Javascript senza problemi by Andrea Boschin
 
WHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDY (English)
WHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDY (English)WHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDY (English)
WHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDY (English)
 
Adobemax2009na
Adobemax2009naAdobemax2009na
Adobemax2009na
 
Alexander Shitikov: Cross Platform Mobile Development. Business Logic for mob...
Alexander Shitikov: Cross Platform Mobile Development. Business Logic for mob...Alexander Shitikov: Cross Platform Mobile Development. Business Logic for mob...
Alexander Shitikov: Cross Platform Mobile Development. Business Logic for mob...
 
Letter to a Junior Developer: The Engineering Side of Programming
Letter to a Junior Developer: The Engineering Side of ProgrammingLetter to a Junior Developer: The Engineering Side of Programming
Letter to a Junior Developer: The Engineering Side of Programming
 
[Mas 500] Mobile Basics
[Mas 500] Mobile Basics[Mas 500] Mobile Basics
[Mas 500] Mobile Basics
 
Full stack development
Full stack developmentFull stack development
Full stack development
 

Similar to How to survive the JavaScript apocalypse

An introduction to Node.js
An introduction to Node.jsAn introduction to Node.js
An introduction to Node.jsKasey McCurdy
 
Finding harmony in web development
Finding harmony in web developmentFinding harmony in web development
Finding harmony in web developmentChristian Heilmann
 
Let's unRiddle jsFiddle
Let's unRiddle jsFiddleLet's unRiddle jsFiddle
Let's unRiddle jsFiddlerhoward_blk
 
Do you need jQuery in 2019?
Do you need jQuery in 2019?Do you need jQuery in 2019?
Do you need jQuery in 2019?LindaHsu19
 
What's this jQuery? Where it came from, and how it will drive innovation
What's this jQuery? Where it came from, and how it will drive innovationWhat's this jQuery? Where it came from, and how it will drive innovation
What's this jQuery? Where it came from, and how it will drive innovationMarakana Inc.
 
Js everywhere (Georgy Bunin)
Js everywhere (Georgy Bunin)Js everywhere (Georgy Bunin)
Js everywhere (Georgy Bunin)Georgy Bunin
 
Javascript library toolbox
Javascript library toolboxJavascript library toolbox
Javascript library toolboxSkysoul Pty.Ltd.
 
ClojureScript in Magento 2 - MageTitansMCR 2017
ClojureScript in Magento 2 - MageTitansMCR 2017ClojureScript in Magento 2 - MageTitansMCR 2017
ClojureScript in Magento 2 - MageTitansMCR 2017vinaikopp
 
Wintellect - Devscovery - Enterprise JavaScript Development 2 of 2
Wintellect - Devscovery - Enterprise JavaScript Development 2 of 2Wintellect - Devscovery - Enterprise JavaScript Development 2 of 2
Wintellect - Devscovery - Enterprise JavaScript Development 2 of 2Jeremy Likness
 
JDD2015: Java Everywhere Again—with DukeScript - Jaroslav Tulach
JDD2015: Java Everywhere Again—with DukeScript - Jaroslav TulachJDD2015: Java Everywhere Again—with DukeScript - Jaroslav Tulach
JDD2015: Java Everywhere Again—with DukeScript - Jaroslav TulachPROIDEA
 
JavaScript: The Machine Language of the Ambient Computing Era
JavaScript: The Machine Language of the Ambient Computing EraJavaScript: The Machine Language of the Ambient Computing Era
JavaScript: The Machine Language of the Ambient Computing EraAllen Wirfs-Brock
 
JavaScript - The Universal Platform?
JavaScript - The Universal Platform?JavaScript - The Universal Platform?
JavaScript - The Universal Platform?Jonas Bandi
 
LAMP is so yesterday, MEAN is so tomorrow! :)
LAMP is so yesterday, MEAN is so tomorrow! :) LAMP is so yesterday, MEAN is so tomorrow! :)
LAMP is so yesterday, MEAN is so tomorrow! :) Sascha Sambale
 
Mvvm knockout vs angular
Mvvm knockout vs angularMvvm knockout vs angular
Mvvm knockout vs angularBasarat Syed
 
Going offline with JS (DDD Sydney)
Going offline with JS (DDD Sydney)Going offline with JS (DDD Sydney)
Going offline with JS (DDD Sydney)brendankowitz
 
JavaScript MV* Framework - Making the Right Choice
JavaScript MV* Framework - Making the Right ChoiceJavaScript MV* Framework - Making the Right Choice
JavaScript MV* Framework - Making the Right ChoiceDmitry Sheiko
 
DownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem
DownTheRabbitHole.js – How to Stay Sane in an Insane EcosystemDownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem
DownTheRabbitHole.js – How to Stay Sane in an Insane EcosystemFITC
 

Similar to How to survive the JavaScript apocalypse (20)

An introduction to Node.js
An introduction to Node.jsAn introduction to Node.js
An introduction to Node.js
 
Finding harmony in web development
Finding harmony in web developmentFinding harmony in web development
Finding harmony in web development
 
Let's unRiddle jsFiddle
Let's unRiddle jsFiddleLet's unRiddle jsFiddle
Let's unRiddle jsFiddle
 
Do you need jQuery in 2019?
Do you need jQuery in 2019?Do you need jQuery in 2019?
Do you need jQuery in 2019?
 
What's this jQuery? Where it came from, and how it will drive innovation
What's this jQuery? Where it came from, and how it will drive innovationWhat's this jQuery? Where it came from, and how it will drive innovation
What's this jQuery? Where it came from, and how it will drive innovation
 
Js everywhere (Georgy Bunin)
Js everywhere (Georgy Bunin)Js everywhere (Georgy Bunin)
Js everywhere (Georgy Bunin)
 
Javascript library toolbox
Javascript library toolboxJavascript library toolbox
Javascript library toolbox
 
ClojureScript in Magento 2 - MageTitansMCR 2017
ClojureScript in Magento 2 - MageTitansMCR 2017ClojureScript in Magento 2 - MageTitansMCR 2017
ClojureScript in Magento 2 - MageTitansMCR 2017
 
Wintellect - Devscovery - Enterprise JavaScript Development 2 of 2
Wintellect - Devscovery - Enterprise JavaScript Development 2 of 2Wintellect - Devscovery - Enterprise JavaScript Development 2 of 2
Wintellect - Devscovery - Enterprise JavaScript Development 2 of 2
 
JDD2015: Java Everywhere Again—with DukeScript - Jaroslav Tulach
JDD2015: Java Everywhere Again—with DukeScript - Jaroslav TulachJDD2015: Java Everywhere Again—with DukeScript - Jaroslav Tulach
JDD2015: Java Everywhere Again—with DukeScript - Jaroslav Tulach
 
JavaScript: The Machine Language of the Ambient Computing Era
JavaScript: The Machine Language of the Ambient Computing EraJavaScript: The Machine Language of the Ambient Computing Era
JavaScript: The Machine Language of the Ambient Computing Era
 
JavaScript - The Universal Platform?
JavaScript - The Universal Platform?JavaScript - The Universal Platform?
JavaScript - The Universal Platform?
 
LAMP is so yesterday, MEAN is so tomorrow! :)
LAMP is so yesterday, MEAN is so tomorrow! :) LAMP is so yesterday, MEAN is so tomorrow! :)
LAMP is so yesterday, MEAN is so tomorrow! :)
 
Mvvm knockout vs angular
Mvvm knockout vs angularMvvm knockout vs angular
Mvvm knockout vs angular
 
Going offline with JS (DDD Sydney)
Going offline with JS (DDD Sydney)Going offline with JS (DDD Sydney)
Going offline with JS (DDD Sydney)
 
JavaScript MV* Framework - Making the Right Choice
JavaScript MV* Framework - Making the Right ChoiceJavaScript MV* Framework - Making the Right Choice
JavaScript MV* Framework - Making the Right Choice
 
DownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem
DownTheRabbitHole.js – How to Stay Sane in an Insane EcosystemDownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem
DownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem
 
Node.JS briefly introduced
Node.JS briefly introducedNode.JS briefly introduced
Node.JS briefly introduced
 
Drupal Backbone.js in the Frontend
Drupal Backbone.js in the FrontendDrupal Backbone.js in the Frontend
Drupal Backbone.js in the Frontend
 
The Java alternative to Javascript
The Java alternative to JavascriptThe Java alternative to Javascript
The Java alternative to Javascript
 

Recently uploaded

A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 

Recently uploaded (20)

A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 

How to survive the JavaScript apocalypse

  • 1. How to survive the JavaScript apocalypse? Póth Attila 2016
  • 2. HOW DID WE GET HERE? Explain the last 20 years of JS world to your grandma
  • 3. #WebDev 1990s "Should array indices start at 0 or 1? My compromise of 0.5 was rejected without, I thought, proper consideration." - Stan Kelly-Bootle
  • 4. #WebDev 2000s "Alternative browsers, led by Firefox, continue to steal back market share from Internet Explorer. As a result, sites that only work in IE are seen by the industry and by media as the sub-standard pieces of junk they are, and are subjected to public ridicule on the web, in newspapers, and in magazines, and maybe even on TV. " - Roger Johansson (456 Berea street): Predictions and hopes for 2005
  • 5. #WebDev 2015 "At times, I think where web development is at this point is some cruel joke [...]" - Drew Hamlett: The Sad State of Web Development "Lastly, combining a quick iteration cycle with a seemingly infinite amount of libraries makes for a very dangerous mix. Everything is just one bower install oh-my-shiny-library away." - Manuel Bernhardt: Generation Javascript
  • 7. Phylogenetic tree & eras of the UI world 1. Stone age: PHP + static HTML + JS enhance era 2. Bronze age: jQuery era 3. Iron age: RequireJS + Backbone 4. Renessaince: Node - CommonJS / tooling / MVC-MVVM-MV* wars 5. Steampunk: Post- MV* / bundling / components + libs era 6. Space age: ...?
  • 8. 1. PHP / jQuery plumber-hackers, Joomla-Wordpress gurus, fullstack garage-company saviors 2. Oldschool classic first-gen MVC grandmasters, "own frameworkers" 3. Opinionated MVC superheroes, Angular evangelists, anti-Angular freedom fighters (a.k.a. "haters gonna hate") 4. Early-adopter trendhunter ninjas, popularists gold-diggers 5. Future-seer weirdo wizards / monks / oraculums Typical developer characters based on which era they coming from
  • 9. LEVEL UP FOR PLUMBERS Fighting with the spaghetti monster
  • 10. Fighting with the spaghetti monster • Know the language • Good, bad & the ugly: use style guides (Airbnb, Google, Crockford) • There is always a better code: refactor! • Design patterns (Addy Osmani ebook) • OOP vs Functional programming (mpj youtube channel) • Get familiar with concepts: modularisation, dependency management, MVC (Backbone), task runners, envs • Know your tools, hello command line! • There is a solution already for everything: know libraries, frameworks! • Stay tuned: Javascript weekly, HTML5 weekly, Smashing Mag
  • 11. LEVEL UP FOR THE OTHERS Framework world wars
  • 12. Framework world wars • Level up command line (Git bash) • Think in a team: Git, Github, feature branching, pull requests, code reviews • Write modular code, extract everything you can, • Use task runners (Gulp, Grunt, Broccoli), bundle your code for different envs (Webpack, Browserify) • Try as many frameworks as you can, master one • Choose based on the requirements (not every project needs a full-blown MVC like Angular)
  • 13. ASKING THE RIGHT QUESTIONS Adapt or die? Swim with the flow?
  • 14. Technology stack evolution 1. jQuery, jQuery UI, Prototype Dep.mgmt: IIFE, globals Tools: copy-paste online minifiers, CVS 2. MVC, Backbone, templating, REST Dep.mgmt: RequireJS Tools: SVN, Git 3. MVVM, Angular, Ember (+jQuery) Server-side js: Node Dep.mgmt: CommonJS vs AMD Tools: Grunt, Karma-Jasmine CSS preprocessors 4. MV*, Angular + jqLite, MEAN stack, Polymer shadow-dom, Material design Compile to JS, Babel, webassembly IO.js PostCSS Tools: Gulp, Broccoli Devtools: Chrome devtools Automated testing: Selenium, Protractor, CucumberJS 5. React, React Native, RX, cycle.js ES6-ES7 Inline CSS w/JS Model: Flux, Redux, Falcor, GraphQL, ImmutableJS, Relay Tools: Browserify, Webpack Devtools: time travel debugging, hot reload
  • 15. LEVEL UP+: SECRET ARCANUMS Trends & future-proof recipees
  • 16. Trends & future-proof recipes 1. Tech interview question: if you could choose only one framework / technology in 2016, which would you pick? (ES6!) 2. Functional / stateful / applicative / declarative over imperative (Redux) 3. Component development over MVCs 4. Purpose-specific libs over the One True Framework (moment.js). Question: how these fit together? (package.json w/ hundreds of devDeps) 5. Open source ecosystem: popularity wars will not end. Read the sources! 6. Everything is a stream (RX.js) – js meant for functional, not OOP 7. Do we even need CSS anymore? 8. Native ES6-7 task runners

Editor's Notes

  1. Photo credits: http://nohopefor.us/ Predictions expiry date: 3 weeks from opening.
  2. Based on the standard interview question: how would you explain MVC concept to your grandma?
  3. - HTTP protocol, request-response - Serving raw static html pages - table, iframe, marquee, blink, inline css - 1995 Javascript: client-side form enhancement only - 1995 FutureWave Software acquired by Macromedia, FutureSplash Animator renamed to Flash - 1999 Microsoft released proprietrary ActiveX extension for IE called XMLHTTP, soon adapted by Mozilla, Safari, Opera as XMLHTTPRequest (XHR) - Launch of Gmail -> term AJAX
  4. - PHP4.0 (2000): templating (about_us.php, contact_us.php) - "divitis" / unsemantic html, rounded corner hacks - CMS zoo (Drupal, Joomla, Wordpress): web development for the masses - Steps towards realtime web: hidden iframe, xhr polling, xhr long polling, JSONP, HTTP piggybacking - support IE6, IE7, IE8, ...
  5. - HTML5: dozens of different APIs supported by different browser vendors - CSS3: semantic elements, BEM, style guides, scalability, animations, responsive web. - cross-browser hacks for legacy browserS (sic! - IE) - Quasi-standards based on popularity: Bootstrap, HTML5 Boilerplate, Yeoman (where to start a project??) - Diversity, chaos, communities supporting different frameworks - MVC wars: in search of the next holy grail (Angular 2.0) - Server side javascript, noSQL/schemaless databases, Internet of Things - Non-blocking, async, promise, sockets, real-time web, respsonsivity benchmarks (1000ms), REST architectures - Tools: node ecosystem, dependency management, preprocessors, build tools, scaffolding - Testing (TDD/BDD): Karma, Jasmine, Selenium, CucumberJS, Mocha, Chai, Chai-as-promised, etc
  6. Photo: Diversity and phylogenetic analysis of bacteria in the mucosa of chicken ceca and comparison with bacteria in the cecal lumen
  7. Era milestones (holy grails): 1 ➔ 2: jQuery 2 ➔ 3: Backbone 3 ➔ 4: Node, npm ecosystem, Angular 4 ➔ 5: React
  8. Typical developer characters based on which era they coming from. Our focus: #3-4-5 Our question: how to be a #5 To read: http://ferd.ca/the-little-printf.html
  9. Swim with the flow or not? Obviously yes if you are a dev. If business, you're probably already having hard times :D
  10. Javascript style guides: http://noeticforce.com/best-javascript-style-guide-for-maintainable-code Addy Osmani design patterns: https://addyosmani.com/resources/essentialjsdesignpatterns/book/ https://www.youtube.com/channel/UCO1cgjhGzsSYb1rsB4bFe4Q/videos http://javascriptweekly.com/ http://html5weekly.com/ https://www.smashingmagazine.com/
  11. Swim with the flow or not? Obviously yes if you are a dev. If business, you're probably already having hard times :D
  12. Javascript style guides: http://noeticforce.com/best-javascript-style-guide-for-maintainable-code Addy Osmani design patterns: https://addyosmani.com/resources/essentialjsdesignpatterns/book/
  13. Swim with the flow or not? Obviously yes if you are a dev. If business, you're probably already having hard times :D
  14. Question for devs: how to become an oraculum in this chaos? (You can't learn everything, you have to choose your weapon) Question for business: what tech stack is future-proof enough to stick to? (You can't pay for devs wanting to rewrite your whole app every 3 months when a new supercool framework comes up)
  15. Swim with the flow or not? Obviously yes if you are a dev. If business, you're probably already having hard times :D
  16. https://ponyfoo.com/articles/es6 https://medium.com/@wob/the-sad-state-of-web-development-1603a861d29f#.lv5sn4h9c https://drboolean.gitbooks.io/mostly-adequate-guide/ https://www.gitbook.com/book/jcouyang/functional-javascript https://medium.com/@PitaJ/stop-classifying-javascript-4cc823dfbedf http://rackt.org/redux/index.html https://gist.github.com/staltz/868e7e9bc2a7b8c1f754 http://xgrommx.github.io/rx-book// http://cycle.js.org/ http://staltz.com/why-react-redux-is-an-inferior-paradigm.html http://engineering.widen.com/blog/future-of-the-web-react-falcor/ https://edgecoders.com/why-i-think-react-with-graphql-and-relay-will-be-the-angular-js-killers-591174bafc15#.ukptk3ykw https://medium.com/@dan_abramov/the-evolution-of-flux-frameworks-6c16ad26bb31#.ghozw1ve0 http://teropa.info/blog/2015/09/10/full-stack-redux-tutorial.html https://www.youtube.com/watch?v=xsSnOQynTHs http://stackoverflow.com/questions/14994391/thinking-in-angularjs-if-i-have-a-jquery-background https://css-tricks.com/the-debate-around-do-we-even-need-css-anymore/ https://medium.com/swlh/you-might-not-need-gulp-js-89a0220487dd#.i8xl3ujge https://medium.com/@housecor/why-i-left-gulp-and-grunt-for-npm-scripts-3d6853dd22b8#.18t4ocd5w
  17. Lana Del Rey loves JS! Be like Lana Del Rey!