SlideShare a Scribd company logo
ReactJS &
O(DevTime)
Thoughts about frameworks and dev
velocity
Avi Marcus
Making the jobs of the 40 other developers in
the group as easy as possible.
UI Library, just the V of MVC
Tiny API
Does only one thing, does it well
One way data flow
ReactJS - few important notes
The obvious reasons you’ve heard about
Performance (browsers love single pass DOM
writes)
Server side rendering
Why we chose ReactJS
Why everyone was so easily convinced
What convinced me
Old codebase ReactJS Wix-Viewer
Time 60 years 10 years
Lines of code 175,000 46,000
Time to first productive commit of
new member
2-3 weeks 1 day
Definition O(DevTime)
The 1st feature is always easy
How easy is 100th???
The real reason O(DevTime)
Enemies of O(DevTime):
● Poor test coverage
● Complex flows
● State
● Leaky abstractions
What makes our jobs difficult
Poor test coverage
ReactJS - Testing
Built in support for testing the UI.
Pushes you to keep the UI and the logic
separate, and testing the separate logic is
really a breeze.
Complex flows O(NLog(N))
Simple flows Complex flows
ReactJS - Flow is unidirectional
State O(N2
)
Render is a pure one way function from
props/state to virtual DOM.
ReactJS will make the minimal changes in the
DOM required to bring the current state of the
DOM to match the returned virtual DOM.
ReactJS - Rendering is functional
Leaky abstractions 2N
ReactJS - Non-leaky abstractions
Zero lines of ReactJS read/debugged so far
Trustworthy, does what you expect, no gotchas
Simple
No real DOM in sight while rendering. It doesn’t
even exist in the first render
Abstraction built for Wix-Editor
Developed a touch of AngularJS envy, invented
react-templates
Angular inspired html templates for ReactJS
supports repeat/if/scope/class and lambda
events. Generates code, that renders the view
described in the HTML programmatically.
Mandatory XKCD style graph
Keeping our job easy - O(DevTime)
We have cognitive limits
How much of what is happening in the code we
can safely ignore
The stuff we can’t ignore accumulates and
eventually progress stalls
Ignorance Driven Development
“If you can stop thinking about it, and it won’t
come back to bite you in the ass, you made the
right choice.”
# ReactJS is awesome.

More Related Content

What's hot (20)

PDF
Modern Cloud-Native Jakarta EE Frameworks: tips, challenges, and trends.
Otávio Santana
 
PDF
Microservice pitfalls
Mite Mitreski
 
PDF
Building microservices web application using scala & akka
Binh Nguyen
 
PDF
Microservices architecture pitfalls
allegro.tech
 
PDF
Microservice no fluff, the REAL stuff
nklmish
 
PPTX
Building occasionally connected applications using event sourcing
Dennis Doomen
 
PDF
Javantura v4 - The power of cloud in professional services company - Ivan Krn...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
PDF
The Hardest Part of Microservices: Your Data - Christian Posta, Red Hat
Ambassador Labs
 
PDF
Leapfrog into Serverless - a Deloitte-Amtrak Case Study | Serverless Confere...
Gary Arora
 
PDF
Docker in Production at the Aurora Team
Haufe-Lexware GmbH & Co KG
 
PPTX
Building autonomous components with OWIN, PSake, NuGet, GitVersion and Swagger
Dennis Doomen
 
PDF
Easy Microservices with JHipster - Devoxx BE 2017
Deepu K Sasidharan
 
PDF
容器革命的「利」與「必」
Alfie Chen
 
PDF
Microservices, the lean way
Bruno Bossola
 
PDF
Who needs containers in a serverless world
Matthias Luebken
 
PDF
Lessons from running AppSync in prod
Yan Cui
 
PDF
Javantura v4 - Angular2 - Ionic2 - from birth to stable versions - Hrvoje Pek...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
PDF
Tabtale story: Building a publishing and monitoring mobile games architecture...
Tikal Knowledge
 
PDF
Full-Stack Development with Spring Boot and VueJS
VMware Tanzu
 
PDF
2017 Microservices Practitioner Virtual Summit: Move Fast, Make Things: how d...
Ambassador Labs
 
Modern Cloud-Native Jakarta EE Frameworks: tips, challenges, and trends.
Otávio Santana
 
Microservice pitfalls
Mite Mitreski
 
Building microservices web application using scala & akka
Binh Nguyen
 
Microservices architecture pitfalls
allegro.tech
 
Microservice no fluff, the REAL stuff
nklmish
 
Building occasionally connected applications using event sourcing
Dennis Doomen
 
Javantura v4 - The power of cloud in professional services company - Ivan Krn...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
The Hardest Part of Microservices: Your Data - Christian Posta, Red Hat
Ambassador Labs
 
Leapfrog into Serverless - a Deloitte-Amtrak Case Study | Serverless Confere...
Gary Arora
 
