Upgrade to Pro — share decks privately, control downloads, hide ads and more …

The future of development: Are our jobs getting harder or easier?

The future of development: Are our jobs getting harder or easier?

In the early days of computing, software developers had to encode their programs on punch cards, and carry the bits around by hand. By the 1970s they had the joy of keyboards and displays. Sadly, those oppressed developers had to wear flare trousers, work in C, and manage their own memory. By 2000 the memory thing was sorted out, but the trousers were arguably worse, and developers had to maintain their own hardware. Now, our hardware is someone else’s problem, everything is open source, AI can write our code, and we have a choice whether to work in Java, Kotlin, Javascript, Ruby, Go, Python, Rust, or Typescript. On the other hand, now we have yaml. And many of us find we have to work in ALL of Java, Kotlin, Javascript, Ruby, Go, Python, Rust, or Typescript, all while managing a cloud, becoming security experts, learning CSS, and debugging the code our AI “helper” wrote. And we’re supposed to be full-stack, and shifting left, and building up open source in our free time. Are we living the dream or sinking under cognitive overload? And is open source helping or hurting?

Holly Cummins

October 21, 2023
Tweet

More Decks by Holly Cummins

Other Decks in Programming

Transcript

  1. the future of development


    are our jobs getting


    harder or easier?
    Dr Holly Cummins


    Senior Principal Software Engineer, Quarkus


    @[email protected]
    Red Hat
    FOSSCOMM


    October 21, 2023

    View full-size slide

  2. @holly_cummins
    #RedHat
    senior principal software engineer


    helping to build Quarkus
    Γειά σου!

    View full-size slide

  3. @holly_cummins #RedHat
    Caused by: java.io.IOException: Invalid Magic
    at org.jboss.jandex.Indexer.verifyMagic(Indexer.java:2090)
    at org.jboss.jandex.Indexer.indexWithSummary(Indexer.java:2479)
    at org.jboss.jandex.Indexer.index(Indexer.java:2452
    true story

    View full-size slide

  4. @holly_cummins #RedHat
    Caused by: java.io.IOException: Invalid Magic
    at org.jboss.jandex.Indexer.verifyMagic(Indexer.java:2090)
    at org.jboss.jandex.Indexer.indexWithSummary(Indexer.java:2479)
    at org.jboss.jandex.Indexer.index(Indexer.java:2452
    true story
    Invalid Magic?!

    View full-size slide

  5. @holly_cummins #RedHat
    we didn’t always have magic

    View full-size slide

  6. @holly_cummins #RedHat
    punched cards
    1804 - 1960s

    View full-size slide

  7. @holly_cummins #RedHat
    https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/IMU_COMPENSATION_PACKAGE.agc
    1969

    View full-size slide

  8. @holly_cummins #RedHat
    TCF 1/PIPA1 +1
    NOOP # LESS THAN ZERO IMPOSSIBLE.
    RELINT
    # Page 299
    IRIGCOMP TS GCOMPSW # INDICATE COMMANDS 2 PULSES OR LESS.
    TS BUF # INDEX COUNTER - IRIGX, IRIGY, IRIGZ.
    IRIGX EXTEND
    DCS DELVX # (PIPA PULSES) X 2(+14)
    DXCH MPAC
    CA ADIAX # (GYRO PULSES)/(PIPA PULSE) X 2(-3) *
    TC GCOMPSUB # -(ADIAX)(PIPAX) (GYRO PULSES) X 2(+14)
    EXTEND #
    DCS DELVY # (PIPA PULSES) X 2(+14)
    DXCH MPAC #
    CS ADSRAX # (GYRO PULSES)/(PIPA PULSE) X 2(-3) *
    TC GCOMPSUB # +(ADSRAX)(PIPAY) (GYRO PULSES) X 2(+14)
    # EXTEND # ***
    # DCS DELVY # *** (PIPA PULSES) X 2(+14)
    # DXCH MPAC # ***
    # CA ADOAX # *** (GYRO PULSES)/(PIPA PULSE) X 2(-3) *
    # TC GCOMPSUB # *** -(ADOAX)(PIPAZ) (GYRO PULSES) X 2(+14)
    CS NBDX # (GYRO PULSES)/(CS) X 2(-5)
    TC DRIFTSUB # -(NBDX)(DELTAT) (GYRO PULSES) X 2(+14)
    IRIGY EXTEND
    DCS DELVY # (PIPA PULSES) X 2(+14)
    DXCH MPAC
    CA ADIAY # (GYRO PULSES)/(PIPA PULSE) X 2(-3) *
    TC GCOMPSUB # -(ADIAY)(PIPAY) (GYRO PULSES) X 2(+14)
    EXTEND
    DCS DELVZ # (PIPA PULSES) X 2(+14)
    DXCH MPAC
    CS ADSRAY # (GYRO PULSES)/(PIPA PULSE) X 2(-3) *
    TC GCOMPSUB # +(ADSRAY)(PIPAZ) (GYRO PULSES) X 2(+14)
    # EXTEND # ***
    # DCS DELVX # *** (PIPA PULSES) X 2(+14)
    # DXCH MPAC # ***
    https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/IMU_COMPENSATION_PACKAGE.agc
    1969

    View full-size slide

  9. @holly_cummins #RedHat
    1974
    image courtesy of Smithsonian Institute, https://americanhistory.si.edu/collections/search/object/nmah_334396
    altair 8800

    View full-size slide

  10. @holly_cummins #RedHat
    1974
    image courtesy of Smithsonian Institute, https://americanhistory.si.edu/collections/search/object/nmah_334396
    altair 8800
    light bulbs for output

    View full-size slide

  11. @holly_cummins #RedHat
    1974
    image courtesy of Smithsonian Institute, https://americanhistory.si.edu/collections/search/object/nmah_334396
    altair 8800
    light bulbs for output
    switches for input

    View full-size slide

  12. @holly_cummins #RedHat
    java
    1995

    View full-size slide

  13. @holly_cummins #RedHat
    large language models + prompt engineering

    View full-size slide

  14. @holly_cummins #RedHat
    large language models + prompt engineering

    View full-size slide

  15. @holly_cummins #RedHat
    large language models + prompt engineering

    View full-size slide

  16. @holly_cummins #RedHat
    large language models + prompt engineering

    View full-size slide

  17. @holly_cummins #RedHat
    large language models + prompt engineering

    View full-size slide

  18. @holly_cummins #RedHat
    large language models + prompt engineering

    View full-size slide

  19. @holly_cummins #RedHat
    large language models + prompt engineering

    View full-size slide

  20. our modern stack

    View full-size slide

  21. transistor networks
    our modern stack

    View full-size slide

  22. transistor networks
    machine codes
    our modern stack

    View full-size slide

  23. transistor networks
    assembler
    machine codes
    our modern stack

    View full-size slide

  24. transistor networks
    high-level language
    assembler
    machine codes
    our modern stack

    View full-size slide

  25. transistor networks
    high-level language
    assembler
    machine codes
    libraries
    our modern stack

    View full-size slide

  26. transistor networks
    framework
    high-level language
    assembler
    machine codes
    libraries
    our modern stack

    View full-size slide

  27. transistor networks
    framework
    high-level language
    assembler
    machine codes
    libraries
    our modern stack
    ai coding assistant

    View full-size slide

  28. transistor networks
    framework
    application
    high-level language
    assembler
    machine codes
    libraries
    our modern stack
    ai coding assistant

    View full-size slide

  29. transistor networks
    framework
    application
    high-level language
    assembler
    machine codes
    libraries
    our modern stack
    ai coding assistant
    abstraction

    View full-size slide

  30. @holly_cummins #RedHat
    awesome.
    what could possibly go wrong?

    View full-size slide

  31. @holly_cummins
    #RedHat

    View full-size slide

  32. @holly_cummins
    #RedHat
    package com.example;
    import org.jboss.logging.Logger;
    public class MyService {
    private static final Logger log = Logger.getLogger(MyService.class);
    public void doSomething() {
    log.info("It works!");
    }
    }
    example: quarkus logging

    View full-size slide

  33. @holly_cummins
    #RedHat
    package com.example;
    import org.jboss.logging.Logger;
    public class MyService {
    private static final Logger log = Logger.getLogger(MyService.class);
    public void doSomething() {
    log.info("It works!");
    }
    }
    example: quarkus logging
    import io.quarkus.logging.Log;
    Log

    View full-size slide

  34. @holly_cummins
    #RedHat

    View full-size slide

  35. @holly_cummins
    #RedHat
    horrible

    View full-size slide

  36. @holly_cummins #RedHat

    View full-size slide

  37. @holly_cummins #RedHat
    if one is not able to write a simple
    code and depends on generated
    code, then he is not a developer

    View full-size slide

  38. #RedHat
    things people say about abstraction
    higher abstraction
    means stupider
    developers*

    View full-size slide

  39. transistor networks
    framework
    application
    high-level language
    assembler
    machine codes
    libraries
    ai coding assistant

    View full-size slide

  40. transistor networks
    framework
    application
    high-level language
    assembler
    machine codes
    libraries
    ai coding assistant
    developer
    skill?

    View full-size slide

  41. @holly_cummins #RedHat
    gate-


    keeping

    View full-size slide

  42. @holly_cummins #RedHat
    people used to say
    the same thing about
    garbage collection

    View full-size slide

  43. @holly_cummins #RedHat
    “Avoid using any language that uses ‘garbage
    collection’ memory management. It teaches bad
    habits and makes for lazy, sloppy engineers.”


    –anonymous, 2005



    http://ex-mentis.blogspot.com/2006/05/are-paul-graham-and-joel-spolsky-right.html

    View full-size slide

  44. @holly_cummins #RedHat
    “when programmers rely on a GC implementation
    to clean up their mess, they become lazy.”


    –M., 2006
    www.skyos.org/board/viewtopic.php?p=91820&sid=e56df2df37ff899da22c8ace

    View full-size slide

  45. @holly_cummins #RedHat
    “Garbage collection encourages lazy programming
    habits, which I’ve seen in quite a few Java developers.”


    – anonymous, 2006
    https://slashdot.org/story/06/08/07/2126253/xcode-update-gives-objective-c-garbage-collection

    View full-size slide

  46. @holly_cummins #RedHat
    rust

    View full-size slide

  47. @holly_cummins #RedHat

    View full-size slide

  48. @holly_cummins #RedHat
    garbage collection users were more likely
    to complete the task in the time available,
    and those who did so required only about a
    third as much time (4 hours vs. 12 hours)

    View full-size slide

  49. #RedHat
    things people say about abstraction
    higher abstraction
    means slower code*

    View full-size slide

  50. transistor networks
    framework
    application
    high-level language
    assembler
    machine codes
    libraries
    ai coding assistant

    View full-size slide

  51. transistor networks
    framework
    application
    high-level language
    assembler
    machine codes
    libraries
    ai coding assistant
    execution
    speed

    View full-size slide

  52. @holly_cummins #RedHat
    example: quarkus’s (re)discovery of the jvm type pollution bug

    View full-size slide

  53. @holly_cummins #RedHat

    View full-size slide

  54. @holly_cummins #RedHat
    private static int extractSize(Object it) {
    if (it instanceof Collection) {
    return ((Collection>) it).size();
    } else if (it instanceof Map) {
    return ((Map, ?>) it).size();
    } else if (it.getClass().isArray()) {
    return Array.getLength(it);
    } else if (it instanceof Integer) {
    return ((Integer) it);
    }
    return 10;
    }

    View full-size slide

  55. @holly_cummins #RedHat
    private static int extractSize(Object it) {
    if (it instanceof Collection) {
    return ((Collection>) it).size();
    } else if (it instanceof Map) {
    return ((Map, ?>) it).size();
    } else if (it.getClass().isArray()) {
    return Array.getLength(it);
    } else if (it instanceof Integer) {
    return ((Integer) it);
    }
    return 10;
    }
    // Note that we intentionally use "instanceof" to test interfaces as the last resort in order to mitigate the "type pollution"
    // See https://github.com/RedHatPerf/type-pollution-agent for more information
    if (it instanceof AbstractCollection) {
    return ((AbstractCollection>) it).size();
    } else if (it instanceof AbstractMap) {
    return ((AbstractMap, ?>) it).size();
    } else if (it instanceof Collection) {
    return ((Collection>) it).size();
    } else if (it instanceof Map) {
    return ((Map, ?>) it).size();
    }
    return 10;
    }

    View full-size slide

  56. @holly_cummins #RedHat
    normal, not-weird code is most optimisable by the JIT
    do not do this at home!
    JIT makes things fast: java code can be faster than c

    View full-size slide

  57. #RedHat
    things people say about abstraction
    higher abstraction
    means loss of
    control

    View full-size slide

  58. @holly_cummins
    #RedHat

    View full-size slide

  59. @holly_cummins
    #RedHat
    your logging now depends on quarkus

    View full-size slide

  60. @holly_cummins
    #RedHat
    formatting

    View full-size slide

  61. @holly_cummins #RedHat

    View full-size slide

  62. @holly_cummins #RedHat
    [space]
    [space]
    [space]
    [space]

    View full-size slide

  63. @holly_cummins #RedHat
    gah!
    auto-formatters are a
    thing! [space]
    [space]
    [space]
    [space]
    [space]
    [space] [space]
    your time is
    valuable, and typing space-
    space-space is not a good
    use of it
    [space] [space] [space]
    [space

    View full-size slide

  64. @holly_cummins
    #RedHat
    go fmt

    View full-size slide

  65. @holly_cummins
    #RedHat
    “could we have something like
    go fmt, but configurable?”

    View full-size slide

  66. transistor networks
    framework
    application
    high-level language
    assembler
    machine codes
    libraries
    ai coding assistant

    View full-size slide

  67. transistor networks
    framework
    application
    high-level language
    assembler
    machine codes
    libraries
    ai coding assistant
    control

    View full-size slide

  68. #RedHat
    things people say about abstraction
    abstraction sacrifices
    correctness

    View full-size slide

  69. @holly_cummins #RedHat
    https://www.sify.com/ai-analytics/the-hilarious-and-horrifying-hallucinations-of-ai/

    View full-size slide

  70. @holly_cummins #RedHat
    “What is the world record for crossing
    the English channel entirely on foot?”
    https://www.sify.com/ai-analytics/the-hilarious-and-horrifying-hallucinations-of-ai/

    View full-size slide

  71. @holly_cummins #RedHat
    “What is the world record for crossing
    the English channel entirely on foot?”
    “The world record for crossing the
    English Channel entirely on foot is held
    by Christof Wandratsch of Germany, who
    completed the crossing in 14 hours and
    51 minutes on August 14, 2020.”
    https://www.sify.com/ai-analytics/the-hilarious-and-horrifying-hallucinations-of-ai/

    View full-size slide

  72. @holly_cummins #RedHat

    View full-size slide

  73. @holly_cummins #RedHat
    quarkus + chat gpt

    View full-size slide

  74. @holly_cummins #RedHat
    quarkus + chat gpt

    View full-size slide

  75. @holly_cummins #RedHat
    quarkus + chat gpt
    this is wrong in every way


    (there is no quinoa cli, and having one would be a terrible design)

    View full-size slide

  76. @holly_cummins #RedHat
    quarkus + chat gpt
    this is wrong in every way


    (there is no quinoa cli, and having one would be a terrible design)

    View full-size slide

  77. @holly_cummins #RedHat
    quarkus + chat gpt
    this is wrong in every way


    (there is no quinoa cli, and having one would be a terrible design)
    this is not necessary


    (it misses a major quarkus usability feature)

    View full-size slide

  78. @holly_cummins #RedHat

    View full-size slide

  79. transistor networks
    framework
    application
    high-level language
    assembler
    machine codes
    libraries
    ai coding assistant

    View full-size slide

  80. transistor networks
    framework
    application
    high-level language
    assembler
    machine codes
    libraries
    ai coding assistant
    pure expression
    of developer
    intent with no
    side-effects

    View full-size slide

  81. #RedHat
    things people say about abstraction
    abstract === high effort

    View full-size slide

  82. @holly_cummins
    #RedHat
    it took 4 different prompts
    for my chat-gpt screenshot

    View full-size slide

  83. @holly_cummins
    #RedHat
    “I tried being exhaustive with explanations about things like
    the data range, input shapes and reasons for parameters,
    and with enough explanation it will eventually come to the
    right conclusions - but it’s far more effort to exhaustively
    explain what I need than to just write the code”
    https://news.ycombinator.com/item?id=34848353

    View full-size slide

  84. @holly_cummins
    #RedHat
    programming in
    diagrams instead
    of words turns out
    to be a lot of work

    View full-size slide

  85. transistor networks
    framework
    application
    high-level language
    assembler
    machine codes
    libraries
    ai coding assistant

    View full-size slide

  86. transistor networks
    framework
    application
    high-level language
    assembler
    machine codes
    libraries
    ai coding assistant
    speed of
    development?

    View full-size slide

  87. transistor networks
    framework
    application
    high-level language
    assembler
    machine codes
    libraries
    ai coding assistant

    View full-size slide

  88. transistor networks
    framework
    application
    high-level language
    assembler
    machine codes
    libraries
    ai coding assistant
    cognitive load
    ai coding assistant
    machine codes
    assembler
    high-level language
    libraries
    framework

    View full-size slide

  89. #RedHat
    @holly_cummins
    choosing a
    programming language

    View full-size slide

  90. #RedHat
    @holly_cummins
    choosing a
    programming language
    1963

    View full-size slide

  91. #RedHat
    @holly_cummins
    choosing a
    programming language
    1963
    Fortan


    ALGOL


    COBOL


    LISP

    View full-size slide

  92. #RedHat
    @holly_cummins
    choosing a
    programming language
    1963
    Fortan


    ALGOL


    COBOL


    LISP
    2023

    View full-size slide

  93. #RedHat
    @holly_cummins
    choosing a
    programming language
    1963
    Fortan


    ALGOL


    COBOL


    LISP
    2023
    Python

    View full-size slide

  94. #RedHat
    @holly_cummins
    choosing a
    programming language
    1963
    Fortan


    ALGOL


    COBOL


    LISP
    2023
    Python
    C

    View full-size slide

  95. #RedHat
    @holly_cummins
    choosing a
    programming language
    1963
    Fortan


    ALGOL


    COBOL


    LISP
    2023
    Python
    C
    C++

    View full-size slide

  96. #RedHat
    @holly_cummins
    choosing a
    programming language
    1963
    Fortan


    ALGOL


    COBOL


    LISP
    2023
    Python
    C
    C++
    Java

    View full-size slide

  97. #RedHat
    @holly_cummins
    choosing a
    programming language
    1963
    Fortan


    ALGOL


    COBOL


    LISP
    2023
    Python
    C
    C++
    Java
    C#

    View full-size slide

  98. #RedHat
    @holly_cummins
    choosing a
    programming language
    1963
    Fortan


    ALGOL


    COBOL


    LISP
    2023
    Python
    C
    C++
    Java
    C#
    JavaScript

    View full-size slide

  99. #RedHat
    @holly_cummins
    choosing a
    programming language
    1963
    Fortan


    ALGOL


    COBOL


    LISP
    2023
    Python
    C
    C++
    Java
    C#
    JavaScript
    Visual Basic

    View full-size slide

  100. #RedHat
    @holly_cummins
    choosing a
    programming language
    1963
    Fortan


    ALGOL


    COBOL


    LISP
    2023
    Python
    C
    C++
    Java
    C#
    JavaScript
    Visual Basic
    PHP

    View full-size slide

  101. #RedHat
    @holly_cummins
    choosing a
    programming language
    1963
    Fortan


    ALGOL


    COBOL


    LISP
    2023
    Python
    C
    C++
    Java
    C#
    JavaScript
    Visual Basic
    PHP
    SQL

    View full-size slide

  102. #RedHat
    @holly_cummins
    choosing a
    programming language
    1963
    Fortan


    ALGOL


    COBOL


    LISP
    2023
    Python
    C
    C++
    Java
    C#
    JavaScript
    Visual Basic
    PHP
    SQL
    Assembly

    View full-size slide

  103. #RedHat
    @holly_cummins
    choosing a
    programming language
    1963
    Fortan


    ALGOL


    COBOL


    LISP
    2023
    Python
    C
    C++
    Java
    C#
    JavaScript
    Visual Basic
    PHP
    SQL
    Assembly
    Go

    View full-size slide

  104. #RedHat
    @holly_cummins
    choosing a
    programming language
    1963
    Fortan


    ALGOL


    COBOL


    LISP
    2023
    Python
    C
    C++
    Java
    C#
    JavaScript
    Visual Basic
    PHP
    SQL
    Assembly
    Go
    Scratch

    View full-size slide

  105. #RedHat
    @holly_cummins
    choosing a
    programming language
    1963
    Fortan


    ALGOL


    COBOL


    LISP
    2023
    Python
    C
    C++
    Java
    C#
    JavaScript
    Visual Basic
    PHP
    SQL
    Assembly
    Go
    Scratch
    Pascal

    View full-size slide

  106. #RedHat
    @holly_cummins
    choosing a
    programming language
    1963
    Fortan


    ALGOL


    COBOL


    LISP
    2023
    Python
    C
    C++
    Java
    C#
    JavaScript
    Visual Basic
    PHP
    SQL
    Assembly
    Go
    Scratch
    Pascal
    MATLAB

    View full-size slide

  107. #RedHat
    @holly_cummins
    choosing a
    programming language
    1963
    Fortan


    ALGOL


    COBOL


    LISP
    2023
    Python
    C
    C++
    Java
    C#
    JavaScript
    Visual Basic
    PHP
    SQL
    Assembly
    Go
    Scratch
    Pascal
    MATLAB
    Swift

    View full-size slide

  108. #RedHat
    @holly_cummins
    choosing a
    programming language
    1963
    Fortan


    ALGOL


    COBOL


    LISP
    2023
    Python
    C
    C++
    Java
    C#
    JavaScript
    Visual Basic
    PHP
    SQL
    Assembly
    Go
    Scratch
    Pascal
    MATLAB
    Swift
    Fortran

    View full-size slide

  109. #RedHat
    @holly_cummins
    choosing a
    programming language
    1963
    Fortan


    ALGOL


    COBOL


    LISP
    2023
    Python
    C
    C++
    Java
    C#
    JavaScript
    Visual Basic
    PHP
    SQL
    Assembly
    Go
    Scratch
    Pascal
    MATLAB
    Swift
    Fortran
    R

    View full-size slide

  110. #RedHat
    @holly_cummins
    choosing a
    programming language
    1963
    Fortan


    ALGOL


    COBOL


    LISP
    2023
    Python
    C
    C++
    Java
    C#
    JavaScript
    Visual Basic
    PHP
    SQL
    Assembly
    Go
    Scratch
    Pascal
    MATLAB
    Swift
    Fortran
    R
    Kotlin

    View full-size slide

  111. #RedHat
    @holly_cummins
    choosing a
    programming language
    1963
    Fortan


    ALGOL


    COBOL


    LISP
    2023
    Python
    C
    C++
    Java
    C#
    JavaScript
    Visual Basic
    PHP
    SQL
    Assembly
    Go
    Scratch
    Pascal
    MATLAB
    Swift
    Fortran
    R
    Kotlin
    Ruby

    View full-size slide

  112. #RedHat
    @holly_cummins
    choosing a
    programming language
    1963
    Fortan


    ALGOL


    COBOL


    LISP
    2023
    Python
    C
    C++
    Java
    C#
    JavaScript
    Visual Basic
    PHP
    SQL
    Assembly
    Go
    Scratch
    Pascal
    MATLAB
    Swift
    Fortran
    R
    Kotlin
    Ruby
    Rust

    View full-size slide

  113. #RedHat
    @holly_cummins
    choosing a
    programming language
    1963
    Fortan


    ALGOL


    COBOL


    LISP
    2023
    Python
    C
    C++
    Java
    C#
    JavaScript
    Visual Basic
    PHP
    SQL
    Assembly
    Go
    Scratch
    Pascal
    MATLAB
    Swift
    Fortran
    R
    Kotlin
    Ruby
    Rust

    View full-size slide

  114. #RedHat
    @holly_cummins
    and if you’re using javascript …

    View full-size slide

  115. #RedHat
    @holly_cummins
    and if you’re using javascript …
    1,300,000
    libraries in npm registry

    View full-size slide

  116. #RedHat
    @holly_cummins
    and if you’re using javascript …
    1,300,000
    libraries in npm registry
    2,0

    View full-size slide

  117. #RedHat
    @holly_cummins
    now you need a framework

    View full-size slide

  118. #RedHat
    @holly_cummins
    now you need to be cloud native

    View full-size slide

  119. @holly_cummins
    #RedHat

    View full-size slide

  120. #RedHat
    @holly_cummins
    shift left

    View full-size slide

  121. transistor networks
    framework
    application
    high-level language
    assembler
    machine codes
    libraries
    ai coding assistant
    shift left

    View full-size slide

  122. transistor networks
    framework
    application
    high-level language
    assembler
    machine codes
    libraries
    ai coding assistant
    quality
    shift left

    View full-size slide

  123. transistor networks
    framework
    application
    high-level language
    assembler
    machine codes
    libraries
    ai coding assistant
    security quality
    shift left

    View full-size slide

  124. transistor networks
    framework
    application
    high-level language
    assembler
    machine codes
    libraries
    ai coding assistant
    security
    observability quality
    shift left

    View full-size slide

  125. transistor networks
    framework
    application
    high-level language
    assembler
    machine codes
    libraries
    ai coding assistant
    security
    observability
    operations quality
    shift left

    View full-size slide

  126. transistor networks
    framework
    application
    high-level language
    assembler
    machine codes
    libraries
    ai coding assistant
    security
    observability
    operations usab
    quality
    shift left

    View full-size slide

  127. transistor networks
    framework
    application
    high-level language
    assembler
    machine codes
    libraries
    ai coding assistant
    security
    observability
    operations usab
    quality
    ud bills
    shift left

    View full-size slide

  128. #RedHat
    @holly_cummins
    things you
    need to do
    well in 2023:


    View full-size slide

  129. #RedHat
    @holly_cummins
    apps
    things you
    need to do
    well in 2023:


    View full-size slide

  130. #RedHat
    @holly_cummins
    apps
    ops
    things you
    need to do
    well in 2023:


    View full-size slide

  131. #RedHat
    @holly_cummins
    apps
    ops
    devops
    things you
    need to do
    well in 2023:


    View full-size slide

  132. #RedHat
    @holly_cummins
    apps
    ops
    devops
    devsecops
    things you
    need to do
    well in 2023:


    View full-size slide

  133. #RedHat
    @holly_cummins
    apps
    ops
    devops
    devsecops
    devbizops
    things you
    need to do
    well in 2023:


    View full-size slide

  134. #RedHat
    @holly_cummins
    apps
    ops
    devops
    devsecops
    devbizops
    devsecbizops
    things you
    need to do
    well in 2023:


    View full-size slide

  135. #RedHat
    @holly_cummins
    apps
    ops
    devops
    devsecops
    devbizops
    devsecbizops
    finops
    things you
    need to do
    well in 2023:


    View full-size slide

  136. #RedHat
    @holly_cummins
    shift down

    View full-size slide

  137. #RedHat
    @holly_cummins
    shift down
    let platforms do the work

    View full-size slide

  138. transistor networks
    framework
    application
    high-level language
    assembler
    machine codes
    libraries
    ai coding assistant
    security
    observability
    operations usab
    quality
    ud bills
    shift down

    View full-size slide

  139. transistor networks
    framework
    application
    high-level language
    assembler
    machine codes
    libraries
    ai coding assistant
    security
    observability
    operations
    usability
    quality
    cloud bills
    shift down

    View full-size slide

  140. transistor networks
    framework
    application
    high-level language
    assembler
    machine codes
    libraries
    ai coding assistant
    security
    observability
    operations
    usability
    quality
    cloud bills
    shift down
    value

    View full-size slide

  141. #RedHat
    @holly_cummins
    what about open source?

    View full-size slide

  142. @holly_cummins
    #RedHat
    open source reduces developer tedium

    View full-size slide

  143. @holly_cummins
    #RedHat
    open source reduces developer tedium
    there’s a library for that

    View full-size slide

  144. @holly_cummins
    #RedHat
    open source does not help with cognitive load

    View full-size slide

  145. @holly_cummins
    #RedHat
    open source does not help with cognitive load
    there’s a lot of libraries for … well, anything

    View full-size slide

  146. @holly_cummins
    #RedHat

    View full-size slide

  147. @holly_cummins
    #RedHat
    all open-source

    View full-size slide

  148. @holly_cummins
    #RedHat
    open source is everywhere
    (including our ‘original’ code)

    View full-size slide

  149. #RedHat
    @holly_cummins
    https://stackoverflow.blog/2021/04/01/the-key-copy-paste/
    https://stackoverflow.blog/2021/12/30/how-often-do-people-actually-copy-and-paste-from-stack-overflow-now-we-know/

    View full-size slide

  150. #RedHat
    @holly_cummins
    https://stackoverflow.blog/2021/04/01/the-key-copy-paste/
    ¼ of visitors copy
    https://stackoverflow.blog/2021/12/30/how-often-do-people-actually-copy-and-paste-from-stack-overflow-now-we-know/

    View full-size slide

  151. #RedHat
    @holly_cummins
    https://stackoverflow.blog/2021/04/01/the-key-copy-paste/
    ¼ of visitors copy
    2 week period:
    40,623,987 copies
    https://stackoverflow.blog/2021/12/30/how-often-do-people-actually-copy-and-paste-from-stack-overflow-now-we-know/

    View full-size slide

  152. #RedHat
    @holly_cummins

    View full-size slide

  153. #RedHat
    @holly_cummins
    A student copied my code in
    GitHub and submitted it as his
    assignment. He emailed me to
    ask me to temporarily close the
    repo so his TA couldn’t search my
    code.

    View full-size slide

  154. #RedHat
    @holly_cummins
    how are large language models trained?
    copying open source code,
    so that you can paste it

    View full-size slide

  155. #RedHat
    @holly_cummins
    big questions

    View full-size slide

  156. #RedHat
    @holly_cummins
    will ai take our jobs?

    View full-size slide

  157. #RedHat
    @holly_cummins
    will ai take our jobs?
    NO.

    View full-size slide

  158. #RedHat
    @holly_cummins
    professional developers in the world
    https://www.statista.com/statistics/627312/worldwide-developer-population/
    https://slashdata-website-cms.s3.amazonaws.com/sample_reports/EiWEyM5bfZe1Kug_.pdf

    View full-size slide

  159. #RedHat
    @holly_cummins
    professional developers in the world
    https://www.statista.com/statistics/627312/worldwide-developer-population/
    https://slashdata-website-cms.s3.amazonaws.com/sample_reports/EiWEyM5bfZe1Kug_.pdf
    machine codes
    vacuum tube networks

    View full-size slide

  160. #RedHat
    @holly_cummins
    professional developers in the world
    https://www.statista.com/statistics/627312/worldwide-developer-population/
    https://slashdata-website-cms.s3.amazonaws.com/sample_reports/EiWEyM5bfZe1Kug_.pdf
    assembler
    machine codes
    vacuum tube networks

    View full-size slide

  161. #RedHat
    @holly_cummins
    professional developers in the world
    https://www.statista.com/statistics/627312/worldwide-developer-population/
    https://slashdata-website-cms.s3.amazonaws.com/sample_reports/EiWEyM5bfZe1Kug_.pdf
    transistor networks
    assembler
    machine codes

    View full-size slide

  162. #RedHat
    @holly_cummins
    professional developers in the world
    https://www.statista.com/statistics/627312/worldwide-developer-population/
    https://slashdata-website-cms.s3.amazonaws.com/sample_reports/EiWEyM5bfZe1Kug_.pdf
    transistor networks
    high-level languages
    assembler
    machine codes

    View full-size slide

  163. #RedHat
    @holly_cummins
    professional developers in the world
    https://www.statista.com/statistics/627312/worldwide-developer-population/
    https://slashdata-website-cms.s3.amazonaws.com/sample_reports/EiWEyM5bfZe1Kug_.pdf
    transistor networks
    high-level languages
    assembler
    machine codes
    libraries

    View full-size slide

  164. #RedHat
    @holly_cummins
    professional developers in the world
    https://www.statista.com/statistics/627312/worldwide-developer-population/
    https://slashdata-website-cms.s3.amazonaws.com/sample_reports/EiWEyM5bfZe1Kug_.pdf
    transistor networks
    frameworks
    high-level languages
    assembler
    machine codes
    libraries

    View full-size slide

  165. #RedHat
    @holly_cummins
    professional developers in the world
    https://www.statista.com/statistics/627312/worldwide-developer-population/
    https://slashdata-website-cms.s3.amazonaws.com/sample_reports/EiWEyM5bfZe1Kug_.pdf
    transistor networks
    frameworks
    high-level languages
    assembler
    machine codes
    libraries
    ai coding assistants

    View full-size slide

  166. #RedHat
    @holly_cummins
    software is not going away

    View full-size slide

  167. human alarm clock
    “knocker-up”
    1800s - 1940s

    View full-size slide

  168. human alarm clock
    1800s - 1940s

    View full-size slide

  169. #RedHat
    @holly_cummins
    the more software we
    have, the more we want

    View full-size slide

  170. #RedHat
    @holly_cummins

    View full-size slide

  171. #RedHat
    @holly_cummins
    software to do stuff

    View full-size slide

  172. #RedHat
    @holly_cummins
    software to do stuff
    software to do more stuff

    View full-size slide

  173. #RedHat
    @holly_cummins
    software to do stuff
    software to do more stuff
    software to bypass advertisements in the software

    View full-size slide

  174. #RedHat
    @holly_cummins
    software to do stuff
    software to do more stuff
    software to bypass advertisements in the software
    software to bypass the bypass software so ads still show

    View full-size slide

  175. #RedHat
    @holly_cummins
    software to do stuff
    software to do more stuff
    software to bypass advertisements in the software
    software to bypass the bypass software so ads still show
    software to monitor the software

    View full-size slide

  176. #RedHat
    @holly_cummins
    software to do stuff
    software to do more stuff
    software to bypass advertisements in the software
    software to bypass the bypass software so ads still show
    software to monitor the software
    software to debug the software

    View full-size slide

  177. #RedHat
    @holly_cummins
    software to do stuff
    software to do more stuff
    software to bypass advertisements in the software
    software to bypass the bypass software so ads still show
    software to monitor the software
    software to debug the software
    software to manage the software

    View full-size slide

  178. #RedHat
    @holly_cummins
    software to do stuff
    software to do more stuff
    software to bypass advertisements in the software
    software to bypass the bypass software so ads still show
    software to monitor the software
    software to debug the software
    software to manage the software
    software to write the software

    View full-size slide

  179. #RedHat
    @holly_cummins
    software to do stuff
    software to do more stuff
    software to bypass advertisements in the software
    software to bypass the bypass software so ads still show
    software to monitor the software
    software to debug the software
    software to manage the software
    software to write the software
    software to manage the software that writes the software

    View full-size slide

  180. #RedHat
    @holly_cummins
    software to do stuff
    software to do more stuff
    software to bypass advertisements in the software
    software to bypass the bypass software so ads still show
    software to monitor the software
    software to debug the software
    software to manage the software
    software to write the software
    software to manage the software that writes the software
    software to try and avoid skynet

    View full-size slide

  181. #RedHat
    @holly_cummins
    software to do stuff
    software to do more stuff
    software to bypass advertisements in the software
    software to bypass the bypass software so ads still show
    software to monitor the software
    software to debug the software
    software to manage the software
    software to write the software
    software to manage the software that writes the software
    software to try and avoid skynet
    software to tell people about software

    View full-size slide

  182. #RedHat
    @holly_cummins
    software to do stuff
    software to do more stuff
    software to bypass advertisements in the software
    software to bypass the bypass software so ads still show
    software to monitor the software
    software to debug the software
    software to manage the software
    software to write the software
    software to manage the software that writes the software
    software to try and avoid skynet
    software to tell people about software
    software to work out the meaning of life

    View full-size slide

  183. #RedHat
    @holly_cummins
    software to do stuff
    software to do more stuff
    software to bypass advertisements in the software
    software to bypass the bypass software so ads still show
    software to monitor the software
    software to debug the software
    software to manage the software
    software to write the software
    software to manage the software that writes the software
    software to try and avoid skynet
    software to tell people about software
    software to work out the meaning of life
    software to gamify software

    View full-size slide

  184. #RedHat
    @holly_cummins
    software to do stuff
    software to do more stuff
    software to bypass advertisements in the software
    software to bypass the bypass software so ads still show
    software to monitor the software
    software to debug the software
    software to manage the software
    software to write the software
    software to manage the software that writes the software
    software to try and avoid skynet
    software to tell people about software
    software to work out the meaning of life
    software to gamify software

    View full-size slide

  185. #RedHat
    @holly_cummins
    will the productivity
    expectation be higher?

    View full-size slide

  186. #RedHat
    @holly_cummins
    will the productivity
    expectation be higher?
    probably

    View full-size slide

  187. #RedHat
    @holly_cummins
    will we spend more time
    debugging generated code?

    View full-size slide

  188. #RedHat
    @holly_cummins
    will we spend more time
    debugging generated code?
    probably :)

    View full-size slide

  189. #RedHat
    @holly_cummins
    copilot users accepted
    30% of its suggestions
    copilot produced
    40% of the codebase

    View full-size slide

  190. #RedHat
    @holly_cummins
    copilot users accepted
    30% of its suggestions
    copilot produced
    40% of the codebase
    uh oh, what does that say about
    the information density?

    View full-size slide

  191. #RedHat
    @holly_cummins
    “lines of code” is not a good
    productivity metric for people.


    or machines.

    View full-size slide

  192. #RedHat
    @holly_cummins
    if code is so boring a machine can
    predict it, maybe it shouldn’t be there?

    View full-size slide

  193. #RedHat
    @holly_cummins
    do we really want


    software-generated boilerplate?

    View full-size slide

  194. #RedHat
    @holly_cummins
    is it inevitable that
    things get easier?

    View full-size slide

  195. #RedHat
    @holly_cummins
    is it inevitable that
    things get easier?
    no

    View full-size slide

  196. #RedHat
    @holly_cummins

    View full-size slide

  197. #RedHat
    @holly_cummins
    java
    1995

    View full-size slide

  198. #RedHat
    @holly_cummins
    java enterprise java beans
    1995 1999

    View full-size slide

  199. #RedHat
    @holly_cummins
    yaml

    View full-size slide

  200. #RedHat
    @holly_cummins
    design to make things easy

    View full-size slide

  201. #RedHat
    @holly_cummins
    design to make things easy
    minimise opportunity for error

    View full-size slide

  202. #RedHat
    @holly_cummins
    design to make things easy
    minimise opportunity for error
    minimise boilerplate

    View full-size slide

  203. #RedHat
    @holly_cummins
    design to make things easy
    minimise opportunity for error
    minimise boilerplate
    minimuse duplication of information

    View full-size slide

  204. #RedHat
    @holly_cummins
    design to make things easy
    minimise opportunity for error
    minimise boilerplate
    minimuse duplication of information
    maximise expressiveness

    View full-size slide

  205. #RedHat
    @holly_cummins
    design to make things easy
    minimise opportunity for error
    minimise boilerplate
    minimuse duplication of information
    maximise expressiveness
    talk to people (doh!)

    View full-size slide

  206. #RedHat
    @holly_cummins
    if ai can save dev time using your thing,
    maybe you designed your api wrong?

    View full-size slide

  207. #RedHat
    @holly_cummins
    challenge assumptions

    View full-size slide

  208. #RedHat
    @holly_cummins
    “what if … people


    didn’t have to do this?”

    View full-size slide

  209. #RedHat
    @holly_cummins
    “what if … you didn’t need to
    configure a database?”

    View full-size slide

  210. #RedHat
    @holly_cummins
    example:


    letting computers to the hard work

    View full-size slide

  211. #RedHat
    @holly_cummins



    io.quarkus


    quarkus-jdbc-postgresql





    pom.xml

    View full-size slide

  212. #RedHat
    @holly_cummins
    we see you will be
    using a database



    io.quarkus


    quarkus-jdbc-postgresql





    pom.xml

    View full-size slide

  213. #RedHat
    @holly_cummins
    we see you will be
    using a database
    we see you do not
    have one



    io.quarkus


    quarkus-jdbc-postgresql





    pom.xml
    # This config deliberately left empty
    application.properties

    View full-size slide

  214. #RedHat
    @holly_cummins
    we see you will be
    using a database
    we see you do not
    have one



    io.quarkus


    quarkus-jdbc-postgresql





    pom.xml
    # This config deliberately left empty
    application.properties
    we’ll just sort one
    out for you

    View full-size slide

  215. #RedHat
    @holly_cummins
    caution: if people expect something to
    be hard, making it easy can confuse them

    View full-size slide

  216. @holly_cummins #RedHat
    tl;dpa


    (too long; didn’t pay attention)
    shift down, to make shifting left easier


    coding assistants are great at … typing


    challenge assumptions + eliminate
    boilerplate


    it is awesome being a developer

    View full-size slide

  217. slides
    thank you


    Holly Cummins


    Red Hat
    https://hollycummins.com/jobs-harder-easier-fosscomm/

    View full-size slide