SlideShare a Scribd company logo
Planning JavaScript and Ajax for larger teams Christian Heilmann @media Ajax, London, November 2007
This is awesome!
Here we are at a conference about JavaScript  (oh well, Ajax)
 
DOM Scripting Task Force
DOM Scripting Task Force
We’ve done it. JavaScript is cool again and people take it much more serious.
Now it is time to make it mature.
We do that in a technical manner.
The technical part will get a solution.
However, danger lurks around every corner.
How we can make JavaScript and Ajax solutions work with larger teams?
The first step is to stop making assumptions.
Achtung alles Lookenpeepers! Dies Machine is nicht fur gefingerpoken und mittengraben.  Is easy schnappen der springenwerk, blowenfusen und poppencorken mit spitzensparken.  Is nicht fur gewerken by das dummkopfen.  Das rubbernecken sightseeren keepen Cottenpickenen hands in das pockets - relaxen und Watch Das Blinken Lights. 
“Do not fiddle with other people’s knobs unless you know what you are doing.”
JavaScript is not magic and should not be confusing and difficult.
Most of the time it is confusing because of other assumptions.
Let’s take a look at some of them:
“ I don’t need to tell people that - they know already.”
“ Surely this has been done before - and by people better than me.”
“ This works right now. There won’t be a need to change it.”
“ This never worked in the past - it won’t work now.”
“ This is a minor issue only for this instance – there’s no need to file a bug.”
“ Hack that now and we’ll get time later to fix it.”
These are all things we need to avoid.
JavaScript and Ajax are a part of the normal development cycle.
They cannot be bolted on at the end by super-human developers.
They are as much an accessibility and usability task as the rest of the interface is.
No more heroes!
A good developer is not a very gifted and impressive developer.
It is a developer that can work with others and works for the next developer to take over.
People will move from product to product or leave the company.
Web products are never finished.
It is time to advertise working as if you won’t ever see the code again.
How?
Following a code standard
Following a code standard you can assess the quality of code
Following a code standard you can assess the quality of code  easy handover from developer to developer
Following a code standard you can assess the quality of code  easy handover from developer to developer reliable source control
Following a code standard you can assess the quality of code  easy handover from developer to developer reliable source control You make JavaScript a mature technology.
What code standard?
Whatever the team agrees on and feels comfortable with.
Make sure to have a reason for your code standards.
Take time to train each new hire on them.
How can you find reasonable standards?
Conduct Code reviews
Conduct Code reviews You find problems and solutions.
Conduct Code reviews You find problems and solutions. You assess training needs
Conduct Code reviews You find problems and solutions. You assess training needs You share the knowledge throughout the team
Conduct Code reviews You find problems and solutions. You assess training needs You share the knowledge throughout the team You can identify code that should be a reusable component
Doesn’t that stop innovation?
Nein.
Development time is not the time to innovate or change.
Don’t listen to the  “ inner hacker”.
 
Production code does not need to be optimized from the start.
It needs to be understandable and maintainable.
use library code, even if it appears huge (a lot of the size is a myth)
use library code, even if it appears huge (a lot of the size is a myth) Use comments to explain what is going on
use library code, even if it appears huge (a lot of the size is a myth) Use comments to explain what is going on Use explanatory variable and method names
use library code, even if it appears huge (a lot of the size is a myth) Use comments to explain what is going on Use explanatory variable and method names Don’t reinvent the wheel even if you consider yours superior.
Production code is for humans.
Production code is for humans. Live code is for machines.
In between, we have a build process.
Build process:
Build process: Validation (Tidy, JSLint)
Build process: Validation (Tidy, JSLint) Minification (JSMin, CSS minifier)
Build process: Validation (Tidy, JSLint) Minification (JSMin, CSS minifier) Consolidation (one CSS and one JS instead of dozens)
Build process: Validation (Tidy, JSLint) Minification (JSMin, CSS minifier) Consolidation (one CSS and one JS instead of dozens) Tagging as “live code”
What about playtime?
Find creative outlets for team members.
Let them create reusable components identified in code reviews.
Foster internal communication.
Lightning Talks: 5 Minutes presentation 5 minutes demo 5 minutes discussion Every Thursday 11.45 – 12.00
If your company is clever, it’ll share these finds with the world.
So how do you plan JavaScript and Ajax for larger teams?
Get the team to talk and agree on what works best.
Architect your JavaScript:
Architect your JavaScript: Modules instead of views / pages / sections
Architect your JavaScript: Modules instead of views / pages / sections Skins for each module (JS,non-JS state)
Architect your JavaScript: Modules instead of views / pages / sections Skins for each module (JS,non-JS state) Configuration options for each module.
Architect your JavaScript: Modules instead of views / pages / sections Skins for each module (JS,non-JS state) Configuration options for each module. Events for module and application changes.
Involve Design and Engineering in the process and explain the rationale of your plan.
Communication and sharing information is better than any architectural blueprint you or I could come up with.
THANKS! Christian  Heilmann http://wait-till-i.com [email_address]

