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

The Evolution of Engineering Excellence by Patrick Kua

The Evolution of Engineering Excellence by Patrick Kua

Presented at https://www.meetup.com/Agile-Singapore/events/273699770

How we build software today looks vastly different from 20 years ago. Excellence in software engineering matters more than ever. Did you ever stop to wonder why? By looking at the history of engineering practices, we can learn how engineering excellence evolved and what that implies about the future. As software engineers, you will learn why it’s important to continue to hone your craft and why it’s important for tech companies to continually invest in software excellence today.

Patrick Kua is a seasoned technology leader with almost 20 years of experience. His personal passion is accelerating the growth and success of tech organisations and technical leaders. He has had many years of hands-on experience, leading, managing and improving complex organisations and software systems as the CTO and Chief Scientist of N26 (Berlin, Germany) and as a Technical Principal Consultant at ThoughtWorks. He is a frequent keynote and conference speaker, author of three books including The Retrospective Handbook, Talking with Tech Leads and Building Evolutionary Architectures and runs the free popular newsletter for leaders in tech, “Level Up” (http://levelup.patkua.com) and the Tech Lead Academy, offering online training for technical leaders. You can find him online on twitter as @patkua or running his very popular “Shortcut to Tech Leadership” workshop.

Agile Singapore

October 15, 2020
Tweet

More Decks by Agile Singapore

Other Decks in Technology

Transcript

  1. The Evolution of
    Engineering Excellence
    Agile Singapore (Oct 2020)
    @patkua

    View Slide

  2. @patkua
    #Architect #Developer #Coach #Leader #CTO
    #Life-long learner #Author #Speaker
    Patrick Kua
    ~20 years experience
    Agile Software Development
    Organisational Change
    Systems Thinking
    Technical Leadership Development
    @patkua

    View Slide

  3. @patkua
    thekua.io/twtl thekua.io/retrobook
    #Architect #Developer #Coach #Leader #CTO
    #Life-long learner #Author #Speaker
    thekua.io/evolarch
    @patkua

    View Slide

  4. @patkua
    Level
    Up
    A curated newsletter for
    leaders in tech
    http://levelup.patkua.com
    @patkua

    View Slide

  5. @patkua
    @patkua
    Shortcut to Tech Leadership
    Accelerate Your Journey From Maker to Multiplier
    techlead.academy
    3 Nov, 2020 2:30pm SGT
    https://www.tickettailor.com/events/agilesingapore/434309

    View Slide

  6. @patkua
    Questions
    http://menti.com use code 8160282; or
    https://www.menti.com/qacnm9k2b2

    View Slide

  7. @patkua
    @patkua

    View Slide

  8. @patkua
    Our Journey
    @patkua

    View Slide

  9. @patkua
    @patkua
    Our Ecosystem
    Systems
    Tools Practices
    Organisation
    Products
    Competitors

    View Slide

  10. @patkua
    1950s

    View Slide

  11. @patkua Source: https://upload.wikimedia.org/wikipedia/commons/b/bd/UNIVAC-I-BRL61-0977.jpg
    @patkua

    View Slide

  12. @patkua
    0010011010011001
    1101010011100101
    1100010101001010
    0100101101010010
    1101011000101100

    View Slide

  13. @patkua
    0010011010011001
    1101010011100101
    1100010101001010
    0100101101010010
    1101011000101100
    println(“Hello World”)
    // PS. Not actual A-0 code

    View Slide

  14. @patkua
    println(“Hello World”)

    View Slide

  15. @patkua
    IDENTIFICATION DIVISION.
    PROGRAM-ID. HELLO-WORLD.
    * simple hello world program
    PROCEDURE DIVISION.
    DISPLAY 'Hello world!'.
    STOP RUN.

    View Slide

  16. @patkua

    View Slide

  17. @patkua
    Grace Hopper

    View Slide

  18. @patkua
    Context
    Heavy
    Calculations
    Computer
    Specific
    This is
    “Best Practice”
    @patkua

    View Slide

  19. @patkua
    “Can we improve this?”

    View Slide

  20. @patkua
    Lessons Learned
    Compute more
    accessible Too many steps
    Prototype over
    words
    @patkua

    View Slide

  21. @patkua
    1990s

    View Slide

  22. @patkua
    Intel
    Inside
    Software
    on CDs
    56K
    Modems
    Reused under the Creative Commons Licence
    https://www.flickr.com/photos/[email protected]/122099189
    AOL Online
    1.0/1.2

    View Slide

  23. @patkua

    View Slide

  24. @patkua
    SFTP
    COM
    CSV
    FLATFILE

    View Slide

  25. @patkua
    SFTP
    COM
    EJB

    View Slide

  26. @patkua
    SERVER
    APPLICATION SERVER
    J2EE APPLICATION
    J2EE APPLICATION
    J2EE

    View Slide

  27. @patkua
    J2EE
    SERVER
    APPLICATION SERVER
    J2EE APPLICATION
    J2EE APPLICATION
    SERVER
    APPLICATION SERVER
    J2EE APPLICATION
    J2EE APPLICATION

    View Slide

  28. @patkua
    Idea or Task
    Dev-Test Cycle
    Write
    code Build
    package
    Start
    application server
    Deploy
    package
    Test app

    View Slide

  29. @patkua
    @patkua

    View Slide

  30. @patkua
    Key Issues
    Proprietary
    App Servers
    Excessively
    manual
    XML
    “addicted”
    @patkua

    View Slide

  31. @patkua
    “Enterprise”
    software
    Early days for
    open source
    This is
    “Best Practice”
    Context
    @patkua

    View Slide

  32. @patkua
    “Can we improve this?”

    View Slide

  33. @patkua

    View Slide

  34. @patkua
    Lessons Learned
    Faster
    feedback
    Desire for more
    lightweight tools
    Openness
    @patkua

    View Slide

  35. @patkua
    Early 2000s

    View Slide

  36. @patkua
    Waterfall
    “Requirement Specifications”
    “Build and Release Team”
    Release “sign off”
    “Regression” phase
    Release time 3+ months
    @patkua

    View Slide

  37. @patkua
    Waterfall
    “I believe in this concept, but the
    implementation described above
    is risky and invites failure ”
    - (1970) Winston Royce
    @patkua

    View Slide

  38. @patkua
    Agile = “Hack”
    Software is
    “Engineering”
    This is
    “Best Practice”
    Context
    @patkua

    View Slide

  39. @patkua
    “Can we improve this?”

    View Slide

  40. @patkua
    “What if we did good practices
    more often?”
    C

    View Slide

  41. @patkua
    C
    Good Practice Good Practice x 10
    Manual testing Automated testing
    Integration phase Continuous Integration
    Planning Adaptive Planning
    Release to customers More frequent releases
    Code reviews Pair programming

    View Slide

  42. @patkua
    @patkua

    View Slide

  43. @patkua

    View Slide

  44. @patkua
    +
    +

    View Slide

  45. @patkua
    Mid 2000s

    View Slide

  46. @patkua
    2004 2009
    2MB
    5MB

    View Slide

  47. @patkua
    2001
    2004
    2006

    View Slide

  48. @patkua
    On Premise Cloud Computing

    View Slide

  49. @patkua
    ???
    Integration
    Phase
    Continuous
    Integration

    View Slide

  50. @patkua
    “Can we improve this?”

    View Slide

  51. @patkua
    “The Last Mile”
    Problem
    @patkua

    View Slide

  52. @patkua
    @patkua
    Our Journey

    View Slide

  53. @patkua
    What can
    we learn?

    View Slide

  54. @patkua
    @patkua
    Our Ecosystem
    Systems
    Tools Practices
    Organisation
    Products
    Competitors

    View Slide

  55. @patkua
    Context Matters

    View Slide

  56. @patkua
    Context Matters
    Context Changes

    View Slide

  57. @patkua
    Constant
    Improvements

    View Slide

  58. @patkua Source: https://xkcd.com/2347/
    Constant
    Improvements

    View Slide

  59. @patkua
    Integration
    Phase
    Continuous
    Integration
    Continuous
    Delivery
    Build Team
    Regression Testing
    Automated Testing
    Trunk Based Development
    Automated Deployment Process
    Incremental Delivery
    Best Practice?
    Constant
    Improvements

    View Slide

  60. @patkua
    Constant
    Experimentation

    View Slide

  61. @patkua
    Integration
    Phase
    Continuous
    Integration
    Continuous
    Delivery
    ???
    ???
    Adaptive over
    Predictive
    Constant
    Experimentation

    View Slide

  62. @patkua
    Constant
    Experimentation
    Not all ideas are great
    Model Driven
    Development
    SOAP
    Rational Unified
    Process

    View Slide

  63. @patkua
    Evolutionary
    Engineering

    View Slide

  64. @patkua
    Evolutionary
    Engineering
    Source Control

    View Slide

  65. @patkua
    Evolutionary
    Engineering
    RCS
    VSS TFSVC
    ClearCase
    darcs
    Bazaar
    SCCS
    Perforce
    AccuRev
    Source Control

    View Slide

  66. @patkua
    @patkua

    View Slide

  67. @patkua
    4 Crafting Guidelines
    Stay context aware
    Learn principles, then apply with tools
    Use your craft where it matters
    Strive for incremental continuous improvement
    @patkua

    View Slide

  68. @patkua
    Conclusion
    @patkua

    View Slide

  69. @patkua
    Software
    Excellence
    Context
    Best practices
    expire
    Improvements
    Best practices
    emerge
    Best practice becomes
    standard practice
    Constant
    Evolution
    @patkua

    View Slide

  70. @patkua
    Software
    Excellence
    Context
    Best practices
    expire
    Improvements
    Best practices
    emerge
    Best practice becomes
    standard practice
    Software
    Craftsmanship
    Mindset
    @patkua

    View Slide

  71. @patkua
    Thank You
    The Evolution of
    Engineering Excellence

    View Slide

  72. @patkua
    Questions
    http://menti.com use code 8160282; or
    https://www.menti.com/qacnm9k2b2

    View Slide