JavaScript is a buffet, not the enemy
Chris Heilmann @codepo8, ScriptConf, January 2017
JavaScript is a buffet,
not a main course…“ – Chris Heilmann
JavaScript has grown from a
language and one part of the
web stack into a development
environment in its own right.
We want to and we do
everything with JavaScript!
This causes a lot of confusion…
And I’m worried about
the state of the web
and our community.
We work in the
open, and with
very flexible
technologies…
…but I see more
drama and dogma
than flexibility and
understanding.
Worst of all, I see a
lot of arrogance
and intimidation.
That’s why today I
want us to stop and
think about how we
use JavaScript and
share our excitement.
I’m not forbidding anyone to
do whatever they want to…
But I want to see us becoming
more diverse and interesting!
Going back to the buffet
metaphor…
Buffets are
great…
✅ They feed a lot of people in a short
time
✅ They allow people to make their
own decisions
✅ They create less waste - people
only take what they need
✅ They are async - you can cook
whilst people eat
Buffets have
issues…
🙄 They have lesser quality food
🙄 They might contain things that
make people sick
🙄 You hope that everything is fresh
and gets renewed when not used
🙄 Everybody has their hands in them
and you hope they use the right
tools to take their part
And this is pretty much where
we are with JavaScript…
Buffet and JavaScript etiquette…
Don’t cherry-pick and leave
nothing for others…
Your environment is very much
you - and probably nobody else.
This is great, own that and
customise to your needs.
Share what makes you happy
and makes you more effective.
Help improve the tools you use
and you love.
Don’t pick the things you like and
demand people to accommodate
to your needs.
Make sure you explain in detail
what you rely on and why.
You’re creating a service; the
more you think about others, the
more success you will have.
Be ready to be flexible.
Don’t try to re-use dirty plates…
Some things should not be used
on the web any longer…
It is not OK to block these things
out, but it is a waste of time to
support them 100%.
We can’t move forward carrying
the weight of failed APIs and
broken implementations…
This includes polyfills that aren’t
included on demand
The web needs to be evergreen
Don’t put meat in the veggie
section…
There are environments that have
no or very restricted JavaScript.
Yes, JavaScript is used to spy on
users and but that doesn’t mean
we need to demonise it - we need
to do better.
Different use cases of JavaScript
have different needs.
Each of those have best practices
and sensible approaches.
They don’t need to mix, they
might even be antithetical.
And that’s OK - we can evolve
JavaScript on different tracks.
Don’t pile up your plate…
It can be daunting to look at the
JavaScript world.
Don’t try to be everything, find
something you are excited about
and do that at first.
Don’t use every cool new thing
because it is cool and new.
Get to know the basics and go
from there
If you publish something, think
about collaborating.
Documentation, tests and demos
written by others allow you to
question your biases and means
less work for you
Find a stack that allows you to
deliver your work and don’t rely
on things you don’t know yet.
Don’t touch things you don’t
like and you don’t want…
It is OK not to understand
something or not like it.
It is not OK to discard it and call
people using it unprofessional.
JavaScript can be a great helper
tool, it doesn’t need to replace
everything.
It is also not helpful trying to
forcefully convert them.
Use the cutlery provided…
Flexibility and control comes at a
price.
The more functionality you make
dependent on scripting, the
more responsibility you have.
If you can use the web platform
to solve an issue - use it.
You are likely to have much
more support for environments
you haven’t even thought of.
You allow browser creators to
optimise for you.
The fewer code you ship to the
end user, the better.
Consider making several trips…
We have an unfortunate drive to
deliver all the functionality on
first interaction in our products.
This isn’t sensible in terms of
data size and code that needs to
get parsed and executed in an
unknown environment.
It also doesn’t allow us to deliver
the right solution to the current
environment.
Consider not using the one-size-
fits-all solution that makes you
more effective.
Instead, deliver a progressively
improving solution.
All the code that didn’t get
loaded and executed is a benefit
in a flaky connection world.
Don’t be afraid to taste…
We live in great times where you
can learn most of what you need
in our market online and for
free.
Go and play. Try something new.
Kick the tyres of products people
sell you as amazing.
Don’t sit on your laurels, there is
so much to explore out there.
Be sure to use this opportunity,
watch videos, take courses, take
part in open source projects.
Make sure to explain this to your
companies and demand time to
keep learning.
If you need help with this, let’s
talk :)
What’s for pudding?
The JavaScript world and
community is us.
It is not one browser or engine or
environment. Monoculture is stagnation.
Let’s not stagnate but improve.
There are many ways you can
help this community - not all are
hard-core coding.
We need to break the toxic
demand of more code in less
time.
Quick, cheap and fast makes us sick
We need to deliver things that
are digestible, with good
ingredients and non-fattening.
And that needs time and effort.
Demand that you get it.
CHRIS HEILMANN
@CODEPO8
CHRISTIANHEILMANN.COM
THANKS!

JavaScript is a buffet - Scriptconf 2017 keynote