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

The QUEST for Better Software

The QUEST for Better Software

There are so many best practices for building software. Do we need to care about all of them equally? Can we agree that Continuous Delivery and DevOps are probably good things? Can we agree that Agile has been mainly a positive influence on the software development community and industry? Do we need TDD and DDD and SOLID and DRY all at the same time? In this talk, Richard will lift the lid on industry best practices and provide a simple formula for keeping them in order by exploring the QUEST way of doing things. This will allow you to get back to a simpler life where you can concentrate on the value of the software itself rather than too much on the process of making it.

Richard Bown

July 28, 2023
Tweet

More Decks by Richard Bown

Other Decks in Programming

Transcript

  1. Richard BOWN
    THE QUEST for Better Software
    We Are Developers World Congress 2023
    @bown_rw

    View full-size slide

  2. Five Daily Habits of Successful
    Software Teams

    View full-size slide

  3. “It’s the prospect of failure that lights the
    fi
    re. The cold
    unamused stare of the audience is a great motivator”


    Dara O’Briain

    View full-size slide

  4. 1. Advice: There’s a lot of it
    2. Good software requires daily
    attention
    3. Building great software is a
    deeply human activity

    View full-size slide

  5. Independent Software Consultant
    • Teams and Individuals

    • Software Leaders (CTOs, CEOs, VPs,
    Directors, Managers)

    Likes:

    • Making sense of complicated advice

    • Socio-technical systems, Conway’s Law

    • DevOps, CI/CD, Automation, TDD, DDD

    • Emergent Architectures

    Dislikes:

    • Technical Debt

    • Poorly tested code

    • Writing more code than necessary
    RICHARD BOWN

    View full-size slide

  6. “If the architecture of the system and the architecture of the
    organization are at odds, the architecture of the organization wins.”


    Ruth Malan (@visarch)
    “Any organization that designs a system (de
    fi
    ned broadly) will produce a design whose
    structure is a copy of the organization's communication structure.”


    Mel Conway, 1967 (@conways_law)

    View full-size slide

  7. Barbara Liskov - Photo: Kenneth C. Zirkel
    SOLID Principles


    - Single Responsibility Principle


    - Open / Closed Principle


    - Liskov Substitution Principle


    - Interface Segregation Principle


    - Dependency Inversion Principle


    Robert C. Martin - Photo: Angelacleancoder

    View full-size slide

  8. Laziness
    Impatience
    Hubris
    LARRY WALL’S THREE GREAT VIRTUES

    View full-size slide

  9. “software design is an exercise in human relationships”
    KENT BECK

    View full-size slide

  10. Psychological Safety
    “To help geeks feel safe in the world.”

    View full-size slide

  11. The Agile Manifesto
    1.Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
    2.Welcome changing requirements, even late in development. Agile processes harness change for the
    customer's competitive advantage.
    3.Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the
    shorter timescale.
    4.Business people and developers must work together daily throughout the project.
    5.Build projects around motivated individuals. Give them the environment and support they need, and trust
    them to get the job done.
    6.The most ef
    fi
    cient and effective method of conveying information to and within a development team is
    face-to-face conversation.
    7.Working software is the primary measure of progress.
    8.Agile processes promote sustainable development. The sponsors, developers, and users should be able
    to maintain a constant pace inde
    fi
    nitely.
    9.Continuous attention to technical excellence and good design enhances agility.
    10.Simplicity--the art of maximizing the amount of work not done--is essential.
    11.The best architectures, requirements, and designs emerge from self-organizing teams.
    12.At regular intervals, the team re
    fl
    ects on how to become more effective, then tunes and adjusts its
    behavior accordingly.

    View full-size slide

  12. The Agile Manifesto
    1.Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
    2.Welcome changing requirements, even late in development. Agile processes harness change for the
    customer's competitive advantage.
    3.Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to
    the shorter timescale.
    4.Business people and developers must work together daily throughout the project.
    5.Build projects around motivated individuals. Give them the environment and support they need, and
    trust them to get the job done.
    6.The most ef
    fi
    cient and effective method of conveying information to and within a development team is
    face-to-face conversation.
    7.Working software is the primary measure of progress.
    8.Agile processes promote sustainable development. The sponsors, developers, and users should be able
    to maintain a constant pace inde
    fi
    nitely.
    9.Continuous attention to technical excellence and good design enhances agility.
    10.Simplicity--the art of maximizing the amount of work not done--is essential.
    11.The best architectures, requirements, and designs emerge from self-organizing teams.
    12.At regular intervals, the team re
    fl
    ects on how to become more effective, then tunes and adjusts its
    behavior accordingly.

    View full-size slide

  13. Agile Manifesto
    Customer

    Changing Requirements

    Deliver

    Work Together

    Motivated Individuals

    Environment & Support

    Team

    Conversation

    Working Software

    Sustainable Development

    Technical Excellence / Good Design

    Simplicity

    Self-Organizing Teams

    The Team Reflects

    View full-size slide

  14. 5IF*EFBMT
    •-PDBMJUZBOE4JNQMJDJUZ
    •'PDVT 'MPX BOE+PZ
    •*NQSPWFNFOUPG%BJMZ8PSL
    •1TZDIPMPHJDBM4BGFUZ
    •$VTUPNFS'PDVT

    View full-size slide

  15. Scope: Team works in a context
    over which they have complete
    control

    Flow: Work in Small Batches
    (Lean, WIP Limits)

    Make Team Context Better
    Even Day.

    Freedom to Experiment without
    Fear

    Provide Solutions to Customers
    with Minimal Overhead
    Agile Manifesto Unicorn Project
    Customer

    Changing Requirements

    Deliver

    Work Together

    Motivated Individuals

    Environment & Support

    Team

    Conversation

    Working Software

    Sustainable Development

    Technical Excellence / Good Design

    Simplicity

    Self-Organizing Teams

    The Team Reflects

    View full-size slide

  16. No prototypes, polish as you go.
    Make it always deployable/runnable.
    Keep your code absolutely simple.
    Great tools make great software.
    Test your own code.
    If you see a bug, fix it.
    Use a development system that is superior to your
    target.
    Write your code for this (piece of software) only.
    Encapsulate functionality to ensure design consistency.
    Code transparently. Code for the team.
    John Romero’s 10 Programming Principles

    View full-size slide

  17. Scope: Team works in a context
    over which they have complete
    control

    Flow: Work in Small Batches
    (Lean, WIP Limits)

    Make Team Context Better
    Even Day.

    Freedom to Experiment without
    Fear

    Provide Solutions to Customers
    with Minimal Overhead
    Agile Manifesto Unicorn Project John Romero
    Deliver Quickly and
    Continuously

    Focus on Robustness

    Simplify for Maintainability

    Use the Right Tools

    Deliver Quality

    Code for Now

    Consistency for Customer
    Experience

    Code for the Team
    Customer

    Changing Requirements

    Deliver

    Work Together

    Motivated Individuals

    Environment & Support

    Team

    Conversation

    Working Software

    Sustainable Development

    Technical Excellence / Good Design

    Simplicity

    Self-Organizing Teams

    The Team Reflects

    View full-size slide

  18. UNRESTRICTED

    View full-size slide

  19. Quality


    Unrestricted


    End-User


    Simplicity


    Team

    View full-size slide

  20. “Success is the product of daily habits - not once-in-a-
    lifetime transformations”
    “Just because improvements aren’t visible, it doesn’t mean
    they’re not happening”
    “You do not rise to the level of your goals. You fall to the
    level of your systems”

    View full-size slide

  21. Richard BOWN
    https://richardwbown.com/we-are-developers-world-congress-2023/
    https://www.linkedin.com/in/richard-bown/
    https://twitter.com/bown_rw
    Q.U.E.S.T

    View full-size slide