SlideShare a Scribd company logo
1 of 29
Gluing it all together: How teams can build
enterprise JavaScript applications
Michael Labriola
Digital Primates
@mlabriola
Who am I?
Michael Labriola
Client Side Architect w/ Digital Primates
Apache Comitter
Apache Flex PMC Member
Co-Author of a few books on Internet technologies
Author of and Contributor to Multiple Open Source Projects
Fan of Working Apps / Testing Geek
Architect of really, really big single page apps
My Goal
My goal for this session is quite simple:
Make you reconsider _everything_ about developing
JavaScript applications.
Today’s Goal
We might not have time for that, so I will settle for:
Make you reconsider how teams should work when
developing large enterprise JavaScript applications.
Enterprise Applications
Why enterprise applications?
Sometimes its easier to make a point when you look at
the extremes
These types of applications have unique properties
which cause small changes to be noticed in large ways
Enterprise Applications
What do I mean by enterprise applications?
Very large systems that are developed over multiple
years. Once deployed they often need to be maintained
for 10 to 15 years.
Dozens or hundreds of developers - new developers
arrive and others depart routinely
Enterprise Applications
The applications have many users and roles.
There are multiple pathways through the application
and it is too big to download all at once.
Millions of lines of code, broken into hundreds of
thousands of objects and functions.
Enterprise Applications
Often intended to be reconfigured for every customer.
Often customers have the ability to extend and change
the functionality of the system after deployment.
Costs
There are many issues with this sort of system.
Maintainability, Scalability, Performance, etc.
One thing that also makes it unique is cost multiplication.
At one of my larger clients, if each developer spends a few
extra minutes per day trying to identify a typo, it will cost
only 500.000 € per year.
One size fits all?
How similar are these applications to a twitter client?
Does it make sense to use the same techniques, frameworks
or approaches to develop all applications?
The same paradigms and languages?
Why must people feel that there _is_ an answer to the
question: which framework?
Teams
When building a house, I want my architect to be an expert
and to work with the tools he or she knows.
I want my electrician to be an expert with his or her tools
and techniques.
I expect no less from my carpenter, plumber, etc.
I would be a fool to make them all use the same tools. What
I need to do is make them all work together.
Teams
An application of any significant size requires a team. The
team usually gets larger as the application gets bigger.
“Coming together is a beginning. Keeping together is progress.
Working together is success.” -Henry Ford
Team members have different skills.
Team members have different levels of expertise.
To be successful, one must recognize and work with these
facts.
Application
Any single-page web application consists of a few pieces,
this is how I name them:
Σ
Application
There are many ways that these applications are built today,
one of the more popular is this:
This doesn’t work, in my opinion, why?
Application
At the very least, this is like having a carpenter work under
the advice of an electrician:
Application
And actually the problem is much worse:
Application
I believe that, to be successful, we need a process where
designers and developers can work (nearly) independently.
Application
That addresses part of the problem, but ignores something
very fundamental.
Not all development is the same. Not all developers are the
same.
Teams
Even if you haven’t already, at some point every developer
begins to identify their specialty.
Rarely do you find someone very good at development and
very good at visual design
Rarely do you find someone very good at implementing
business requirements and very good at performance and
low-level techniques.
Teams
Why?
Because being good at one of these things also means
learning the tools and techniques associated with that craft.
Often, they also require a different way of thinking and
usually involve different training.
And, especially with large teams, re-training or cross
training is expensive and does not happen often
Teams
I believe the way to solve this problem is to choose the right
tool for each job.
I believe we need to let developers in these types of
applications work in different source languages and
paradigms.
This isn’t a new idea. It has all been argued before.
History Repeats
In embedded systems, the lowest level code and any code
that needs close integration with the hardware and extreme
performance is written in Assembly.
Most other code in the device is compiled to Assembly.
This is a fact of life and a successful approach for these
developers
History Repeats
It doesn’t mean everyone is happy with that solution. In
Software Engineering, history repeats often:
“C is a crutch. If you can’t write it in Assembly, it’s not worth
writing”
“Everything is basically a form of assembly in the end, why not write
it that way to begin with?” ~ Daryl H. circa 1997
“He who hasn't hacked assembly language as a youth has no heart.
He who does so as an adult has no brain.” ~John Moore
History Repeats
The use case should determine the technology choice. Not
the opposite.
Which brings me to JavaScript. Its an excellent language,
but is it the right choice for every use case?
More specifically, must we make every developer learn
JavaScript to participate in this type of application
development?
History Repeats
I believe a more effective strategy is to use JavaScript where
it is the appropriate choice.
Use it where it makes sense. Certainly use it for the lowest
level portions of the system or where we need that control.
However, do we need to force our business developers to re-
implement their ideas in JavaScript.
At least for large applications, I say no.
History Repeats
What if applications could instead look like this:
Well, that’s what a few of us have been working on
History Repeats
We call the idea Randori - @randorijs
Randori is a Japanese word which translates most often as
‘Seizing Chaos’
It’s about blending various elements and redirecting.
Not opposing but influencing.
HTML/CSSHTML/CSS Cross Compiled LanguageCross Compiled LanguageJavaScriptJavaScript
History Repeats
In Randori, our applications look like this:
View
CSS Document
Mediator
Behavior
Behavior
Behavior
Business Logic
Business Logic
Business Logic
Business Logic
For more information follow:
Me - @mlabriola
Randori - @randorijs
Michael Labriola
Digital Primates
@mlabriola

