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

PPTX
Introduction to React native
PPTX
React Native
PPTX
9 reasons why programmers should learn react native
PPTX
React Native
PDF
Building native mobile Apps with ReactNative
KEY
Mobile html5 v2
PDF
React native sharing
PDF
React UI Development: Introduction to "UI Component as API"
Introduction to React native
React Native
9 reasons why programmers should learn react native
React Native
Building native mobile Apps with ReactNative
Mobile html5 v2
React native sharing
React UI Development: Introduction to "UI Component as API"

What's hot (20)

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

Similar to How to survive the JavaScript apocalypse (20)

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

Recently uploaded (20)

PPTX
Information-Technology-in-Human-Society.pptx
PDF
【AI論文解説】高速・高品質な生成を実現するFlow Map Models(Part 1~3)
PDF
Secure Java Applications against Quantum Threats
PDF
FASHION-DRIVEN TEXTILES AS A CRYSTAL OF A NEW STREAM FOR STAKEHOLDER CAPITALI...
PDF
Ebook - The Future of AI A Comprehensive Guide.pdf
PPTX
Strategic Picks — Prioritising the Right Agentic Use Cases [2/6]
PPTX
Rise of the Digital Control Grid Zeee Media and Hope and Tivon FTWProject.com
PDF
Technical Debt in the AI Coding Era - By Antonio Bianco
PDF
ELLIE29.pdfWETWETAWTAWETAETAETERTRTERTER
PDF
substrate PowerPoint Presentation basic one
PDF
CCUS-as-the-Missing-Link-to-Net-Zero_AksCurious.pdf
PDF
Be ready for tomorrow’s needs with a longer-lasting, higher-performing PC
PDF
Intravenous drug administration application for pediatric patients via augmen...
PPT
Overviiew on Intellectual property right
PPTX
Blending method and technology for hydrogen.pptx
PDF
Peak of Data & AI Encore: Scalable Design & Infrastructure
PDF
Revolutionizing recommendations a survey: a comprehensive exploration of mode...
PPTX
How to use fields_get method in Odoo 18
PDF
Advancements in abstractive text summarization: a deep learning approach
PDF
TrustArc Webinar - Data Minimization in Practice_ Reducing Risk, Enhancing Co...
Information-Technology-in-Human-Society.pptx
【AI論文解説】高速・高品質な生成を実現するFlow Map Models(Part 1~3)
Secure Java Applications against Quantum Threats
FASHION-DRIVEN TEXTILES AS A CRYSTAL OF A NEW STREAM FOR STAKEHOLDER CAPITALI...
Ebook - The Future of AI A Comprehensive Guide.pdf
Strategic Picks — Prioritising the Right Agentic Use Cases [2/6]
Rise of the Digital Control Grid Zeee Media and Hope and Tivon FTWProject.com
Technical Debt in the AI Coding Era - By Antonio Bianco
ELLIE29.pdfWETWETAWTAWETAETAETERTRTERTER
substrate PowerPoint Presentation basic one
CCUS-as-the-Missing-Link-to-Net-Zero_AksCurious.pdf
Be ready for tomorrow’s needs with a longer-lasting, higher-performing PC
Intravenous drug administration application for pediatric patients via augmen...
Overviiew on Intellectual property right
Blending method and technology for hydrogen.pptx
Peak of Data & AI Encore: Scalable Design & Infrastructure
Revolutionizing recommendations a survey: a comprehensive exploration of mode...
How to use fields_get method in Odoo 18
Advancements in abstractive text summarization: a deep learning approach
TrustArc Webinar - Data Minimization in Practice_ Reducing Risk, Enhancing Co...

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

  • #2: Photo credits: http://nohopefor.us/ Predictions expiry date: 3 weeks from opening.
  • #3: Based on the standard interview question: how would you explain MVC concept to your grandma?
  • #4: - 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
  • #5: - 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, ...
  • #6: - 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
  • #7: Photo: Diversity and phylogenetic analysis of bacteria in the mucosa of chicken ceca and comparison with bacteria in the cecal lumen
  • #8: Era milestones (holy grails): 1 ➔ 2: jQuery 2 ➔ 3: Backbone 3 ➔ 4: Node, npm ecosystem, Angular 4 ➔ 5: React
  • #9: 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
  • #10: Swim with the flow or not? Obviously yes if you are a dev. If business, you're probably already having hard times :D
  • #11: 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/
  • #12: Swim with the flow or not? Obviously yes if you are a dev. If business, you're probably already having hard times :D
  • #13: Javascript style guides: http://noeticforce.com/best-javascript-style-guide-for-maintainable-code Addy Osmani design patterns: https://addyosmani.com/resources/essentialjsdesignpatterns/book/
  • #14: Swim with the flow or not? Obviously yes if you are a dev. If business, you're probably already having hard times :D
  • #15: 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)
  • #16: Swim with the flow or not? Obviously yes if you are a dev. If business, you're probably already having hard times :D
  • #17: 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
  • #18: Lana Del Rey loves JS! Be like Lana Del Rey!