More Related Content

What's hot (20)

PDF
The Way of The Software Craftsman # Part One: The Beginning
Vitaliy Kulikov
 
PDF
Diy continuous integration
Promet Source
 
PDF
Taking Responsibility for the Things We Unleash Into the World - IoT Meetup 2...
Daytona
 
ODP
Agille Testing Meetup 1
Nathan Bain
 
PDF
Why do all my ddd apps look the same - Vienna 2014
Alberto Brandolini
 
PPT
The Smells Of Bad Design
guest446c0
 
PPT
User Stories
James Peckham
 
PDF
The alignment
Alberto Brandolini
 
PDF
Mob Programming for Continuous Learning
Mike Clement
 
PDF
Id camp x dicoding live : persiapan jadi software engineer hebat 101
DicodingEvent
 
PDF
How to build the wrong thing faster and learn from it keynote by David Hussma...
ProductCamp Twin Cities
 
PDF
50.000 orange stickies later
Alberto Brandolini
 
PDF
Software craftsmanship
ColdFusionConference
 
PDF
Dr Alex Davidovic Testimonials
Dr Alex Davidovic ★ LION ★
 
PDF
Designer vs Developer
Steven Trotter
 
PPT
what's blocking our way
tanvir afzal
 
PDF
Idea stickies green bar - Wroclaw edition
Alberto Brandolini
 
PDF
Event storming recipes
Alberto Brandolini
 
PDF
It's not simple at all
Alberto Brandolini
 
PPTX
Test Driven Development: More Development Than Ever
Kiryl Baranoshnik
 
The Way of The Software Craftsman # Part One: The Beginning
Vitaliy Kulikov
 
Diy continuous integration
Promet Source
 
Taking Responsibility for the Things We Unleash Into the World - IoT Meetup 2...
Daytona
 
Agille Testing Meetup 1
Nathan Bain
 
Why do all my ddd apps look the same - Vienna 2014
Alberto Brandolini
 
The Smells Of Bad Design
guest446c0
 
User Stories
James Peckham
 
The alignment
Alberto Brandolini
 
Mob Programming for Continuous Learning
Mike Clement
 
Id camp x dicoding live : persiapan jadi software engineer hebat 101
DicodingEvent
 
How to build the wrong thing faster and learn from it keynote by David Hussma...
ProductCamp Twin Cities
 
50.000 orange stickies later
Alberto Brandolini
 
Software craftsmanship
ColdFusionConference
 
Dr Alex Davidovic Testimonials
Dr Alex Davidovic ★ LION ★
 
Designer vs Developer
Steven Trotter
 
what's blocking our way
tanvir afzal
 
Idea stickies green bar - Wroclaw edition
Alberto Brandolini
 
Event storming recipes
Alberto Brandolini
 
It's not simple at all
Alberto Brandolini
 
Test Driven Development: More Development Than Ever
Kiryl Baranoshnik
 

Viewers also liked (6)

PDF
JavaScript and AJAX
Frane Bandov
 
PDF
Why altmetrics?
Zohreh Zahedi
 
PDF
Good For Nothing UXD Update - General Assembly Project
Craig Adams
 
PDF
UX Techniques
Jake Truemper
 
PPTX
Enabling Self Service Business Intelligence using Excel
Alan Koo
 