Docker in Production at the Aurora Team
Haufe-Lexware GmbH & Co KG
 
Building autonomous components with OWIN, PSake, NuGet, GitVersion and Swagger
Dennis Doomen
 
Easy Microservices with JHipster - Devoxx BE 2017
Deepu K Sasidharan
 
容器革命的「利」與「必」
Alfie Chen
 
Microservices, the lean way
Bruno Bossola
 
Who needs containers in a serverless world
Matthias Luebken
 
Lessons from running AppSync in prod
Yan Cui
 
Javantura v4 - Angular2 - Ionic2 - from birth to stable versions - Hrvoje Pek...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Tabtale story: Building a publishing and monitoring mobile games architecture...
Tikal Knowledge
 
Full-Stack Development with Spring Boot and VueJS
VMware Tanzu
 
2017 Microservices Practitioner Virtual Summit: Move Fast, Make Things: how d...
Ambassador Labs
 

Similar to All the reasons for choosing react js that you didn't know about - Avi Marcus, Wix (20)

PPTX
reactJS
Syam Santhosh
 
PDF
FRONTEND DEVELOPMENT WITH REACT.JS
IRJET Journal
 
PPTX
ReactJS Code Impact
Raymond McDermott
 
PDF
Robust web apps with React.js
Max Klymyshyn
 
PDF
React & Flux Workshop
Christian Lilley
 
PPTX
Reactjs notes.pptx for web development- tutorial and theory
jobinThomas54
 
PPTX
React JS - A quick introduction tutorial
Mohammed Fazuluddin
 
PDF
An Intense Overview of the React Ecosystem
Rami Sayar
 
PPTX
React js
Nikhil Karkra
 
PPTX
React.js at Cortex
Geoff Harcourt
 
PDF
Tech Talk on ReactJS
Atlogys Technical Consulting
 
PPTX
React for JavaScipt Introduction and functions
MaithiliGogteParanja
 
PPTX
React + Flux = Joy
John Need
 
PPTX
ReactJS
Ram Murat Sharma
 
PDF
MeetJS Summit 2016: React.js enlightenment
Artur Szott
 
PDF
Fundamental Concepts of React JS for Beginners.pdf
StephieJohn
 
PDF
Learning React js Learn React JS From Scratch with Hands On Projects 2nd Edit...
bandmvh3697
 
PPTX
Why react is different
JakeGinnivan
 
PPSX
React introduction
Kashyap Parmar
 
PDF
Fundamental concepts of react js
StephieJohn
 
reactJS
Syam Santhosh
 
FRONTEND DEVELOPMENT WITH REACT.JS
IRJET Journal
 
ReactJS Code Impact
Raymond McDermott
 
Robust web apps with React.js
Max Klymyshyn
 
React & Flux Workshop
Christian Lilley
 
Reactjs notes.pptx for web development- tutorial and theory
jobinThomas54
 
React JS - A quick introduction tutorial
Mohammed Fazuluddin
 
An Intense Overview of the React Ecosystem
Rami Sayar
 
React js
Nikhil Karkra
 
React.js at Cortex
Geoff Harcourt
 
Tech Talk on ReactJS
Atlogys Technical Consulting
 
React for JavaScipt Introduction and functions
MaithiliGogteParanja
 
React + Flux = Joy
John Need
 
MeetJS Summit 2016: React.js enlightenment
Artur Szott
 
Fundamental Concepts of React JS for Beginners.pdf
StephieJohn
 
Learning React js Learn React JS From Scratch with Hands On Projects 2nd Edit...
bandmvh3697
 
Why react is different
JakeGinnivan
 
React introduction
Kashyap Parmar
 
Fundamental concepts of react js
StephieJohn
 
Ad

More from Codemotion Tel Aviv (20)

PDF
Keynote: Trends in Modern Application Development - Gilly Dekel, IBM
Codemotion Tel Aviv
 
PDF
Angular is one fire(base)! - Shmuela Jacobs
Codemotion Tel Aviv
 
PDF
Demystifying docker networking black magic - Lorenzo Fontana, Kiratech
Codemotion Tel Aviv
 
PDF
Faster deep learning solutions from training to inference - Amitai Armon & Ni...
Codemotion Tel Aviv
 
PDF
Facts about multithreading that'll keep you up at night - Guy Bar on, Vonage
Codemotion Tel Aviv
 
PDF
Master the Art of the AST (and Take Control of Your JS!) - Yonatan Mevorach, ...
Codemotion Tel Aviv
 
PDF
Unleash the power of angular Reactive Forms - Nir Kaufman, 500Tech
Codemotion Tel Aviv
 
PDF
Can we build an Azure IoT controlled device in less than 40 minutes that cost...
Codemotion Tel Aviv
 