More Related Content

What's hot

Introducing CS students to open source
Introducing CS students to open sourceIntroducing CS students to open source
Introducing CS students to open sourceAll Things Open
 
Outsourcing to Android App Developers
Outsourcing to Android App DevelopersOutsourcing to Android App Developers
Outsourcing to Android App DevelopersSteven Brough
 
Vesterli worst adf_project_ever_wildcard_2013
Vesterli worst adf_project_ever_wildcard_2013Vesterli worst adf_project_ever_wildcard_2013
Vesterli worst adf_project_ever_wildcard_2013Andrejs Vorobjovs
 
Tips sukses berkarir sebagai developer dan programmer 2021
Tips sukses berkarir sebagai developer dan programmer 2021Tips sukses berkarir sebagai developer dan programmer 2021
Tips sukses berkarir sebagai developer dan programmer 2021DicodingEvent
 
Cloud foundry, Lessons Learned at The Home Depot
Cloud foundry, Lessons Learned at The Home Depot Cloud foundry, Lessons Learned at The Home Depot
Cloud foundry, Lessons Learned at The Home Depot James Watters
 
Worse Is Better, for Better or for Worse
Worse Is Better, for Better or for WorseWorse Is Better, for Better or for Worse
Worse Is Better, for Better or for WorseKevlin Henney
 
Home Depot - From Platform Ops to Dev Enablement
Home Depot - From Platform Ops to Dev EnablementHome Depot - From Platform Ops to Dev Enablement
Home Depot - From Platform Ops to Dev EnablementAnthony McCulley
 
Java J2ee Developer (7140)
Java J2ee Developer (7140)Java J2ee Developer (7140)
Java J2ee Developer (7140)techjobatlanta
 
From 0 to 1000 Apps: The First Year of Cloud Foundry at the Home Depot
From 0 to 1000 Apps: The First Year of Cloud Foundry at the Home DepotFrom 0 to 1000 Apps: The First Year of Cloud Foundry at the Home Depot
From 0 to 1000 Apps: The First Year of Cloud Foundry at the Home DepotVMware Tanzu
 
Braam Letter of Recommendation
Braam Letter of RecommendationBraam Letter of Recommendation
Braam Letter of RecommendationBraam Neethling
 
21st Century Work by Matt O'Kane | DevCon Summit 2015 #GoOpenSourcePH
21st Century Work by Matt O'Kane | DevCon Summit 2015 #GoOpenSourcePH21st Century Work by Matt O'Kane | DevCon Summit 2015 #GoOpenSourcePH
21st Century Work by Matt O'Kane | DevCon Summit 2015 #GoOpenSourcePHDEVCON
 
How to start developing iOS apps
How to start developing iOS appsHow to start developing iOS apps
How to start developing iOS appsAndrew Kozlik
 
Fine tune and deploy Hugging Face NLP models
Fine tune and deploy Hugging Face NLP modelsFine tune and deploy Hugging Face NLP models
Fine tune and deploy Hugging Face NLP modelsOVHcloud
 
From design specs to user stories (ProductCamp Boston 2016)
From design specs to user stories (ProductCamp Boston 2016)From design specs to user stories (ProductCamp Boston 2016)
From design specs to user stories (ProductCamp Boston 2016)ProductCamp Boston
 