PDF
An Advertising Design Problem
Craig Adams
 
JavaScript and AJAX
Frane Bandov
 
Why altmetrics?
Zohreh Zahedi
 
Good For Nothing UXD Update - General Assembly Project
Craig Adams
 
UX Techniques
Jake Truemper
 
Enabling Self Service Business Intelligence using Excel
Alan Koo
 
An Advertising Design Problem
Craig Adams
 
Ad

Similar to Planning JavaScript and Ajax for larger teams (20)

PDF
Resisting The Feature Creature
Christian Heilmann
 
KEY
corporateJavascript
climboid
 
PPTX
Recipe of a rockstar developer
Topu Newaj
 
PDF
WordCamp Nashville: Clean Code for WordPress
mtoppa
 
PDF
The art and pain of teaching JavaScript
Christian Heilmann
 
PPTX
Cinci ug-january2011-anti-patterns
Steven Smith
 
PDF
WEBASSEMBLY - What's the right thing to write? -
Shin Yoshida
 
PDF
Paris Web - Javascript as a programming language
Marco Cedaro
 
PDF
Embracing Uncertainty: Learning to Think Responsively
Chad Currie
 
PPT
Ruby On Rails Presentation
Paul Pajo
 
PDF
15 Experts on the Art of JavaScript Programming
FusionCharts
 
PPTX
Finding balance of DDD while your application grows
Carolina Karklis
 
PDF
Taming Big Balls of Mud with Diligence, Agile Practices, and Hard Work
Joseph Yoder
 
PDF
So…What Do I Make? (Dan Mall)
Future Insights
 
PDF
What Web Framework To Use?
Kasra Khosravi
 
PDF
What’s Up, EDoc?!
STC-Philadelphia Metro Chapter
 
PDF
From dev to ops and beyond - getting it done
Edorian
 
PPTX
7 crazy tips that will help you
Jessica Wilson
 
PDF
Test-Driven Developments are Inefficient; Behavior-Driven Developments are a ...
Abdelkrim Boujraf
 
PPTX
DDD In Agile
Skills Matter
 
Resisting The Feature Creature
Christian Heilmann
 
corporateJavascript
climboid
 
Recipe of a rockstar developer
Topu Newaj
 
WordCamp Nashville: Clean Code for WordPress
mtoppa
 
The art and pain of teaching JavaScript
Christian Heilmann
 
Cinci ug-january2011-anti-patterns
Steven Smith
 
WEBASSEMBLY - What's the right thing to write? -
Shin Yoshida
 
Paris Web - Javascript as a programming language
Marco Cedaro
 
Embracing Uncertainty: Learning to Think Responsively
Chad Currie
 
Ruby On Rails Presentation
Paul Pajo
 
15 Experts on the Art of JavaScript Programming
FusionCharts
 
Finding balance of DDD while your application grows
Carolina Karklis
 
Taming Big Balls of Mud with Diligence, Agile Practices, and Hard Work
Joseph Yoder
 
So…What Do I Make? (Dan Mall)
Future Insights
 
What Web Framework To Use?
Kasra Khosravi
 
What’s Up, EDoc?!
STC-Philadelphia Metro Chapter
 
From dev to ops and beyond - getting it done
Edorian
 
7 crazy tips that will help you
Jessica Wilson
 
Test-Driven Developments are Inefficient; Behavior-Driven Developments are a ...
Abdelkrim Boujraf
 
DDD In Agile
Skills Matter
 
Ad

More from Christian Heilmann (20)

PPTX
Develop, Debug, Learn? - Dotjs2019
Christian Heilmann
 
PDF
Hinting at a better web
Christian Heilmann
 
PDF
Taking the "vile" out of privilege
Christian Heilmann
 
PDF
Seven ways to be a happier JavaScript developer - NDC Oslo
Christian Heilmann
 
PDF
Artificial intelligence for humans… #AIDC2018 keynote
Christian Heilmann
 
PDF
Killing the golden calf of coding - We are Developers keynote
Christian Heilmann
 
PDF
Progressive Web Apps - Techdays Finland
Christian Heilmann
 
PDF
Taking the "vile" out of privilege
Christian Heilmann
 