PDF
Actors and Microservices - Can two walk together? - Rotem Hermon, Gigya
Codemotion Tel Aviv
 
PDF
How to Leverage Machine Learning (R, Hadoop, Spark, H2O) for Real Time Proces...
Codemotion Tel Aviv
 
PDF
My Minecraft Smart Home: Prototyping the internet of uncanny things - Sascha ...
Codemotion Tel Aviv
 
PDF
Distributed Systems explained (with NodeJS) - Bruno Bossola, JUG Torino
Codemotion Tel Aviv
 
PDF
Containerised ASP.NET Core apps with Kubernetes
Codemotion Tel Aviv
 
PDF
Fullstack DDD with ASP.NET Core and Anguar 2 - Ronald Harmsen, NForza
Codemotion Tel Aviv
 
PDF
The Art of Decomposing Monoliths - Kfir Bloch, Wix
Codemotion Tel Aviv
 
PDF
SOA Lessons Learnt (or Microservices done Better) - Sean Farmar, Particular S...
Codemotion Tel Aviv
 
PDF
S3, Cassandra or Outer Space? Dumping Time Series Data using Spark - Demi Ben...
Codemotion Tel Aviv
 
PDF
Getting Physical with Web Bluetooth - Uri Shaked, BlackBerry
Codemotion Tel Aviv
 
PDF
Web based virtual reality - Tanay Pant, Mozilla
Codemotion Tel Aviv
 
PDF
Material Design Demytified - Ran Nachmany, Google
Codemotion Tel Aviv
 
Keynote: Trends in Modern Application Development - Gilly Dekel, IBM
Codemotion Tel Aviv
 
Angular is one fire(base)! - Shmuela Jacobs
Codemotion Tel Aviv
 
Demystifying docker networking black magic - Lorenzo Fontana, Kiratech
Codemotion Tel Aviv
 
Faster deep learning solutions from training to inference - Amitai Armon & Ni...
Codemotion Tel Aviv
 
Facts about multithreading that'll keep you up at night - Guy Bar on, Vonage
Codemotion Tel Aviv
 
Master the Art of the AST (and Take Control of Your JS!) - Yonatan Mevorach, ...
Codemotion Tel Aviv
 
Unleash the power of angular Reactive Forms - Nir Kaufman, 500Tech
Codemotion Tel Aviv
 
Can we build an Azure IoT controlled device in less than 40 minutes that cost...
Codemotion Tel Aviv
 
Actors and Microservices - Can two walk together? - Rotem Hermon, Gigya
Codemotion Tel Aviv
 
How to Leverage Machine Learning (R, Hadoop, Spark, H2O) for Real Time Proces...
Codemotion Tel Aviv
 
My Minecraft Smart Home: Prototyping the internet of uncanny things - Sascha ...
Codemotion Tel Aviv
 
Distributed Systems explained (with NodeJS) - Bruno Bossola, JUG Torino
Codemotion Tel Aviv
 
Containerised ASP.NET Core apps with Kubernetes
Codemotion Tel Aviv
 
Fullstack DDD with ASP.NET Core and Anguar 2 - Ronald Harmsen, NForza
Codemotion Tel Aviv
 
The Art of Decomposing Monoliths - Kfir Bloch, Wix
Codemotion Tel Aviv
 
SOA Lessons Learnt (or Microservices done Better) - Sean Farmar, Particular S...
Codemotion Tel Aviv
 
S3, Cassandra or Outer Space? Dumping Time Series Data using Spark - Demi Ben...
Codemotion Tel Aviv
 
Getting Physical with Web Bluetooth - Uri Shaked, BlackBerry
Codemotion Tel Aviv
 
Web based virtual reality - Tanay Pant, Mozilla
Codemotion Tel Aviv
 
Material Design Demytified - Ran Nachmany, Google
Codemotion Tel Aviv
 
Ad

Recently uploaded (20)

