$30 off During Our Annual Pro Sale. View Details »

What can we learn with JavaScript Fatigue? - FrontEnd United

What can we learn with JavaScript Fatigue? - FrontEnd United

This talk has been presented at FrontEnd United, in Utrecht - The Netherlands on 02/06/2018.

Lucas Fernandes da Costa

June 02, 2018
Tweet

More Decks by Lucas Fernandes da Costa

Other Decks in Technology

Transcript

  1. 1
    PAGE NUMBER

    View Slide

  2. 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

    View Slide

  3. 3
    PAGE NUMBER
    github: lucasfcosta
    twitter: lfernandescosta L U C A S F C O S T A . C O M

    View Slide

  4. PAGE NUMBER 4
    github: lucasfcosta
    twitter: lfernandescosta L U C A S F C O S T A . C O M

    View Slide

  5. PAGE NUMBER 5
    github: lucasfcosta
    twitter: lfernandescosta L U C A S F C O S T A . C O M

    View Slide

  6. PAGE NUMBER 6 LUCASFCOSTA.COM

    View Slide

  7. PAGE NUMBER 7
    Realities
    of your
    industry
    101

    View Slide

  8. 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

    View Slide

  9. REALITIES OF YOUR INDUSTRY 101
    PAGE NUMBER LUCASFCOSTA.COM
    9
    You are not paid to write code
    The less code you write, the better

    View Slide

  10. PAGE NUMBER LUCASFCOSTA.COM
    REALITIES OF YOUR INDUSTRY 101
    10
    Technology
    is not a goal

    View Slide

  11. PAGE NUMBER LUCASFCOSTA.COM
    11
    REALITIES OF YOUR INDUSTRY 101
    versus
    Revenue
    Cost
    All that matters™

    View Slide

  12. PAGE NUMBER LUCASFCOSTA.COM
    REALITIES OF YOUR INDUSTRY 101
    12

    View Slide

  13. PAGE NUMBER 13
    Realities
    of your
    industry
    101
    REALITIES OF YOUR INDUSTRY 101
    LUCASFCOSTA.COM

    View Slide

  14. PAGE NUMBER 14
    Realities
    of your
    industry
    101
    REALITIES OF YOUR INDUSTRY 101
    LUCASFCOSTA.COM

    View Slide

  15. PAGE NUMBER 15
    Realities of
    capitalism
    101
    REALITIES OF YOUR INDUSTRY 101
    LUCASFCOSTA.COM

    View Slide

  16. 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

    View Slide

  17. 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,"

    View Slide

  18. 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

    View Slide

  19. PAGE NUMBER LUCASFCOSTA.COM
    19
    REALITIES OF YOUR INDUSTRY 101
    Good design adds value
    faster than it adds cost.
    Thomas C. Gale

    View Slide

  20. PAGE NUMBER LUCASFCOSTA.COM
    REALITIES OF YOUR INDUSTRY 101
    20
    JS
    These things
    exist to solve
    problems.

    View Slide

  21. 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

    View Slide

  22. PAGE NUMBER LUCASFCOSTA.COM
    REALITIES OF YOUR INDUSTRY 101
    Donald Knuth

    22
    "Premature
    optimisation is
    the root of all
    evil"

    View Slide

  23. 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

    View Slide

  24. 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

    View Slide

  25. PAGE NUMBER LUCASFCOSTA.COM
    REALITIES OF YOUR INDUSTRY 101
    25
    Remember this?

    View Slide

  26. PAGE NUMBER LUCASFCOSTA.COM
    26
    REALITIES OF YOUR INDUSTRY 101
    analysis
    paralysis

    View Slide

  27. PAGE NUMBER LUCASFCOSTA.COM
    27
    REALITIES OF YOUR INDUSTRY 101
    analysis
    paralysis

    View Slide

  28. PAGE NUMBER 28
    More choices

    Less satisfaction
    REALITIES OF YOUR INDUSTRY 101
    LUCASFCOSTA.COM

    View Slide

  29. 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

    View Slide

  30. PAGE NUMBER 30
    Our willpower is limited
    REALITIES OF YOUR INDUSTRY 101
    LUCASFCOSTA.COM

    View Slide

  31. 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

    View Slide

  32. PAGE NUMBER 32
    We might not be JavaScript fatigued
    maybe we’re just
    decision fatigued
    REALITIES OF YOUR INDUSTRY 101
    LUCASFCOSTA.COM

    View Slide

  33. PAGE NUMBER 33
    JavaScript
    REALITIES OF YOUR INDUSTRY 101
    LUCASFCOSTA.COM

    View Slide

  34. PAGE NUMBER 34
    A bunch of
    impressive
    numbers™
    LUCASFCOSTA.COM
    JAVASCRIPT

    View Slide

  35. PAGE NUMBER LUCASFCOSTA.COM
    JAVASCRIPT
    35
    packages on

    View Slide

  36. PAGE NUMBER LUCASFCOSTA.COM
    JAVASCRIPT
    36
    520,121
    packages on

    View Slide

  37. PAGE NUMBER LUCASFCOSTA.COM
    JAVASCRIPT
    37
    ~494 packages
    a day

    View Slide

  38. PAGE NUMBER LUCASFCOSTA.COM
    JAVASCRIPT
    38
    465
    a day
    Birth Rate in the
    Netherlands

    View Slide

  39. PAGE NUMBER 39 LUCASFCOSTA.COM
    JAVASCRIPT

    View Slide

  40. PAGE NUMBER 40
    ? But how
    did that
    happen?
    JAVASCRIPT
    LUCASFCOSTA.COM

    View Slide

  41. JAVASCRIPT
    PAGE NUMBER LUCASFCOSTA.COM
    41
    Transpilers

    View Slide

  42. JAVASCRIPT
    PAGE NUMBER LUCASFCOSTA.COM
    42
    Module
    Bundlers

    View Slide

  43. JAVASCRIPT
    PAGE NUMBER LUCASFCOSTA.COM
    43
    Front-end
    Frameworks

    View Slide

  44. 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

    View Slide

  45. PAGE NUMBER 45
    The web
    platform
    moves
    too fast
    LUCASFCOSTA.COM
    JAVASCRIPT

    View Slide

  46. PAGE NUMBER 46
    Natural
    Selection
    LUCASFCOSTA.COM
    JAVASCRIPT

    View Slide

  47. PAGE NUMBER 47
    The Unix Philosophy
    JAVASCRIPT
    LUCASFCOSTA.COM

    View Slide

  48. PAGE NUMBER LUCASFCOSTA.COM
    48
    JAVASCRIPT
    Do one
    thing, and
    do it well.

    View Slide

  49. PAGE NUMBER LUCASFCOSTA.COM
    49
    Do one
    thing, and
    do it well.
    JAVASCRIPT

    View Slide

  50. PAGE NUMBER 50
    So much complexity in software
    comes from trying to make one
    thing do two things.
    Ryan Singer

    View Slide

  51. PAGE NUMBER LUCASFCOSTA.COM
    51
    JAVASCRIPT
    Write
    programs
    that work
    together.

    View Slide

  52. 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

    View Slide

  53. PAGE NUMBER 53
    These things are not new
    LUCASFCOSTA.COM
    JAVASCRIPT

    View Slide

  54. PAGE NUMBER 54
    These things are not new
    LUCASFCOSTA.COM
    JAVASCRIPT
    E4X
    JSX

    View Slide

  55. PAGE NUMBER 55
    These things are not new
    LUCASFCOSTA.COM
    JAVASCRIPT

    View Slide

  56. PAGE NUMBER 56
    These things are not new
    grunt
    npm
    webpack
    LUCASFCOSTA.COM
    JAVASCRIPT

    View Slide

  57. PAGE NUMBER 57
    These things are not new
    LUCASFCOSTA.COM
    JAVASCRIPT
    Symbian

    WRT

    View Slide

  58. PAGE NUMBER 58
    How to deal with it

    View Slide

  59. PAGE NUMBER LUCASFCOSTA.COM
    59
    HOW TO DEAL WITH IT
    you don’t
    need to know
    everything

    View Slide

  60. 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

    View Slide

  61. PAGE NUMBER 61
    start from the
    beginning
    HTTP
    CompSci

    Fundamentals
    HOW TO DEAL WITH IT
    LUCASFCOSTA.COM

    View Slide

  62. PAGE NUMBER LUCASFCOSTA.COM
    62
    HOW TO DEAL WITH IT
    don’t be too
    attached to a
    single technology

    View Slide

  63. PAGE NUMBER LUCASFCOSTA.COM
    63
    HOW TO DEAL WITH IT
    don’t be
    defined by
    your stack

    View Slide

  64. PAGE NUMBER LUCASFCOSTA.COM
    64
    HOW TO DEAL WITH IT
    Master Foo & The Recruiter

    View Slide

  65. 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.

    View Slide

  66. 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?”

    View Slide

  67. 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?”

    View Slide

  68. PAGE NUMBER LUCASFCOSTA.COM
    68
    HOW TO DEAL WITH IT
    “I am learning to walk,”
    replied Master Foo.

    View Slide

  69. 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.”

    View Slide

  70. 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

    View Slide

  71. PAGE NUMBER LUCASFCOSTA.COM
    71
    HOW TO DEAL WITH IT
    dig
    deep

    View Slide

  72. PAGE NUMBER LUCASFCOSTA.COM
    72
    HOW TO DEAL WITH IT
    What I cannot
    create I do not
    understand.
    Richard Feynman

    View Slide

  73. PAGE NUMBER LUCASFCOSTA.COM
    73
    HOW TO DEAL WITH IT
    focus on what
    matters

    View Slide

  74. PAGE NUMBER LUCASFCOSTA.COM
    74
    HOW TO DEAL WITH IT
    a.k.a. don't do
    bikeshedding

    View Slide

  75. PAGE NUMBER LUCASFCOSTA.COM
    75
    HOW TO DEAL WITH IT
    don’t get
    ahead of
    yourself

    View Slide

  76. PAGE NUMBER LUCASFCOSTA.COM
    76
    HOW TO DEAL WITH IT
    build things

    View Slide

  77. 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

    View Slide

  78. PAGE NUMBER LUCASFCOSTA.COM
    78
    HOW TO DEAL WITH IT
    do things that
    don’t scale
    Paul Graham

    View Slide

  79. 79
    PAGE NUMBER
    What am I?
    Programmer or
    Software Developer?
    Software
    Architect?
    Software
    Engineer?
    HOW TO DEAL WITH IT

    View Slide

  80. PAGE NUMBER LUCASFCOSTA.COM
    80
    engineering
    software
    development
    HOW TO DEAL WITH IT

    View Slide

  81. PAGE NUMBER 81
    This is
    Barcelona.
    LUCASFCOSTA.COM
    HOW TO DEAL WITH IT

    View Slide

  82. PAGE NUMBER 82
    This is Barcelona as
    seen from the sky.
    LUCASFCOSTA.COM
    HOW TO DEAL WITH IT

    View Slide

  83. PAGE NUMBER 83
    Be a town planner
    LUCASFCOSTA.COM
    HOW TO DEAL WITH IT

    View Slide

  84. PAGE NUMBER 84
    Software is
    flexible.
    Engineering
    is not.
    HOW TO DEAL WITH IT

    View Slide

  85. 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

    View Slide

  86. PAGE NUMBER 86
    LET IT GROW
    ADAPT AS NEEDED
    Be a town planner.
    LUCASFCOSTA.COM
    HOW TO DEAL WITH IT

    View Slide

  87. 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

    View Slide

  88. PAGE NUMBER LUCASFCOSTA.COM
    88
    HOW TO DEAL WITH IT
    strive to be lazy

    View Slide

  89. PAGE NUMBER LUCASFCOSTA.COM
    89
    HOW TO DEAL WITH IT
    talk to
    people

    View Slide

  90. 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

    View Slide

  91. PAGE NUMBER LUCASFCOSTA.COM
    91
    HOW TO DEAL WITH IT
    solve problems

    View Slide

  92. 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

    View Slide

  93. 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

    View Slide