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

What Can We Learn With JavaScript Fatigue? - The Conf SP

What Can We Learn With JavaScript Fatigue? - The Conf SP

Lucas Fernandes da Costa

September 30, 2017
Tweet

More Decks by Lucas Fernandes da Costa

Other Decks in Programming

Transcript

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

    View Slide

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

    View Slide

  3. PAGE NUMBER 3
    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. 5
    PAGE NUMBER
    github: lucasfcosta
    twitter: lfernandescosta L U C A S F C O S T A . C O M

    View Slide

  6. PAGE NUMBER 6
    This talk is not
    “hardcore”
    github: lucasfcosta
    twitter: lfernandescosta L U C A S F C O S T A . C O M

    View Slide

  7. PAGE NUMBER 7
    This talk is not
    “hardcore”
    •No data structures
    github: lucasfcosta
    twitter: lfernandescosta L U C A S F C O S T A . C O M

    View Slide

  8. PAGE NUMBER 8
    This talk is not
    “hardcore”
    •No data structures
    •No fancy algorithms
    github: lucasfcosta
    twitter: lfernandescosta L U C A S F C O S T A . C O M

    View Slide

  9. PAGE NUMBER 9
    This talk is not
    “hardcore”
    •No data structures
    •No fancy algorithms
    •No math
    github: lucasfcosta
    twitter: lfernandescosta L U C A S F C O S T A . C O M

    View Slide

  10. PAGE NUMBER 10
    =
    github: lucasfcosta
    twitter: lfernandescosta L U C A S F C O S T A . C O M
    This talk
    is about
    making
    decisions.

    View Slide

  11. PAGE NUMBER 11 LUCASFCOSTA.COM

    View Slide

  12. PAGE NUMBER 12
    Realities
    of your
    industry
    101

    View Slide

  13. PAGE NUMBER
    REALITIES OF YOUR INDUSTRY 101
    13 LUCASFCOSTA.COM
    Software
    solves
    business
    problems
    Don't Call Yourself A Programmer, And
    Other Career Advice - Patrick McKenzie

    View Slide

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

    View Slide

  15. PAGE NUMBER 15
    You’re in the
    business of
    unemploying
    people.
    Patrick McKenzie
    REALITIES OF YOUR INDUSTRY 101
    LUCASFCOSTA.COM

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

  23. PAGE NUMBER LUCASFCOSTA.COM
    23
    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

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

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

    View Slide

  26. PAGE NUMBER 26
    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

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

    27
    "Premature
    optimization is
    the root of all
    evil"

    View Slide

  28. PAGE NUMBER 28
    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

  29. PAGE NUMBER 29
    Fancy algorithms are
    slow when n is small
    and n is usually small.
    Rob Pike
    REALITIES OF YOUR INDUSTRY 101
    LUCASFCOSTA.COM

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  33. PAGE NUMBER 33
    More choices

    Less satisfaction
    REALITIES OF YOUR INDUSTRY 101
    LUCASFCOSTA.COM

    View Slide

  34. PAGE NUMBER 34
    As the number of options
    increases, the costs, in time
    and effort, of gathering the
    information needed to make
    a good choice also increase
    Barry Schwartz
    REALITIES OF YOUR INDUSTRY 101
    LUCASFCOSTA.COM

    View Slide

  35. PAGE NUMBER 35
    Have you ever wondered why
    surprise box subscriptions
    are so popular nowadays?
    REALITIES OF YOUR INDUSTRY 101
    LUCASFCOSTA.COM

    View Slide

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

    View Slide

  37. PAGE NUMBER LUCASFCOSTA.COM
    37
    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

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

    View Slide

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

    View Slide

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

    View Slide

  41. PAGE NUMBER LUCASFCOSTA.COM
    JAVASCRIPT
    41
    packages on

    View Slide

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

    View Slide

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

    View Slide

  44. PAGE NUMBER LUCASFCOSTA.COM
    JAVASCRIPT
    44
    400
    a month
    Birth Rate in
    Florianópolis

    View Slide

  45. PAGE NUMBER 45 LUCASFCOSTA.COM
    JAVASCRIPT

    View Slide

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

    View Slide

  47. JAVASCRIPT
    PAGE NUMBER 47
    The History Of
    JavaScript
    LUCASFCOSTA.COM

    View Slide

  48. PAGE NUMBER 48
    1992
    THE JOURNEY BEGINS
    A company called Nombas
    started creating a language
    called C-minus-minus (CMM)
    1.
    As the popularity of Netscape
    grew, they developed a
    version that could be
    embedded into webpages
    (“Espresso Pages”)
    2. Cmm was
    renamed to
    ScriptEase
    JAVASCRIPT
    LUCASFCOSTA.COM

    View Slide

  49. PAGE NUMBER 49
    1995
    A WILD JAVASCRIPT APPEARED
    JavaScript was created in 10
    days
    1.
    It aimed to handle input
    validation on the client-save
    and save round-trips
    2.
    Since then, JavaScript
    became a must-have
    3.
    JAVASCRIPT
    LUCASFCOSTA.COM

    View Slide

  50. PAGE NUMBER 50
    1995
    THINGS GET COMPLICATED
    Microsoft releases Internet
    Explorer 3.0 with JScript
    1.
    We now have 3 different
    scripting languages
    available:
    2. ScriptEase
    JavaScript
    JScript
    JAVASCRIPT
    LUCASFCOSTA.COM

    View Slide

  51. PAGE NUMBER 51
    1997
    FINALLY WE GET A STANDARD
    A proposal was submitted to
    ECMA
    1.
    Technical Committee #39
    (TC39) was assigned for:
    2.
    Standardization of the
    general purpose, cross
    platform, vendor-
    neutral programming
    language ECMAScript.
    JAVASCRIPT
    LUCASFCOSTA.COM

    View Slide

  52. PAGE NUMBER 52
    ECMAScript then
    became the basis
    for all JavaScript
    implementations
    JAVASCRIPT
    LUCASFCOSTA.COM
    LUCASFCOSTA.COM

    View Slide

  53. PAGE NUMBER 53
    ES1
    1997
    ES2
    1998
    ES3
    1999
    ES4
    2008 (CANCELLED)
    ES5
    2009
    ES6
    2015
    JAVASCRIPT
    LUCASFCOSTA.COM

    View Slide

  54. PAGE NUMBER
    JAVASCRIPT
    54
    14.88%
    Safari
    54.89%
    Chrome
    5.9%
    Firefox
    4%
    Opera
    7.43%
    UC Browser
    3.69%
    IE
    Browser
    Market
    Share
    source: http://gs.statcounter.com/browser-market-share
    LUCASFCOSTA.COM

    View Slide

  55. JAVASCRIPT
    PAGE NUMBER LUCASFCOSTA.COM
    55
    Transpilers

    View Slide

  56. JAVASCRIPT
    PAGE NUMBER LUCASFCOSTA.COM
    56
    Module
    Bundlers

    View Slide

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

    View Slide

  58. PAGE NUMBER

    58
    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

  59. PAGE NUMBER 59
    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

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

    View Slide

  61. PAGE NUMBER 61
    More tools
    mean more
    choices
    LUCASFCOSTA.COM
    JAVASCRIPT

    View Slide

  62. PAGE NUMBER 62
    Natural
    Selection
    LUCASFCOSTA.COM
    JAVASCRIPT

    View Slide

  63. PAGE NUMBER
    JAVASCRIPT
    LUCASFCOSTA.COM
    63
    Good programmers
    know what to
    write.
    Eric. S. Raymond
    Great ones know
    what to rewrite
    (and reuse).

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  68. M A R K 0 3 P R E S E N T A T I O N
    PAGE NUMBER 68
    Our
    tools are
    not new
    LUCASFCOSTA.COM

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    WRT

    View Slide

  74. PAGE NUMBER 74
    How to deal with it

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  78. PAGE NUMBER LUCASFCOSTA.COM
    78
    HOW TO DEAL WITH IT
    A technical recruiter, having
    discovered that that the ways of Unix
    hackers were strange to him, sought
    an audience with Master Foo to learn
    more about the Way.

    View Slide

  79. PAGE NUMBER LUCASFCOSTA.COM
    79
    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

  80. PAGE NUMBER LUCASFCOSTA.COM
    80
    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

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

    View Slide

  82. PAGE NUMBER LUCASFCOSTA.COM
    82
    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

  83. PAGE NUMBER LUCASFCOSTA.COM
    83
    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

  84. PAGE NUMBER 84
    start from the
    beginning
    HTTP
    CompSci

    Fundamentals
    HOW TO DEAL WITH IT
    LUCASFCOSTA.COM

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  89. PAGE NUMBER LUCASFCOSTA.COM
    89
    HOW TO DEAL WITH IT
    Parkinson's
    law of triviality
    Members of an
    organization give
    disproportionate
    weights to trivial issues.

    View Slide

  90. PAGE NUMBER LUCASFCOSTA.COM
    90
    HOW TO DEAL WITH IT
    a.k.a. bikeshedding

    View Slide

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

    View Slide

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

    View Slide

  93. PAGE NUMBER 93
    The Master Plan
    Thanks Mr. Elon Musk, you are awesome
    LUCASFCOSTA.COM
    HOW TO DEAL WITH IT

    View Slide

  94. PAGE NUMBER 94
    The Master Plan
    Thanks Mr. Elon Musk, you are awesome
    LUCASFCOSTA.COM
    HOW TO DEAL WITH IT
    . Create a low volume car, which would necessarily be expensive

    View Slide

  95. PAGE NUMBER 95
    The Master Plan
    Thanks Mr. Elon Musk, you are awesome
    LUCASFCOSTA.COM
    HOW TO DEAL WITH IT
    . Create a low volume car, which would necessarily be expensive
    . Use that money to develop a medium volume car at a lower price

    View Slide

  96. PAGE NUMBER 96
    The Master Plan
    Thanks Mr. Elon Musk, you are awesome
    LUCASFCOSTA.COM
    HOW TO DEAL WITH IT
    . Create a low volume car, which would necessarily be expensive
    . Use that money to develop a medium volume car at a lower price
    . Use that money to create an affordable, high volume car

    View Slide

  97. PAGE NUMBER 97
    The Master Plan
    Thanks Mr. Elon Musk, you are awesome
    LUCASFCOSTA.COM
    HOW TO DEAL WITH IT
    . Create a low volume car, which would necessarily be expensive
    . Use that money to develop a medium volume car at a lower price
    . Use that money to create an affordable, high volume car
    . Provide solar power.

    View Slide

  98. PAGE NUMBER 98
    The Master Plan
    Tesla Roadster Tesla Model 3
    Thanks Mr. Elon Musk, you are awesome
    LUCASFCOSTA.COM
    HOW TO DEAL WITH IT

    View Slide

  99. PAGE NUMBER 99
    The Master Plan
    Tesla Roadster Tesla Model 3
    Thanks Mr. Elon Musk, you are awesome
    LUCASFCOSTA.COM
    HOW TO DEAL WITH IT
    $ ~110,000 $ ~35,000

    View Slide

  100. PAGE NUMBER 100
    The Master Plan
    Tesla Roadster Tesla Model 3
    Thanks Mr. Elon Musk, you are awesome
    LUCASFCOSTA.COM
    HOW TO DEAL WITH IT
    $ ~110,000 $ ~35,000
    2,400 units sold 200,000 units reserved

    View Slide

  101. PAGE NUMBER 101
    The Master Plan
    Tesla Roadster Tesla Model 3
    Thanks Mr. Elon Musk, you are awesome
    LUCASFCOSTA.COM
    HOW TO DEAL WITH IT
    $ ~110,000 $ ~35,000
    2,400 units sold 200,000 units reserved
    ON ITS FIRST DAY

    View Slide

  102. PAGE NUMBER 102
    The Master Plan
    Tesla Roadster Tesla Model 3
    Thanks Mr. Elon Musk, you are awesome
    LUCASFCOSTA.COM
    HOW TO DEAL WITH IT
    $ ~110,000 $ ~35,000
    2,400 units sold 200,000 units reserved
    ON ITS FIRST DAY
    BEFORE RELEASE

    View Slide

  103. PAGE NUMBER 103
    The Master Plan
    Thanks Mr. Elon Musk, you are awesome
    LUCASFCOSTA.COM
    HOW TO DEAL WITH IT
    “Okay, but
    what about
    solar power?"

    View Slide

  104. PAGE NUMBER LUCASFCOSTA.COM
    104
    HOW TO DEAL WITH IT
    Henrik Kniberg

    View Slide

  105. PAGE NUMBER LUCASFCOSTA.COM
    105
    HOW TO DEAL WITH IT
    Henrik Kniberg

    View Slide

  106. PAGE NUMBER LUCASFCOSTA.COM
    106
    HOW TO DEAL WITH IT
    Henrik Kniberg
    meh, that’s cliché

    View Slide

  107. PAGE NUMBER LUCASFCOSTA.COM
    107
    the cathedral
    the bazaar
    HOW TO DEAL WITH IT

    View Slide

  108. PAGE NUMBER LUCASFCOSTA.COM
    108
    the cathedral
    HOW TO DEAL WITH IT
    • centralized
    • carefully crafted by
    individual wizards
    • no beta or release
    before its time

    View Slide

  109. PAGE NUMBER LUCASFCOSTA.COM
    109
    HOW TO DEAL WITH IT
    • centralized
    • carefully crafted by
    individual wizards
    • no beta or release
    before its time
    the bazaar
    • release early and often
    • delegate everything
    you can
    • communicate
    • listen to feedback

    View Slide

  110. PAGE NUMBER 110
    The Right Thing Worse is better
    LUCASFCOSTA.COM
    HOW TO DEAL WITH IT
    SIMPLICITY

    View Slide

  111. PAGE NUMBER 111
    The Right Thing Worse is better
    LUCASFCOSTA.COM
    HOW TO DEAL WITH IT
    • It is more important for the interface to be
    simple than the implementation.
    • The design must be simple, both in
    implementation and interface. Simplicity is
    the most important consideration in a
    design.
    SIMPLICITY

    View Slide

  112. PAGE NUMBER 112
    The Right Thing Worse is better
    LUCASFCOSTA.COM
    HOW TO DEAL WITH IT
    • It is more important for the interface to be
    simple than the implementation.
    • Incorrectness is simply not allowed
    • The design must be simple, both in
    implementation and interface. Simplicity is
    the most important consideration in a
    design.
    • It is slightly better to be simple than correct.
    CORRECTNESS

    View Slide

  113. PAGE NUMBER 113
    The Right Thing Worse is better
    LUCASFCOSTA.COM
    HOW TO DEAL WITH IT
    • It is more important for the interface to be
    simple than the implementation.
    • Incorrectness is simply not allowed
    • The design must be consistent. A design is
    allowed to be slightly less simple and less
    complete to avoid inconsistency.
    • The design must be simple, both in
    implementation and interface. Simplicity is
    the most important consideration in a
    design.
    • It is slightly better to be simple than correct.
    • The design must not be overly inconsistent.
    Consistency can be sacrificed for simplicity in
    some cases.
    CONSISTENCY

    View Slide

  114. PAGE NUMBER 114
    The Right Thing Worse is better
    LUCASFCOSTA.COM
    HOW TO DEAL WITH IT
    • It is more important for the interface to be
    simple than the implementation.
    • Incorrectness is simply not allowed
    • The design must be consistent. A design is
    allowed to be slightly less simple and less
    complete to avoid inconsistency.
    • The design must cover as many important
    situations as is practical. Simplicity is not
    allowed to overly reduce completeness.
    • The design must be simple, both in
    implementation and interface. Simplicity is
    the most important consideration in a
    design.
    • It is slightly better to be simple than correct.
    • The design must not be overly inconsistent.
    Consistency can be sacrificed for simplicity in
    some cases.
    • Completeness can be sacrificed in favor of
    any other quality. In fact, completeness must
    be sacrificed whenever implementation
    simplicity is jeopardized.
    COMPLETENESS

    View Slide

  115. PAGE NUMBER 115
    The Right Thing Worse is better
    LUCASFCOSTA.COM
    HOW TO DEAL WITH IT
    Might take
    forever to
    build
    • The design must be simple, both in
    implementation and interface. Simplicity is
    the most important consideration in a
    design.
    • It is slightly better to be simple than correct.
    • The design must not be overly inconsistent.
    Consistency can be sacrificed for simplicity in
    some cases.
    • Completeness can be sacrificed in favor of
    any other quality. In fact, completeness must
    be sacrificed whenever implementation
    simplicity is jeopardized.
    COMPLETENESS

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

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

    View Slide

  124. PAGE NUMBER LUCASFCOSTA.COM
    HOW TO DEAL WITH IT

    124
    Abstractions only work well
    in the right context, and the
    right context develops as
    the system develops.
    Sam Koblenski

    View Slide

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

    View Slide

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

    View Slide

  127. PAGE NUMBER LUCASFCOSTA.COM
    127
    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

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

    View Slide

  129. PAGE NUMBER LUCASFCOSTA.COM
    129
    solve problems
    thank you
    L U C A S F C O S T A . C O M github: lucasfcosta
    twitter: lfernandescosta

    View Slide

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