10x programmers - What lies beneath
10x programmers - What lies beneath10x programmers - What lies beneath
10x programmers - What lies beneathHrishikesh Karekar
 
How to become a great developer
How to become a great developerHow to become a great developer
How to become a great developerNetcetera
 
Summer internship report
Summer internship reportSummer internship report
Summer internship reportmdk8989
 
Design at Lingualeo: From Idea to MMP
Design at Lingualeo: From Idea to MMPDesign at Lingualeo: From Idea to MMP
Design at Lingualeo: From Idea to MMPAnton Guglya
 

What's hot (20)

Introducing CS students to open source
Introducing CS students to open sourceIntroducing CS students to open source
Introducing CS students to open source
 
Outsourcing to Android App Developers
Outsourcing to Android App DevelopersOutsourcing to Android App Developers
Outsourcing to Android App Developers
 
Vesterli worst adf_project_ever_wildcard_2013
Vesterli worst adf_project_ever_wildcard_2013Vesterli worst adf_project_ever_wildcard_2013
Vesterli worst adf_project_ever_wildcard_2013
 
Tips sukses berkarir sebagai developer dan programmer 2021
Tips sukses berkarir sebagai developer dan programmer 2021Tips sukses berkarir sebagai developer dan programmer 2021
Tips sukses berkarir sebagai developer dan programmer 2021
 
Cloud foundry, Lessons Learned at The Home Depot
Cloud foundry, Lessons Learned at The Home Depot Cloud foundry, Lessons Learned at The Home Depot
Cloud foundry, Lessons Learned at The Home Depot
 
Worse Is Better, for Better or for Worse
Worse Is Better, for Better or for WorseWorse Is Better, for Better or for Worse
Worse Is Better, for Better or for Worse
 
Home Depot - From Platform Ops to Dev Enablement
Home Depot - From Platform Ops to Dev EnablementHome Depot - From Platform Ops to Dev Enablement
Home Depot - From Platform Ops to Dev Enablement
 
Java J2ee Developer (7140)
Java J2ee Developer (7140)Java J2ee Developer (7140)
Java J2ee Developer (7140)
 
From 0 to 1000 Apps: The First Year of Cloud Foundry at the Home Depot
From 0 to 1000 Apps: The First Year of Cloud Foundry at the Home DepotFrom 0 to 1000 Apps: The First Year of Cloud Foundry at the Home Depot
From 0 to 1000 Apps: The First Year of Cloud Foundry at the Home Depot
 
PhillyXP Pair Programming
PhillyXP Pair ProgrammingPhillyXP Pair Programming
PhillyXP Pair Programming
 
Braam Letter of Recommendation
Braam Letter of RecommendationBraam Letter of Recommendation
Braam Letter of Recommendation
 
21st Century Work by Matt O'Kane | DevCon Summit 2015 #GoOpenSourcePH
21st Century Work by Matt O'Kane | DevCon Summit 2015 #GoOpenSourcePH21st Century Work by Matt O'Kane | DevCon Summit 2015 #GoOpenSourcePH
21st Century Work by Matt O'Kane | DevCon Summit 2015 #GoOpenSourcePH
 
How to start developing iOS apps
How to start developing iOS appsHow to start developing iOS apps
How to start developing iOS apps
 
Fine tune and deploy Hugging Face NLP models
Fine tune and deploy Hugging Face NLP modelsFine tune and deploy Hugging Face NLP models
Fine tune and deploy Hugging Face NLP models
 
From design specs to user stories (ProductCamp Boston 2016)
From design specs to user stories (ProductCamp Boston 2016)From design specs to user stories (ProductCamp Boston 2016)
From design specs to user stories (ProductCamp Boston 2016)
 
10x programmers - What lies beneath
10x programmers - What lies beneath10x programmers - What lies beneath
10x programmers - What lies beneath
 
How to become a great developer
How to become a great developerHow to become a great developer
How to become a great developer
 
Coderbuddy
CoderbuddyCoderbuddy
Coderbuddy
 
Summer internship report
Summer internship reportSummer internship report
Summer internship report
 
Design at Lingualeo: From Idea to MMP
Design at Lingualeo: From Idea to MMPDesign at Lingualeo: From Idea to MMP
Design at Lingualeo: From Idea to MMP
 

Similar to Gluing it all together: How teams can build enterprise JavaScript applications by Michael labriola

