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

Unlearn Software Quality & Excellence

Unlearn Software Quality & Excellence

Lemi Orhan Ergin

October 18, 2023
Tweet

More Decks by Lemi Orhan Ergin

Other Decks in Technology

Transcript

  1. UNLEARN
    SOFTWARE QUALITY
    AND EXCELLENCE
    LEMİ ORHAN ERGİN co-founder, craftgate
    v 2023.10

    View full-size slide

  2. every software is a product,
    and software is expected
    high quality
    software
    quality
    no one wants low quality
    food to eat at dinner
    like every product
    to be

    View full-size slide

  3. when do we call a
    software as high quality ?
    ?
    software quality
    What is

    View full-size slide

  4. What is
    newly written software
    no bugs, no vulnerabilities, working as expected
    sonar report A category
    ~100% code coverage
    50,000+ unit tests processed
    150+ microservices
    go + serverless + mongodb + next.js
    AI-powered codeless test automation platform
    having a scrum master + running sprints
    practicing agile {placeholder}
    dramatic increase in velocity of the team
    tdd, bdd, atdd
    software quality

    View full-size slide

  5. newly written software
    no bugs, no vulnerabilities, working as expected
    sonar report A category
    ~100% code coverage
    50,000+ unit tests processed
    150+ microservices
    go + serverless + mongodb + next.js
    AI-powered codeless test automation platform
    having a scrum master + running sprints
    practicing agile {placeholder}
    dramatic increase in velocity of the team
    tdd, bdd, atdd
    None of them defines or ensures software quality
    What is software quality

    View full-size slide

  6. Quality is conformance to
    requirements, not goodness
    Book
    Quality is still free: making quality certain in uncertain times.
    New York/London, McGraw-Hill, 1996
    Reference:
    Philip Crosby
    Author, consultant and philosopher
    Developed practical concepts to define quality
    and zero-defects concept

    for who ? what is it for ?

    View full-size slide

  7. ?
    the goal
    what is
    development
    in software

    View full-size slide

  8. customer satisfaction is the goal
    sustainable
    every software is a product and the goal is
    having users’ satisfaction continuously

    View full-size slide

  9. customer satisfaction
    sustainable
    software quality and excellence is ensuring

    View full-size slide

  10. customer satisfaction
    sustainable
    having features customers use
    working as expected
    almost zero bugs
    no downtime
    fast performance
    easy to use
    deploying new features & fixes fast
    fast customer support from experts
    #working as expected
    #proven fast #right product

    View full-size slide

  11. having features customers use
    working as expected
    almost zero bugs
    no downtime
    fast performance
    easy to use
    deploying new features & fixes fast
    fast customer support from experts
    customer satisfaction
    sustainable
    adding new features
    evolving existing features
    no negative impact of leaving team members
    no negative impact of upgrades at libraries
    no negative impact of technical debt
    fixing newly detected bugs fast
    adding scalability needs
    recovering fast at disasters
    #easy to change #competent team #affordable
    #working as expected
    #proven fast #right product

    View full-size slide

  12. customer satisfaction
    sustainable
    cultural principles to achieve
    10
    is software development
    the developer of my lonely
    and beautiful country

    View full-size slide

  13. Inspection does not improve the
    quality, nor guarantee quality.
    Inspection is too late. The quality,
    good or bad, is already in the product.
    Book
    In Out of the Crisis, The MIT Press, 1982
    Reference:
    W. Edwards Deming
    Widely acknowledged as the leading
    management thinker in the field of quality

    View full-size slide

  14. quality cannot be added later
    start with quality concerns, shift it left
    1 quality is like security, all attempts at later stage is about prevention.
    shift-left philosophy is about being proactive rather than reactive
    assuring the quality after development
    does not make software better at quality,
    it lowers the quality due to last minute patches
    and makes a late project later

    View full-size slide

  15. The purpose of organization is to
    reduce the amount of communication
    and coordination necessary;
    hence organization is a radical attack
    on the communication problems.
    Book
    The Mythical Man-Month, Anniversary Edition:
    Addison-Wesley Publishing Company, 1995.
    Reference:
    Fred P. Brooks
    Computer Architect, Author,
    Turing Award Winner 1999

    View full-size slide

  16. http://www.cs.umd.edu/~basili/publications/proceedings/P125.pdf
    Organizational metrics has more
    impact on quality than the impact
    of code churn, code complexity,
    code coverage, code dependencies
    and pre-release defect measures
    Sample Organizational Metrics

    View full-size slide

  17. Deeper level of ownership indicates less diffusion of
    activities, a single point of approval/control which should
    improve intellectual control
    This measure deals with knowledge transfer.
    Coordination/communication overhead across
    organizations and synchronization needs amongst
    individuals lower the quality. Devops culture and pairing
    can break the bareers.

    View full-size slide

  18. Organizational structure has the biggest impact
    Invest in people and org. structure
    2
    work with meticulous, disciplined, fast learners loving collaboration
    and cultivate a healthy company culture
    it also allows neighborhood pressure in a good sense

    View full-size slide

  19. Pragmatic innovation is about identifying
    the technology that actually solves your
    specific problems. It’s not about
    technology for technology’s sake, trial
    and error, or crossing your fingers and
    hoping for the best.
    Article
    https://tecknoworks.com/choosing-the-right-technology-for-
    your-business/
    Reference:
    Razvan Furca
    CEO and Chief Innovation Lifeguard at
    Tecknoworks, leader at digital transformation

    View full-size slide

  20. be pragmatic and wise
    use technologies you are good at
    3
    or select the ones you don’t know, but you can expertise fast
    how can you claim you can deliver quality
    when you are not good at the technologies used ?

    View full-size slide

  21. In 2017 we found that, when compared to low
    performers, the high performers have:
    • 46 times more frequent code deployments
    • 440 times faster lead time from commit to deploy
    • 170 times faster mean time to recover from downtime
    • 5 times lower change failure rate (1/5 as likely for a
    change to fail)
    Accelerate: The Science of Lean Software and DevOps:
    Building and Scaling High Performing Technology Organizations
    Jez Humble & Gene Kim

    View full-size slide

  22. always be ready to deploy to prod
    release changes early & frequently
    4
    invest in CI/CD pipeline from day one
    shorten feedback loops with efficient pipelines
    and make changes available to customers fast

    View full-size slide

  23. The measure of design quality is
    simply the measure of the effort
    required to meet the needs of the
    customer.
    Book
    Clean Architecture
    Reference:
    Robert C. Martin
    Author of Clean Code, Creator of
    Software Craftsmanship Movement

    View full-size slide

  24. decrease coupling and increase cohesion
    to be prepared for the easy changes
    5
    follow design principles and TDD, separate the code changing frequently from
    the code holds technology specific complexity, prefer modularity, delay
    decisions to last responsible moment, design simple
    simplicity is about achieving loose coupling and high cohesion
    majority of people do not know what is simple design,
    what makes it different in reality
    keep codebase easy to change

    View full-size slide

  25. Being proud of 100% test coverage is
    like being proud of reading every
    word in the newspaper. Some are
    more important than others.
    Twitter
    https://twitter.com/kentbeck/status/812703192437981184
    Reference:
    Kent Beck
    Creator of Extreme Programming,
    co-author of Agile Manifesto

    View full-size slide

  26. write comprehensive test suite
    keep your design testable
    6
    learn how to write better tests, not as many as you can & automate
    do not abuse sonar reports, code coverage and any
    metrics about codebase, prove fast

    View full-size slide

  27. 84% of companies that work to improve their customer
    experience report an increase in their revenue.
    96% of customers say customer service is important in
    their choice of loyalty to a brand.
    customer-centric companies are 60% more profitable
    than companies that don’t focus on customers.
    https://www.forbes.com/sites/blakemorgan/2019/09/24/50-stats-that-prove-the-value-of-customer-experience/
    50 Stats That Prove The Value Of Customer Experience
    Blake Morgan, Forbes

    View full-size slide

  28. get the best feedback you ever get
    touch customers/users directly
    7
    know how customers feel, what they want, what they don’t like.
    developers not touching the users develop projects, not products

    View full-size slide

  29. Software design is all about trade-offs
    and no software quality tool will ever
    be able to understand the rationale
    behind each design decision
    Blog Post
    Code quality cannot be measured
    https://www.codurance.com/publications/2014/12/14/
    quality-cannot-be-measured
    Reference:
    Sandro Mancuso
    Founder of Codurance and author of
    “The Software Craftsman” book

    View full-size slide

  30. quality cannot be measured
    don’t fool yourself, stop measuring it
    8
    when a measure becomes a target, it ceases to be a good measure
    - Goodhart’s Law

    View full-size slide

  31. Social Skill
    http://
    fi
    rstround.com/review/Why-Every-Startup-Should-Pair-Program
    .

    View full-size slide

  32. If people program solo, they are more
    likely to make mistakes, more likely to
    over design, and more likely drop the
    other practices, particularly under
    pressure.
    Book
    Extreme Programming Explained
    https://www.amazon.com/Extreme-Programming-
    Explained-Embrace-Change/dp/0321278658
    Reference:
    Kent Beck
    Creator of Extreme Programming,
    co-author of Agile Manifesto

    View full-size slide

  33. program in pairs and with team
    slow down to go faster
    9
    do together, practice together, learn together, improve together

    View full-size slide

  34. Agile is Dead (Long Live Agility)
    https://pragdave.me/blog/2014/03/04/time-to-kill-agile.html
    Reference:
    Dave Thomas
    The author of Agile Manifesto
    Co-Author of The Pragmatic Programmer
    Instead, let’s use a word that
    describes what we do
    Let’s abandon the word agile
    to the people who don’t do things

    View full-size slide

  35. No rules are universal
    Rules need context
    All experts telling you what to do and how to do are wrong
    unless it was written for your team, company, project
    Agile is Dead (Long Live Agility)
    https://pragdave.me/blog/2014/03/04/time-to-kill-agile.html
    Reference:
    Dave Thomas
    The author of Agile Manifesto
    Co-Author of The Pragmatic Programmer

    View full-size slide

  36. What to do:
    • Find out where you are
    • Take a small step towards your goal
    • Adjust your understanding based
    on what you learned
    • Repeat
    Agile is Dead (Long Live Agility)
    https://pragdave.me/blog/2014/03/04/time-to-kill-agile.html
    Reference:
    Dave Thomas
    The author of Agile Manifesto
    Co-Author of The Pragmatic Programmer

    View full-size slide

  37. CREATE YOUR OWN MODEL
    STOP CHASING SUCCESS FORMULAS
    YOU ARE SPECIAL, YOU ARE UNIQUE
    KNOW YOUR TEAM, FEEL YOUR PURPOSE,
    IDENTIFY YOUR REAL NEEDS, SELECT PRACTICES
    TOUCHING YOUR OWN NEEDS
    START TODAY
    youtube.com/watch?v=6pim0Mbcteg

    View full-size slide

  38. shift from project mindset to
    product mindset
    10 forget about agile {placeholder} stuff

    View full-size slide

  39. 1
    invest in people and
    organization structure
    use technologies you are
    good at
    release changes early and
    frequently
    keep your design testable
    touch customers directly
    don’t fool yourself,
    stop measuring quality
    work in pairs and slow
    down to go faster
    2
    3
    4
    5
    6
    7
    8
    9
    start with quality concerns
    keep codebase easy
    to change
    shift from project mindset to
    product mindset
    10
    customer satisfaction
    sustainable
    10 cultural principles to achieve

    View full-size slide

  40. speakerdeck.com/lemiorhan
    lemi orhan ergin
    co-founder, craftgate
    Evolution of Code to Modularity
    twitter.com/lemiorhan

    View full-size slide