2
PAGE NUMBER
What can we
learn with
JavaScript
Fatigue?
github: lucasfcosta
twitter: lfernandescosta L U C A S F C O S T A . C O M
Slide 3
Slide 3 text
3
PAGE NUMBER
github: lucasfcosta
twitter: lfernandescosta L U C A S F C O S T A . C O M
Slide 4
Slide 4 text
PAGE NUMBER 4
github: lucasfcosta
twitter: lfernandescosta L U C A S F C O S T A . C O M
Slide 5
Slide 5 text
PAGE NUMBER 5
github: lucasfcosta
twitter: lfernandescosta L U C A S F C O S T A . C O M
Slide 6
Slide 6 text
PAGE NUMBER 6 LUCASFCOSTA.COM
Slide 7
Slide 7 text
PAGE NUMBER 7
Realities
of your
industry
101
Slide 8
Slide 8 text
PAGE NUMBER
REALITIES OF YOUR INDUSTRY 101
8 LUCASFCOSTA.COM
Software
solves
business
problems
Don't Call Yourself A Programmer, And
Other Career Advice - Patrick McKenzie
Slide 9
Slide 9 text
REALITIES OF YOUR INDUSTRY 101
PAGE NUMBER LUCASFCOSTA.COM
9
You are not paid to write code
The less code you write, the better
Slide 10
Slide 10 text
PAGE NUMBER LUCASFCOSTA.COM
REALITIES OF YOUR INDUSTRY 101
10
Technology
is not a goal
Slide 11
Slide 11 text
PAGE NUMBER LUCASFCOSTA.COM
11
REALITIES OF YOUR INDUSTRY 101
versus
Revenue
Cost
All that matters™
Slide 12
Slide 12 text
PAGE NUMBER LUCASFCOSTA.COM
REALITIES OF YOUR INDUSTRY 101
12
Slide 13
Slide 13 text
PAGE NUMBER 13
Realities
of your
industry
101
REALITIES OF YOUR INDUSTRY 101
LUCASFCOSTA.COM
Slide 14
Slide 14 text
PAGE NUMBER 14
Realities
of your
industry
101
REALITIES OF YOUR INDUSTRY 101
LUCASFCOSTA.COM
Slide 15
Slide 15 text
PAGE NUMBER 15
Realities of
capitalism
101
REALITIES OF YOUR INDUSTRY 101
LUCASFCOSTA.COM
Slide 16
Slide 16 text
16
PAGE NUMBER
64%
36%
Coding
Design
Some Experience With Automated Aids To The Design Of Large-Scale Reliable Software - 1975
Occurrence of Errors
REALITIES OF YOUR INDUSTRY 101
LUCASFCOSTA.COM
Slide 17
Slide 17 text
PAGE NUMBER LUCASFCOSTA.COM
17
REALITIES OF YOUR INDUSTRY 101
In the NASA Apollo project about
73% of all errors were design errors.
HAMILTON, M., AND ZELDIN, S.
"Higher order software--a
methodology for defining software,"
Slide 18
Slide 18 text
18
PAGE NUMBER
“
Louis Srygley
Without requirements or design,
programming is the art of adding
bugs to an empty text file.
REALITIES OF YOUR INDUSTRY 101
LUCASFCOSTA.COM
Slide 19
Slide 19 text
PAGE NUMBER LUCASFCOSTA.COM
19
REALITIES OF YOUR INDUSTRY 101
Good design adds value
faster than it adds cost.
Thomas C. Gale
Slide 20
Slide 20 text
PAGE NUMBER LUCASFCOSTA.COM
REALITIES OF YOUR INDUSTRY 101
20
JS
These things
exist to solve
problems.
Slide 21
Slide 21 text
PAGE NUMBER 21
JS Fatigue happens when people
use tools they don't need to solve
problems they don't have.
REALITIES OF YOUR INDUSTRY 101
LUCASFCOSTA.COM
Slide 22
Slide 22 text
PAGE NUMBER LUCASFCOSTA.COM
REALITIES OF YOUR INDUSTRY 101
Donald Knuth
“
22
"Premature
optimisation is
the root of all
evil"
Slide 23
Slide 23 text
PAGE NUMBER LUCASFCOSTA.COM
23
REALITIES OF YOUR INDUSTRY 101
The purpose of software
engineering is to control
complexity, not to create it.
Pamela Zave
Slide 24
Slide 24 text
PAGE NUMBER 24
REALITIES OF YOUR INDUSTRY 101
The greatest performance
improvement of all is when a system
goes from not-working to working
John Ousterhout
Slide 25
Slide 25 text
PAGE NUMBER LUCASFCOSTA.COM
REALITIES OF YOUR INDUSTRY 101
25
Remember this?
Slide 26
Slide 26 text
PAGE NUMBER LUCASFCOSTA.COM
26
REALITIES OF YOUR INDUSTRY 101
analysis
paralysis
Slide 27
Slide 27 text
PAGE NUMBER LUCASFCOSTA.COM
27
REALITIES OF YOUR INDUSTRY 101
analysis
paralysis
Slide 28
Slide 28 text
PAGE NUMBER 28
More choices
Less satisfaction
REALITIES OF YOUR INDUSTRY 101
LUCASFCOSTA.COM
Slide 29
Slide 29 text
PAGE NUMBER 29
As the number of options
increases, the costs, in time
and effort, of gathering the
information needed to make
a good choice also increases
Barry Schwartz
REALITIES OF YOUR INDUSTRY 101
LUCASFCOSTA.COM
Slide 30
Slide 30 text
PAGE NUMBER 30
Our willpower is limited
REALITIES OF YOUR INDUSTRY 101
LUCASFCOSTA.COM
Slide 31
Slide 31 text
PAGE NUMBER LUCASFCOSTA.COM
31
REALITIES OF YOUR INDUSTRY 101
Creative Slides Presentation
Your willpower is
like a muscle
Judges would make more favorable
decisions after those breaks. After a lunch
break the rates of favorable decisions
immediately jumps to 65% again.
Dotted lines represent food breaks
In the morning we started with
65% of favorable decisions and at
the end of the day this rate
steadily drops to zero.
As time goes by, less favorable decisions occur
James Clear
Image by James Clear
Slide 32
Slide 32 text
PAGE NUMBER 32
We might not be JavaScript fatigued
maybe we’re just
decision fatigued
REALITIES OF YOUR INDUSTRY 101
LUCASFCOSTA.COM
Slide 33
Slide 33 text
PAGE NUMBER 33
JavaScript
REALITIES OF YOUR INDUSTRY 101
LUCASFCOSTA.COM
Slide 34
Slide 34 text
PAGE NUMBER 34
A bunch of
impressive
numbers™
LUCASFCOSTA.COM
JAVASCRIPT
Slide 35
Slide 35 text
PAGE NUMBER LUCASFCOSTA.COM
JAVASCRIPT
35
packages on
Slide 36
Slide 36 text
PAGE NUMBER LUCASFCOSTA.COM
JAVASCRIPT
36
520,121
packages on
Slide 37
Slide 37 text
PAGE NUMBER LUCASFCOSTA.COM
JAVASCRIPT
37
~494 packages
a day
Slide 38
Slide 38 text
PAGE NUMBER LUCASFCOSTA.COM
JAVASCRIPT
38
465
a day
Birth Rate in the
Netherlands
Slide 39
Slide 39 text
PAGE NUMBER 39 LUCASFCOSTA.COM
JAVASCRIPT
Slide 40
Slide 40 text
PAGE NUMBER 40
? But how
did that
happen?
JAVASCRIPT
LUCASFCOSTA.COM
Slide 41
Slide 41 text
JAVASCRIPT
PAGE NUMBER LUCASFCOSTA.COM
41
Transpilers
Slide 42
Slide 42 text
JAVASCRIPT
PAGE NUMBER LUCASFCOSTA.COM
42
Module
Bundlers
Slide 43
Slide 43 text
JAVASCRIPT
PAGE NUMBER LUCASFCOSTA.COM
43
Front-end
Frameworks
Slide 44
Slide 44 text
PAGE NUMBER
“
44
Abstractions are
necessary to reduce the
cognitive load of how
things work so you can
focus on creating.
Eric Clemmons
LUCASFCOSTA.COM
JAVASCRIPT
Slide 45
Slide 45 text
PAGE NUMBER 45
The web
platform
moves
too fast
LUCASFCOSTA.COM
JAVASCRIPT
Slide 46
Slide 46 text
PAGE NUMBER 46
Natural
Selection
LUCASFCOSTA.COM
JAVASCRIPT
Slide 47
Slide 47 text
PAGE NUMBER 47
The Unix Philosophy
JAVASCRIPT
LUCASFCOSTA.COM
Slide 48
Slide 48 text
PAGE NUMBER LUCASFCOSTA.COM
48
JAVASCRIPT
Do one
thing, and
do it well.
Slide 49
Slide 49 text
PAGE NUMBER LUCASFCOSTA.COM
49
Do one
thing, and
do it well.
JAVASCRIPT
Slide 50
Slide 50 text
PAGE NUMBER 50
So much complexity in software
comes from trying to make one
thing do two things.
Ryan Singer
Slide 51
Slide 51 text
PAGE NUMBER LUCASFCOSTA.COM
51
JAVASCRIPT
Write
programs
that work
together.
Slide 52
Slide 52 text
M A R K 0 3 P R E S E N T A T I O N
PAGE NUMBER 52
Our
tools are
not new
LUCASFCOSTA.COM
Slide 53
Slide 53 text
PAGE NUMBER 53
These things are not new
LUCASFCOSTA.COM
JAVASCRIPT
Slide 54
Slide 54 text
PAGE NUMBER 54
These things are not new
LUCASFCOSTA.COM
JAVASCRIPT
E4X
JSX
Slide 55
Slide 55 text
PAGE NUMBER 55
These things are not new
LUCASFCOSTA.COM
JAVASCRIPT
Slide 56
Slide 56 text
PAGE NUMBER 56
These things are not new
grunt
npm
webpack
LUCASFCOSTA.COM
JAVASCRIPT
Slide 57
Slide 57 text
PAGE NUMBER 57
These things are not new
LUCASFCOSTA.COM
JAVASCRIPT
Symbian
WRT
Slide 58
Slide 58 text
PAGE NUMBER 58
How to deal with it
Slide 59
Slide 59 text
PAGE NUMBER LUCASFCOSTA.COM
59
HOW TO DEAL WITH IT
you don’t
need to know
everything
Slide 60
Slide 60 text
PAGE NUMBER LUCASFCOSTA.COM
60
REALITIES OF YOUR INDUSTRY 101
Every great developer you know
got there by solving problems
they were unqualified to solve
until they actually did it.
Patrick McKenzie
Slide 61
Slide 61 text
PAGE NUMBER 61
start from the
beginning
HTTP
CompSci
Fundamentals
HOW TO DEAL WITH IT
LUCASFCOSTA.COM
Slide 62
Slide 62 text
PAGE NUMBER LUCASFCOSTA.COM
62
HOW TO DEAL WITH IT
don’t be too
attached to a
single technology
Slide 63
Slide 63 text
PAGE NUMBER LUCASFCOSTA.COM
63
HOW TO DEAL WITH IT
don’t be
defined by
your stack
Slide 64
Slide 64 text
PAGE NUMBER LUCASFCOSTA.COM
64
HOW TO DEAL WITH IT
Master Foo & The Recruiter
Slide 65
Slide 65 text
PAGE NUMBER LUCASFCOSTA.COM
65
HOW TO DEAL WITH IT
A technical recruiter, having
discovered that the ways of Unix
hackers were strange to him, sought
an audience with Master Foo to learn
more about the Way.
Slide 66
Slide 66 text
PAGE NUMBER LUCASFCOSTA.COM
66
HOW TO DEAL WITH IT
The recruiter said:
“I have observed that Unix hackers
scowl or become annoyed when I ask
them how many years of experience
they have in a new programming
language. Why is this so?”
Slide 67
Slide 67 text
PAGE NUMBER LUCASFCOSTA.COM
67
HOW TO DEAL WITH IT
Master Foo stood, and began to pace
across the office floor.
The recruiter was puzzled, and asked
“What are you doing?”
Slide 68
Slide 68 text
PAGE NUMBER LUCASFCOSTA.COM
68
HOW TO DEAL WITH IT
“I am learning to walk,”
replied Master Foo.
Slide 69
Slide 69 text
PAGE NUMBER LUCASFCOSTA.COM
69
HOW TO DEAL WITH IT
“I saw you walk through that door”
the recruiter exclaimed
“and you are not stumbling over your
own feet. Obviously you already know
how to walk.”
Slide 70
Slide 70 text
PAGE NUMBER LUCASFCOSTA.COM
70
HOW TO DEAL WITH IT
“Yes, but this floor is new to me.”
replied Master Foo.
Upon hearing this, the recruiter was
enlightened.
http://www.catb.org/esr/writings/unix-koans/recruiter.html
Slide 71
Slide 71 text
PAGE NUMBER LUCASFCOSTA.COM
71
HOW TO DEAL WITH IT
dig
deep
Slide 72
Slide 72 text
PAGE NUMBER LUCASFCOSTA.COM
72
HOW TO DEAL WITH IT
What I cannot
create I do not
understand.
Richard Feynman
Slide 73
Slide 73 text
PAGE NUMBER LUCASFCOSTA.COM
73
HOW TO DEAL WITH IT
focus on what
matters
Slide 74
Slide 74 text
PAGE NUMBER LUCASFCOSTA.COM
74
HOW TO DEAL WITH IT
a.k.a. don't do
bikeshedding
Slide 75
Slide 75 text
PAGE NUMBER LUCASFCOSTA.COM
75
HOW TO DEAL WITH IT
don’t get
ahead of
yourself
Slide 76
Slide 76 text
PAGE NUMBER LUCASFCOSTA.COM
76
HOW TO DEAL WITH IT
build things
Slide 77
Slide 77 text
PAGE NUMBER 77
First you learn the value of
abstraction, then you learn the
cost of abstraction, then you're
ready to engineer
Kent Beck
LUCASFCOSTA.COM
JAVASCRIPT
Slide 78
Slide 78 text
PAGE NUMBER LUCASFCOSTA.COM
78
HOW TO DEAL WITH IT
do things that
don’t scale
Paul Graham
Slide 79
Slide 79 text
79
PAGE NUMBER
What am I?
Programmer or
Software Developer?
Software
Architect?
Software
Engineer?
HOW TO DEAL WITH IT
Slide 80
Slide 80 text
PAGE NUMBER LUCASFCOSTA.COM
80
engineering
software
development
HOW TO DEAL WITH IT
Slide 81
Slide 81 text
PAGE NUMBER 81
This is
Barcelona.
LUCASFCOSTA.COM
HOW TO DEAL WITH IT
Slide 82
Slide 82 text
PAGE NUMBER 82
This is Barcelona as
seen from the sky.
LUCASFCOSTA.COM
HOW TO DEAL WITH IT
Slide 83
Slide 83 text
PAGE NUMBER 83
Be a town planner
LUCASFCOSTA.COM
HOW TO DEAL WITH IT
Slide 84
Slide 84 text
PAGE NUMBER 84
Software is
flexible.
Engineering
is not.
HOW TO DEAL WITH IT
Slide 85
Slide 85 text
85
PAGE NUMBER
We can break things
We spend more time
designing and thinking
than building
We can build as many
times as we want
We can always change
things
Our build time is compile time.
HOW TO DEAL WITH IT
Slide 86
Slide 86 text
PAGE NUMBER 86
LET IT GROW
ADAPT AS NEEDED
Be a town planner.
LUCASFCOSTA.COM
HOW TO DEAL WITH IT
Slide 87
Slide 87 text
PAGE NUMBER LUCASFCOSTA.COM
HOW TO DEAL WITH IT
“
87
Abstractions only work well
in the right context, and the
right context develops as
the system develops.
Sam Koblenski
Slide 88
Slide 88 text
PAGE NUMBER LUCASFCOSTA.COM
88
HOW TO DEAL WITH IT
strive to be lazy
Slide 89
Slide 89 text
PAGE NUMBER LUCASFCOSTA.COM
89
HOW TO DEAL WITH IT
talk to
people
Slide 90
Slide 90 text
PAGE NUMBER LUCASFCOSTA.COM
90
HOW TO DEAL WITH IT
Be curious. Read
widely. Try new
things. What people
call intelligence just
boils down to
curiosity.
Aaron Swartz
Slide 91
Slide 91 text
PAGE NUMBER LUCASFCOSTA.COM
91
HOW TO DEAL WITH IT
solve problems
Slide 92
Slide 92 text
PAGE NUMBER LUCASFCOSTA.COM
92
solve problems
thank you
L U C A S F C O S T A . C O M github: lucasfcosta
twitter: lfernandescosta
Slide 93
Slide 93 text
93
PAGE NUMBER
Related Material/References
THANK YOU!
• Don't Call Yourself A Programmer, And Other Career Advice (Highly Recommended)
Patrick McKenzie
http://www.kalzumeus.com/2011/10/28/dont-call-yourself-a-programmer/
• The Cost of Abstraction
Sam Koblenski
http://sam-koblenski.blogspot.com/2014/07/the-cost-of-abstraction.html
• The Deep Roots of Javascript Fatigue
Calvin French-Owen
https://segment.com/blog/the-deep-roots-of-js-fatigue/
• JavaScript Fatigue
Eric Clemmons
https://medium.com/@ericclemmons/javascript-fatigue-48d4011b6fc4
• JavaScript Fatigue Fatigue - Dr. Axel Rauschmayer
http://2ality.com/2016/02/js-fatigue-fatigue.html
• JavaScript Fatigue, AMP, and Paths.js - JS Party Episode #3
https://changelog.com/jsparty/3
Building Microservices (Book)
Sam Newman