Top 6 Benefits of Hiring a Full-Stack Developer
Top 6 Benefits of Hiring a Full-Stack DeveloperTop 6 Benefits of Hiring a Full-Stack Developer
Top 6 Benefits of Hiring a Full-Stack Developer75waytechnologies
 
recapitulando: de métodos ágeis até lean startup
recapitulando: de métodos ágeis até lean startuprecapitulando: de métodos ágeis até lean startup
recapitulando: de métodos ágeis até lean startupPedro Axelrud
 
Finding balance of DDD while your application grows
Finding balance of DDD while your application growsFinding balance of DDD while your application grows
Finding balance of DDD while your application growsCarolina Karklis
 
Outsourcing Full-stack Developer for Web Application Development? Here’s What...
Outsourcing Full-stack Developer for Web Application Development? Here’s What...Outsourcing Full-stack Developer for Web Application Development? Here’s What...
Outsourcing Full-stack Developer for Web Application Development? Here’s What...Katy Slemon
 
Top .NET development companies to outsource
Top .NET development companies to outsourceTop .NET development companies to outsource
Top .NET development companies to outsourceMindfire LLC
 
Xp(Xtreme Programming) presentation
Xp(Xtreme Programming) presentationXp(Xtreme Programming) presentation
Xp(Xtreme Programming) presentationMuaazZubairi
 
Ultimate guide to hire dedicated developer comparison, benefits, & tips
Ultimate guide to hire dedicated developer comparison, benefits, & tipsUltimate guide to hire dedicated developer comparison, benefits, & tips
Ultimate guide to hire dedicated developer comparison, benefits, & tipsKaty Slemon
 
How to hire developers for a startup.pdf
How to hire developers for a startup.pdfHow to hire developers for a startup.pdf
How to hire developers for a startup.pdfIonicFirebade App
 
What is In-house Development or Developer Team and What are the Benefits and ...
What is In-house Development or Developer Team and What are the Benefits and ...What is In-house Development or Developer Team and What are the Benefits and ...
What is In-house Development or Developer Team and What are the Benefits and ...EfrogPtyLtd1
 
Full Stack Developer Interview Questions
Full Stack Developer Interview QuestionsFull Stack Developer Interview Questions
Full Stack Developer Interview QuestionsRock Interview
 
Essential singapore mobile app buyers’ guide
Essential singapore mobile app buyers’ guideEssential singapore mobile app buyers’ guide
Essential singapore mobile app buyers’ guideJoey Tan
 
Agile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin NakovAgile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin NakovSvetlin Nakov
 
How to Implement Domain Driven Design in Real Life SDLC
How to Implement Domain Driven Design  in Real Life SDLCHow to Implement Domain Driven Design  in Real Life SDLC
How to Implement Domain Driven Design in Real Life SDLCAbdul Karim
 
Domain Driven Design Introduction
Domain Driven Design IntroductionDomain Driven Design Introduction
Domain Driven Design Introductionwojtek_s
 

Similar to Gluing it all together: How teams can build enterprise JavaScript applications by Michael labriola (20)

Top 6 Benefits of Hiring a Full-Stack Developer
Top 6 Benefits of Hiring a Full-Stack DeveloperTop 6 Benefits of Hiring a Full-Stack Developer
Top 6 Benefits of Hiring a Full-Stack Developer
 
recapitulando: de métodos ágeis até lean startup
recapitulando: de métodos ágeis até lean startuprecapitulando: de métodos ágeis até lean startup
recapitulando: de métodos ágeis até lean startup
 
Biz Product Learnings
Biz Product LearningsBiz Product Learnings
Biz Product Learnings
 
Finding balance of DDD while your application grows
Finding balance of DDD while your application growsFinding balance of DDD while your application grows
Finding balance of DDD while your application grows
 
Outsourcing Full-stack Developer for Web Application Development? Here’s What...
Outsourcing Full-stack Developer for Web Application Development? Here’s What...Outsourcing Full-stack Developer for Web Application Development? Here’s What...
Outsourcing Full-stack Developer for Web Application Development? Here’s What...
 
Top .NET development companies to outsource
Top .NET development companies to outsourceTop .NET development companies to outsource
Top .NET development companies to outsource
 
Xp(Xtreme Programming) presentation
Xp(Xtreme Programming) presentationXp(Xtreme Programming) presentation
Xp(Xtreme Programming) presentation
 
