1
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 2
Slide 2 text
2
PAGE NUMBER
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 LUCASFCOSTA.COM
Slide 5
Slide 5 text
PAGE NUMBER LUCASFCOSTA.COM
5
Realities
of your
industry
101
Slide 6
Slide 6 text
PAGE NUMBER
REALITIES OF YOUR INDUSTRY 101
6 LUCASFCOSTA.COM
Software
solves
business
problems
Don't Call Yourself A Programmer, And
Other Career Advice - Patrick McKenzie
Slide 7
Slide 7 text
REALITIES OF YOUR INDUSTRY 101
PAGE NUMBER LUCASFCOSTA.COM
7
You are not paid to write code
(sorry for that)
Slide 8
Slide 8 text
PAGE NUMBER LUCASFCOSTA.COM
REALITIES OF YOUR INDUSTRY 101
8
Technology
is not a goal
Slide 9
Slide 9 text
PAGE NUMBER LUCASFCOSTA.COM
9
REALITIES OF YOUR INDUSTRY 101
versus
Revenue
Cost
All that matters™
Slide 10
Slide 10 text
PAGE NUMBER LUCASFCOSTA.COM
REALITIES OF YOUR INDUSTRY 101
10
Slide 11
Slide 11 text
PAGE NUMBER LUCASFCOSTA.COM
11
Realities
of your
industry
101
REALITIES OF YOUR INDUSTRY 101
Slide 12
Slide 12 text
PAGE NUMBER LUCASFCOSTA.COM
12
Realities
of your
industry
101
REALITIES OF YOUR INDUSTRY 101
Slide 13
Slide 13 text
PAGE NUMBER LUCASFCOSTA.COM
13
Realities of
capitalism
101
REALITIES OF YOUR INDUSTRY 101
Slide 14
Slide 14 text
14
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 15
Slide 15 text
PAGE NUMBER LUCASFCOSTA.COM
15
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 16
Slide 16 text
16
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 17
Slide 17 text
PAGE NUMBER LUCASFCOSTA.COM
REALITIES OF YOUR INDUSTRY 101
17
JS
These things
exist to solve
problems.
Slide 18
Slide 18 text
PAGE NUMBER 18
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 19
Slide 19 text
PAGE NUMBER LUCASFCOSTA.COM
REALITIES OF YOUR INDUSTRY 101
Donald Knuth
“
19
"Premature
optimization is
the root of all
evil"
Slide 20
Slide 20 text
PAGE NUMBER LUCASFCOSTA.COM
REALITIES OF YOUR INDUSTRY 101
20
Remember this?
Slide 21
Slide 21 text
PAGE NUMBER LUCASFCOSTA.COM
21
REALITIES OF YOUR INDUSTRY 101
analysis
paralysis
Slide 22
Slide 22 text
PAGE NUMBER LUCASFCOSTA.COM
22
REALITIES OF YOUR INDUSTRY 101
analysis
paralysis
Slide 23
Slide 23 text
PAGE NUMBER 23
JavaScript
Slide 24
Slide 24 text
PAGE NUMBER 24
A bunch of
impressive
numbers™
LUCASFCOSTA.COM
JAVASCRIPT
Slide 25
Slide 25 text
PAGE NUMBER LUCASFCOSTA.COM
JAVASCRIPT
25
482,971
packages on
Slide 26
Slide 26 text
PAGE NUMBER LUCASFCOSTA.COM
JAVASCRIPT
26
~479
packages/day
Slide 27
Slide 27 text
27
PAGE NUMBER
The number of people born daily in Nebraska
JAVASCRIPT
6.5
times
LUCASFCOSTA.COM
Slide 28
Slide 28 text
PAGE NUMBER 28 LUCASFCOSTA.COM
JAVASCRIPT
Slide 29
Slide 29 text
PAGE NUMBER LUCASFCOSTA.COM
29
? But how
did that
happen?
JAVASCRIPT
Slide 30
Slide 30 text
JAVASCRIPT
PAGE NUMBER LUCASFCOSTA.COM
30
Transpilers
Slide 31
Slide 31 text
JAVASCRIPT
PAGE NUMBER LUCASFCOSTA.COM
31
Module
Bundlers
Slide 32
Slide 32 text
JAVASCRIPT
PAGE NUMBER LUCASFCOSTA.COM
32
Front-end
Frameworks
Slide 33
Slide 33 text
PAGE NUMBER
“
33
Abstractions are
necessary to reduce the
cognitive load of how
things work so you can
focus on creating.
Eric Clemmons
LUCASFCOSTA.COM
JAVASCRIPT
Slide 34
Slide 34 text
PAGE NUMBER 34
The web
platform
moves
too fast
LUCASFCOSTA.COM
JAVASCRIPT
Slide 35
Slide 35 text
PAGE NUMBER 35
More tools
mean more
choices
LUCASFCOSTA.COM
JAVASCRIPT
Slide 36
Slide 36 text
PAGE NUMBER LUCASFCOSTA.COM
36
The Unix Philosophy
JAVASCRIPT
Slide 37
Slide 37 text
PAGE NUMBER LUCASFCOSTA.COM
37
JAVASCRIPT
Do one
thing, and
do it well.
Slide 38
Slide 38 text
PAGE NUMBER LUCASFCOSTA.COM
38
Do one
thing, and
do it well.
JAVASCRIPT
Slide 39
Slide 39 text
PAGE NUMBER LUCASFCOSTA.COM
39
JAVASCRIPT
Write
programs
that work
together.
Slide 40
Slide 40 text
PAGE NUMBER 40
Natural
Selection
LUCASFCOSTA.COM
JAVASCRIPT
Slide 41
Slide 41 text
M A R K 0 3 P R E S E N T A T I O N
PAGE NUMBER 41
Our
tools are
not new
LUCASFCOSTA.COM
Slide 42
Slide 42 text
PAGE NUMBER 42
These things are not new
LUCASFCOSTA.COM
JAVASCRIPT
Slide 43
Slide 43 text
PAGE NUMBER 43
These things are not new
LUCASFCOSTA.COM
JAVASCRIPT
E4X
JSX
Slide 44
Slide 44 text
PAGE NUMBER 44
These things are not new
LUCASFCOSTA.COM
JAVASCRIPT
Slide 45
Slide 45 text
PAGE NUMBER 45
These things are not new
grunt
npm
webpack
LUCASFCOSTA.COM
JAVASCRIPT
Slide 46
Slide 46 text
PAGE NUMBER 46
These things are not new
LUCASFCOSTA.COM
JAVASCRIPT
Symbian
WRT
Slide 47
Slide 47 text
PAGE NUMBER 47
How to deal with it
Slide 48
Slide 48 text
PAGE NUMBER LUCASFCOSTA.COM
48
HOW TO DEAL WITH IT
you don’t
need to know
everything
Slide 49
Slide 49 text
PAGE NUMBER LUCASFCOSTA.COM
49
start from the
beginning
HTTP
CompSci
Fundamentals
HOW TO DEAL WITH IT
Slide 50
Slide 50 text
PAGE NUMBER LUCASFCOSTA.COM
50
HOW TO DEAL WITH IT
when learning,
avoid
boilerplates
Slide 51
Slide 51 text
PAGE NUMBER LUCASFCOSTA.COM
51
HOW TO DEAL WITH IT
don’t be too
attached to a
single technology
Slide 52
Slide 52 text
PAGE NUMBER LUCASFCOSTA.COM
52
HOW TO DEAL WITH IT
dig
deep
Slide 53
Slide 53 text
PAGE NUMBER LUCASFCOSTA.COM
53
HOW TO DEAL WITH IT
What I cannot
create I do not
understand.
Richard Feynman
Slide 54
Slide 54 text
PAGE NUMBER LUCASFCOSTA.COM
54
HOW TO DEAL WITH IT
don’t get
ahead of
yourself
Slide 55
Slide 55 text
PAGE NUMBER LUCASFCOSTA.COM
55
engineering
software
development
HOW TO DEAL WITH IT
Slide 56
Slide 56 text
PAGE NUMBER 56
This is
Barcelona.
LUCASFCOSTA.COM
HOW TO DEAL WITH IT
Slide 57
Slide 57 text
PAGE NUMBER 57
This is Barcelona as
seen from the sky.
LUCASFCOSTA.COM
HOW TO DEAL WITH IT
Slide 58
Slide 58 text
PAGE NUMBER 58
Be a town planner
LUCASFCOSTA.COM
HOW TO DEAL WITH IT
Slide 59
Slide 59 text
PAGE NUMBER 59
Software is
flexible.
Engineering
is not.
HOW TO DEAL WITH IT
Slide 60
Slide 60 text
60
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 61
Slide 61 text
PAGE NUMBER 61
LET IT GROW
ADAPT AS NEEDED
Be a town planner.
LUCASFCOSTA.COM
HOW TO DEAL WITH IT
Slide 62
Slide 62 text
PAGE NUMBER LUCASFCOSTA.COM
HOW TO DEAL WITH IT
“
62
Abstractions only work well
in the right context, and the
right context develops as
the system develops.
Sam Koblenski
Slide 63
Slide 63 text
PAGE NUMBER LUCASFCOSTA.COM
63
HOW TO DEAL WITH IT
strive to be lazy
Slide 64
Slide 64 text
PAGE NUMBER LUCASFCOSTA.COM
64
HOW TO DEAL WITH IT
talk to
people
Slide 65
Slide 65 text
PAGE NUMBER LUCASFCOSTA.COM
65
HOW TO DEAL WITH IT
build
things
Slide 66
Slide 66 text
PAGE NUMBER LUCASFCOSTA.COM
66
HOW TO DEAL WITH IT
solve problems
Slide 67
Slide 67 text
PAGE NUMBER LUCASFCOSTA.COM
67
solve problems
thank you
L U C A S F C O S T A . C O M github: lucasfcosta
twitter: lfernandescosta
Slide 68
Slide 68 text
68
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