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. 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
  2. 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
  3. 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
  4. 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 ?
  5. customer satisfaction is the goal sustainable every software is a

    product and the goal is having users’ satisfaction continuously
  6. 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
  7. 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
  8. customer satisfaction sustainable cultural principles to achieve 10 is software

    development the developer of my lonely and beautiful country
  9. 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 “
  10. 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
  11. 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 “
  12. 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
  13. 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.
  14. 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
  15. 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 “
  16. 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 ?
  17. 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 “
  18. 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
  19. 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 “
  20. 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
  21. 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 “
  22. 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
  23. 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 “
  24. 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
  25. 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 “
  26. 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
  27. 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 “
  28. program in pairs and with team slow down to go

    faster 9 do together, practice together, learn together, improve together
  29. 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 “
  30. 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 “
  31. 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 “
  32. 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
  33. 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