Restless developer
Restless developerRestless developer
Restless developer
 
Ultimate guide to hire dedicated developer comparison, benefits, & tips
Ultimate guide to hire dedicated developer comparison, benefits, & tipsUltimate guide to hire dedicated developer comparison, benefits, & tips
Ultimate guide to hire dedicated developer comparison, benefits, & tips
 
How to hire developers for a startup.pdf
How to hire developers for a startup.pdfHow to hire developers for a startup.pdf
How to hire developers for a startup.pdf
 
What is In-house Development or Developer Team and What are the Benefits and ...
What is In-house Development or Developer Team and What are the Benefits and ...What is In-house Development or Developer Team and What are the Benefits and ...
What is In-house Development or Developer Team and What are the Benefits and ...
 
Full Stack Developer Interview Questions
Full Stack Developer Interview QuestionsFull Stack Developer Interview Questions
Full Stack Developer Interview Questions
 
Agile development
Agile developmentAgile development
Agile development
 
DDD
DDDDDD
DDD
 
Essential singapore mobile app buyers’ guide
Essential singapore mobile app buyers’ guideEssential singapore mobile app buyers’ guide
Essential singapore mobile app buyers’ guide
 
Why agile?
Why agile?Why agile?
Why agile?
 
Agile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin NakovAgile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin Nakov
 
Agile or how to break donw barriers
Agile or how to break donw barriersAgile or how to break donw barriers
Agile or how to break donw barriers
 
How to Implement Domain Driven Design in Real Life SDLC
How to Implement Domain Driven Design  in Real Life SDLCHow to Implement Domain Driven Design  in Real Life SDLC
How to Implement Domain Driven Design in Real Life SDLC
 
Domain Driven Design Introduction
Domain Driven Design IntroductionDomain Driven Design Introduction
Domain Driven Design Introduction
 

More from Codemotion

Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...Codemotion
 
Pompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending storyPompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending storyCodemotion
 
Pastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storiaPastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storiaCodemotion
 
Pennisi - Essere Richard Altwasser
Pennisi - Essere Richard AltwasserPennisi - Essere Richard Altwasser
Pennisi - Essere Richard AltwasserCodemotion
 
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...Codemotion
 
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019Codemotion
 
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019Codemotion
 
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 - Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 - Codemotion
 
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...Codemotion
 
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...Codemotion
 
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...Codemotion
 
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Codemotion
 
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019Codemotion
 
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019Codemotion
 
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Codemotion
 
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...Codemotion
 
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...Codemotion
 
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019Codemotion
 
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019Codemotion
 
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Codemotion
 

More from Codemotion (20)

Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
 
Pompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending storyPompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending story
 
Pastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storiaPastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storia
 
Pennisi - Essere Richard Altwasser
Pennisi - Essere Richard AltwasserPennisi - Essere Richard Altwasser
Pennisi - Essere Richard Altwasser
 
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
 
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
 
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
 
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 - Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
 
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
 
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
 
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
 
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
 
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
 
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
 
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
 
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
 
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
 
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
 
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
 
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
 

Recently uploaded

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
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
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
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
 
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
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
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
 
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
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
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
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
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
 

Recently uploaded (20)

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
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
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
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
 
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
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
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...
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
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
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
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
 