PDF
Five ways to be a happier JavaScript developer
Christian Heilmann
 
PDF
Taking the P out of PWA
Christian Heilmann
 
PDF
Sacrificing the golden calf of "coding"
Christian Heilmann
 
PDF
You learned JavaScript - now what?
Christian Heilmann
 
PDF
Sacrificing the golden calf of "coding"
Christian Heilmann
 
PDF
Progressive Web Apps - Covering the best of both worlds - DevReach
Christian Heilmann
 
PDF
Progressive Web Apps - Covering the best of both worlds
Christian Heilmann
 
PPTX
Non-trivial pursuits: Learning machines and forgetful humans
Christian Heilmann
 
PDF
Progressive Web Apps - Bringing the web front and center
Christian Heilmann
 
PDF
CSS vs. JavaScript - Trust vs. Control
Christian Heilmann
 
PDF
Leveling up your JavaScipt - DrupalJam 2017
Christian Heilmann
 
PDF
The Soul in The Machine - Developing for Humans (FrankenJS edition)
Christian Heilmann
 
Develop, Debug, Learn? - Dotjs2019
Christian Heilmann
 
Hinting at a better web
Christian Heilmann
 
Taking the "vile" out of privilege
Christian Heilmann
 
Seven ways to be a happier JavaScript developer - NDC Oslo
Christian Heilmann
 
Artificial intelligence for humans… #AIDC2018 keynote
Christian Heilmann
 
Killing the golden calf of coding - We are Developers keynote
Christian Heilmann
 
Progressive Web Apps - Techdays Finland
Christian Heilmann
 
Taking the "vile" out of privilege
Christian Heilmann
 
Five ways to be a happier JavaScript developer
Christian Heilmann
 
Taking the P out of PWA
Christian Heilmann
 
Sacrificing the golden calf of "coding"
Christian Heilmann
 
You learned JavaScript - now what?
Christian Heilmann
 
Sacrificing the golden calf of "coding"
Christian Heilmann
 
Progressive Web Apps - Covering the best of both worlds - DevReach
Christian Heilmann
 
Progressive Web Apps - Covering the best of both worlds
Christian Heilmann
 
Non-trivial pursuits: Learning machines and forgetful humans
Christian Heilmann
 
Progressive Web Apps - Bringing the web front and center
Christian Heilmann
 
CSS vs. JavaScript - Trust vs. Control
Christian Heilmann
 
Leveling up your JavaScipt - DrupalJam 2017
Christian Heilmann
 
The Soul in The Machine - Developing for Humans (FrankenJS edition)
Christian Heilmann
 

Recently uploaded (20)

PDF
LOOPS in C Programming Language - Technology
RishabhDwivedi43
 
PDF
IoT-Powered Industrial Transformation – Smart Manufacturing to Connected Heal...
Rejig Digital
 
PPTX
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit Team
 
PDF
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
PDF
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
PPTX
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
PPTX
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
PDF
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
PPTX
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
PDF
Advancing WebDriver BiDi support in WebKit
Igalia
 
PDF
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
PDF
Biography of Daniel Podor.pdf
Daniel Podor
 
PDF
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PDF
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
PPTX
The Project Compass - GDG on Campus MSIT
dscmsitkol
 
PDF
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
PDF
Go Concurrency Real-World Patterns, Pitfalls, and Playground Battles.pdf
Emily Achieng
 
PPTX
Future Tech Innovations 2025 – A TechLists Insight
TechLists
 
PDF
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
PPTX
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
LOOPS in C Programming Language - Technology
RishabhDwivedi43
 
IoT-Powered Industrial Transformation – Smart Manufacturing to Connected Heal...
Rejig Digital
 
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit Team
 
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
Advancing WebDriver BiDi support in WebKit
Igalia
 
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
Biography of Daniel Podor.pdf
Daniel Podor
 
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
The Project Compass - GDG on Campus MSIT
dscmsitkol
 
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
Go Concurrency Real-World Patterns, Pitfalls, and Playground Battles.pdf
Emily Achieng
 
Future Tech Innovations 2025 – A TechLists Insight
TechLists
 
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 

Planning JavaScript and Ajax for larger teams