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

Unlearn Software Quality: Redefine What Should Be Really Cared

Unlearn Software Quality: Redefine What Should Be Really Cared

Lemi Orhan Ergin

November 29, 2022
Tweet

More Decks by Lemi Orhan Ergin

Other Decks in Technology

Transcript

  1. } List<MerchantPosCommissionPosInfo> pfPosList = posList.toList()); if (pfPosList.isEmpty() || MAIN_CARD_BRANDS.contains(bin.getCardBrand().getName())) {

    throw new PaymentApiPersistentBusinessException("payment-api.posRouting.posNotFound.forInstallposRouting. } return pfPosList; } public List<MerchantPosCommissionPosInfo> fi lterForAutoPilot(PosRouting posRouting, List<MerchantPosCommissionPosInfo> availablePosList) { List<MerchantPosCommissionPosInfo> fi lteredList = availablePosList .stream() . fi lter(mpc -> !PosStatus.AUTOPILOT.equals(mpc.getStatus()) || Objects.isNull(mpc.getPosAutopilotState()) || (posRouting.isThreeDS() ? mpc.getPosAutopilotState().getIsThreeDsUp() : mpc.getPosAutopilotState().getIsNonThreeDsUp())) .collect(Collectors.toList()); if ( fi lteredList.isEmpty()) return availablePosList; return fi lteredList; } UNLEARN SOFTWARE quality redefine what should be really cared LEMİ ORHAN ERGİN CO-FOUNDER, CRAFTGATE
  2. What is Software Quality? newly written software no bugs, no

    vulnerabilities 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 dramatic increase in velocity of the team tdd, bdd, atdd
  3. 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 “
  4. customer satisfaction sustainable having features customers require working as expected

    zero bugs no downtime fast performance easy to use adding new features fast good customer support #working as expected #proven fast #right product
  5. customer satisfaction sustainable adding new features changing existing features coming/leaving

    team members upgrades at libraries newly detected bugs scalability needs disaster scenarios growing technical debt #easy to change #competent team #affordable
  6. 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 “
  7. customer satisfaction sustainable quality cannot be added later start with

    quality concerns 1 quality is like security, all attempts at later stage is about prevention 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
  8. 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 “
  9. 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
  10. customer satisfaction sustainable Org. 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
  11. 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 “
  12. customer satisfaction sustainable 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 ?
  13. 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 “
  14. customer satisfaction sustainable 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
  15. There are two ways of constructing a software design: One

    way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies Lecture from part of his 1980 Turing Award Lecture (published in Communications of the ACM, February 1981, pp. 75-83 Reference: Tony Hoare Computer Scientist, Creator of Quicksort, 
 Turing Award Winner 1980 “
  16. 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 “
  17. customer satisfaction sustainable continuously refactor to keep the design simple

    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
  18. The only test coverage goal that makes any sense is

    100%. It’s an asymptotic goal. You’ll likely never get there. But you should never stop trying. Twitter https://twitter.com/unclebobmartin/status/1205922909350293505 Reference: Robert C. Martin Author of Clean Code, Creator of 
 Software Craftsmanship Movement “
  19. 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 “
  20. If someone says "this code is hard to test", it

    means "your design simply sucks" His Talk at Devoxx Poland https://www.youtube.com/watch?v=pnRAnP8MgBc Reference: Venkat Subramaniam Programmer, Author, Speaker, Founder Agile Developer “
  21. customer satisfaction sustainable write comprehensive test suite keep your design

    testable 6 learn how to write better tests, not as many as you can do not abuse sonar reports, code coverage and any 
 metrics about codebase, prove fast
  22. 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 “
  23. customer satisfaction sustainable get the best feedback you ever get

    learn from customers directly 7 know how customers feel, what they want, what they don’t like
  24. 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 “
  25. customer satisfaction sustainable 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
  26. https://qualizeal.com/wp-content/uploads/2022/whitepapers/ A%20Seamless%20and%20Successful%20Transition%20from%20Quality%20Assurance%20to%20Quality%20Engineering.pdf While Quality assurance only ensures the quality of

    the product, quality engineering facilitates the development of quality products and the processes. Reference: A Seamless and Successful Transition from Quality Assurance to Quality Engineering White Paper by Qualizeal
  27. customer satisfaction sustainable quality makes you go faster make quality

    a mindset, not a step 9 stop being a gatekeeper, or police. be involved in discussions. more from quality assurance to quality engineering
  28. 1 Invest in people and organization structure use technologies you

    are good at release changes early and 
 frequently keep your design testable learn from customers directly don’t fool yourself, 
 stop measuring quality make quality a mindset, not a step 2 3 4 5 6 7 8 9 start with quality concerns keep codebase easy 
 to change TAKEAWAYS KEY