PDF
HCIP-Data Center Facility Deployment V2.0 Training Material (Without Remarks ...
mcastillo49
 
PDF
Chris Elwell Woburn, MA - Passionate About IT Innovation
Chris Elwell Woburn, MA
 
PDF
Building Resilience with Digital Twins : Lessons from Korea
SANGHEE SHIN
 
PDF
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PDF
LLMs.txt: Easily Control How AI Crawls Your Site
Keploy
 
PDF
SFWelly Summer 25 Release Highlights July 2025
Anna Loughnan Colquhoun
 
PDF
Impact of IEEE Computer Society in Advancing Emerging Technologies including ...
Hironori Washizaki
 
PDF
Presentation - Vibe Coding The Future of Tech
yanuarsinggih1
 
PDF
NewMind AI Journal - Weekly Chronicles - July'25 Week II
NewMind AI
 
PDF
Predicting the unpredictable: re-engineering recommendation algorithms for fr...
Speck&Tech
 
PDF
Complete Network Protection with Real-Time Security
L4RGINDIA
 
PPTX
✨Unleashing Collaboration: Salesforce Channels & Community Power in Patna!✨
SanjeetMishra29
 
PDF
Fl Studio 24.2.2 Build 4597 Crack for Windows Free Download 2025
faizk77g
 
PDF
SWEBOK Guide and Software Services Engineering Education
Hironori Washizaki
 
PPTX
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
PDF
Smart Air Quality Monitoring with Serrax AQM190 LITE
SERRAX TECHNOLOGIES LLP
 
PDF
Persuasive AI: risks and opportunities in the age of digital debate
Speck&Tech
 
PPT
Interview paper part 3, It is based on Interview Prep
SoumyadeepGhosh39
 
PDF
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
PDF
Complete JavaScript Notes: From Basics to Advanced Concepts.pdf
haydendavispro
 
HCIP-Data Center Facility Deployment V2.0 Training Material (Without Remarks ...
mcastillo49
 
Chris Elwell Woburn, MA - Passionate About IT Innovation
Chris Elwell Woburn, MA
 
Building Resilience with Digital Twins : Lessons from Korea
SANGHEE SHIN
 
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
LLMs.txt: Easily Control How AI Crawls Your Site
Keploy
 
SFWelly Summer 25 Release Highlights July 2025
Anna Loughnan Colquhoun
 
Impact of IEEE Computer Society in Advancing Emerging Technologies including ...
Hironori Washizaki
 
Presentation - Vibe Coding The Future of Tech
yanuarsinggih1
 
NewMind AI Journal - Weekly Chronicles - July'25 Week II
NewMind AI
 
Predicting the unpredictable: re-engineering recommendation algorithms for fr...
Speck&Tech
 
Complete Network Protection with Real-Time Security
L4RGINDIA
 
✨Unleashing Collaboration: Salesforce Channels & Community Power in Patna!✨
SanjeetMishra29
 
Fl Studio 24.2.2 Build 4597 Crack for Windows Free Download 2025
faizk77g
 
SWEBOK Guide and Software Services Engineering Education
Hironori Washizaki
 
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
Smart Air Quality Monitoring with Serrax AQM190 LITE
SERRAX TECHNOLOGIES LLP
 
Persuasive AI: risks and opportunities in the age of digital debate
Speck&Tech
 
Interview paper part 3, It is based on Interview Prep
SoumyadeepGhosh39
 
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
Complete JavaScript Notes: From Basics to Advanced Concepts.pdf
haydendavispro
 

All the reasons for choosing react js that you didn't know about - Avi Marcus, Wix

  • 1. ReactJS & O(DevTime) Thoughts about frameworks and dev velocity
  • 2. Avi Marcus Making the jobs of the 40 other developers in the group as easy as possible.
  • 3. UI Library, just the V of MVC Tiny API Does only one thing, does it well One way data flow ReactJS - few important notes
  • 4. The obvious reasons you’ve heard about Performance (browsers love single pass DOM writes) Server side rendering Why we chose ReactJS
  • 5. Why everyone was so easily convinced
  • 6. What convinced me Old codebase ReactJS Wix-Viewer Time 60 years 10 years Lines of code 175,000 46,000 Time to first productive commit of new member 2-3 weeks 1 day
  • 7. Definition O(DevTime) The 1st feature is always easy How easy is 100th??? The real reason O(DevTime)
  • 8. Enemies of O(DevTime): ● Poor test coverage ● Complex flows ● State ● Leaky abstractions What makes our jobs difficult
  • 10. ReactJS - Testing Built in support for testing the UI. Pushes you to keep the UI and the logic separate, and testing the separate logic is really a breeze.
  • 11. Complex flows O(NLog(N)) Simple flows Complex flows
  • 12. ReactJS - Flow is unidirectional
  • 14. Render is a pure one way function from props/state to virtual DOM. ReactJS will make the minimal changes in the DOM required to bring the current state of the DOM to match the returned virtual DOM. ReactJS - Rendering is functional
  • 16. ReactJS - Non-leaky abstractions Zero lines of ReactJS read/debugged so far Trustworthy, does what you expect, no gotchas Simple No real DOM in sight while rendering. It doesn’t even exist in the first render
  • 17. Abstraction built for Wix-Editor Developed a touch of AngularJS envy, invented react-templates Angular inspired html templates for ReactJS supports repeat/if/scope/class and lambda events. Generates code, that renders the view described in the HTML programmatically.
  • 19. Keeping our job easy - O(DevTime) We have cognitive limits How much of what is happening in the code we can safely ignore The stuff we can’t ignore accumulates and eventually progress stalls
  • 20. Ignorance Driven Development “If you can stop thinking about it, and it won’t come back to bite you in the ass, you made the right choice.” # ReactJS is awesome.