Gluing it all together: How teams can build enterprise JavaScript applications by Michael labriola

  • 1. Gluing it all together: How teams can build enterprise JavaScript applications Michael Labriola Digital Primates @mlabriola
  • 2. Who am I? Michael Labriola Client Side Architect w/ Digital Primates Apache Comitter Apache Flex PMC Member Co-Author of a few books on Internet technologies Author of and Contributor to Multiple Open Source Projects Fan of Working Apps / Testing Geek Architect of really, really big single page apps
  • 3. My Goal My goal for this session is quite simple: Make you reconsider _everything_ about developing JavaScript applications.
  • 4. Today’s Goal We might not have time for that, so I will settle for: Make you reconsider how teams should work when developing large enterprise JavaScript applications.
  • 5. Enterprise Applications Why enterprise applications? Sometimes its easier to make a point when you look at the extremes These types of applications have unique properties which cause small changes to be noticed in large ways
  • 6. Enterprise Applications What do I mean by enterprise applications? Very large systems that are developed over multiple years. Once deployed they often need to be maintained for 10 to 15 years. Dozens or hundreds of developers - new developers arrive and others depart routinely
  • 7. Enterprise Applications The applications have many users and roles. There are multiple pathways through the application and it is too big to download all at once. Millions of lines of code, broken into hundreds of thousands of objects and functions.
  • 8. Enterprise Applications Often intended to be reconfigured for every customer. Often customers have the ability to extend and change the functionality of the system after deployment.
  • 9. Costs There are many issues with this sort of system. Maintainability, Scalability, Performance, etc. One thing that also makes it unique is cost multiplication. At one of my larger clients, if each developer spends a few extra minutes per day trying to identify a typo, it will cost only 500.000 € per year.
  • 10. One size fits all? How similar are these applications to a twitter client? Does it make sense to use the same techniques, frameworks or approaches to develop all applications? The same paradigms and languages? Why must people feel that there _is_ an answer to the question: which framework?
  • 11. Teams When building a house, I want my architect to be an expert and to work with the tools he or she knows. I want my electrician to be an expert with his or her tools and techniques. I expect no less from my carpenter, plumber, etc. I would be a fool to make them all use the same tools. What I need to do is make them all work together.
  • 12. Teams An application of any significant size requires a team. The team usually gets larger as the application gets bigger. “Coming together is a beginning. Keeping together is progress. Working together is success.” -Henry Ford Team members have different skills. Team members have different levels of expertise. To be successful, one must recognize and work with these facts.
  • 13. Application Any single-page web application consists of a few pieces, this is how I name them: Σ
  • 14. Application There are many ways that these applications are built today, one of the more popular is this: This doesn’t work, in my opinion, why?
  • 15. Application At the very least, this is like having a carpenter work under the advice of an electrician:
  • 16. Application And actually the problem is much worse:
  • 17. Application I believe that, to be successful, we need a process where designers and developers can work (nearly) independently.
  • 18. Application That addresses part of the problem, but ignores something very fundamental. Not all development is the same. Not all developers are the same.
  • 19. Teams Even if you haven’t already, at some point every developer begins to identify their specialty. Rarely do you find someone very good at development and very good at visual design Rarely do you find someone very good at implementing business requirements and very good at performance and low-level techniques.
  • 20. Teams Why? Because being good at one of these things also means learning the tools and techniques associated with that craft. Often, they also require a different way of thinking and usually involve different training. And, especially with large teams, re-training or cross training is expensive and does not happen often
  • 21. Teams I believe the way to solve this problem is to choose the right tool for each job. I believe we need to let developers in these types of applications work in different source languages and paradigms. This isn’t a new idea. It has all been argued before.
  • 22. History Repeats In embedded systems, the lowest level code and any code that needs close integration with the hardware and extreme performance is written in Assembly. Most other code in the device is compiled to Assembly. This is a fact of life and a successful approach for these developers
  • 23. History Repeats It doesn’t mean everyone is happy with that solution. In Software Engineering, history repeats often: “C is a crutch. If you can’t write it in Assembly, it’s not worth writing” “Everything is basically a form of assembly in the end, why not write it that way to begin with?” ~ Daryl H. circa 1997 “He who hasn't hacked assembly language as a youth has no heart. He who does so as an adult has no brain.” ~John Moore
  • 24. History Repeats The use case should determine the technology choice. Not the opposite. Which brings me to JavaScript. Its an excellent language, but is it the right choice for every use case? More specifically, must we make every developer learn JavaScript to participate in this type of application development?
  • 25. History Repeats I believe a more effective strategy is to use JavaScript where it is the appropriate choice. Use it where it makes sense. Certainly use it for the lowest level portions of the system or where we need that control. However, do we need to force our business developers to re- implement their ideas in JavaScript. At least for large applications, I say no.
  • 26. History Repeats What if applications could instead look like this: Well, that’s what a few of us have been working on
  • 27. History Repeats We call the idea Randori - @randorijs Randori is a Japanese word which translates most often as ‘Seizing Chaos’ It’s about blending various elements and redirecting. Not opposing but influencing.
  • 28. HTML/CSSHTML/CSS Cross Compiled LanguageCross Compiled LanguageJavaScriptJavaScript History Repeats In Randori, our applications look like this: View CSS Document Mediator Behavior Behavior Behavior Business Logic Business Logic Business Logic Business Logic
  • 29. For more information follow: Me - @mlabriola Randori - @randorijs Michael Labriola Digital Primates @mlabriola