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

Building in quality

Building in quality

During the talk Jakub will remind about the importance of building the quality into an application from the very beginning. Agile methodologies are very popular these days. Writing user stories with acceptance criteria, standups and other agile ceremonies are nothing new to most of us. Going one step further and automating the acceptance criteria with tools like Cucumber, JBehave or Behat, improves the external quality of software, by focusing the development on the business goals. On the other hand, unit level tools aim to ensure the inner quality of code and support the developer, but seem to be totally worthless from the client’s perspective. Besides, how do we make sure that we’re building the right thing? How do we get satisfying acceptance criteria? How do we keep the business engaged?

1a4e1f98f3aeef310273366c8c785207?s=128

Jakub Zalas

April 07, 2014
Tweet

Transcript

  1. Building in quality Jakub Zalas 7th of April 2014

  2. @jakzal @jakub_zalas @SensioLabsUK £  

  3. QUALITY? What is

  4. Quality is really two levers: external and internal quality. External

    quality is the quality perceived by the customer. [Internal quality is] Quality of internals of the system: how well it is designed, how good the internal tests are, and so on.
  5. How would you define software quality? @jakub_zalas

  6. the extent to what the software takes into account what

    matters most for the customer & the maintainability of the source code @_md External quality Internal quality
  7. software quality? That the software delivers real value and is

    built in a sustainable way. @IanDominey External quality Internal quality
  8. MORE IMPORTANT? What is

  9. Ignoring the external quality

  10. Ignoring the internal quality

  11. INTERNAL QUALITY

  12. SHOULD WE CARE?

  13. Ignoring the internal quality  Care No care Time #

    of features
  14. Ignoring the internal quality Time Pace Care   No  care

      Care   No  care  
  15. IS OUR PROFESSIONAL RESPONSIBILITY Ensuring the internal quality

  16. CONTINUOUSLY REVIEW THE DESIGN To MAINTAIN the internal quality

  17. REFACTOR To MAINTAIN the internal quality

  18. TESTS There’s no refactoring without

  19. IS OUR PROFESSIONAL RESPONSIBILITY Writing tests

  20. DESIGN WELL To BUILD the internal quality

  21. DRIVE YOUR CODE WITH TESTS To BUILD the internal quality

  22. WE LEARN HOW TO KEEP THE DESIGN SIMPLE Writing tests

    FIRST
  23. IS OUR PROFESSIONAL RESPONSIBILITY Writing tests FIRST

  24. IS ALL ABOUT TDD Building the quality into our app

  25. EXTERNAL QUALITY

  26. BDUF

  27. Requirements Design Implementation Verification Maintenance

  28. GET IT RIGHT FROM THE START

  29. WHEN IS IT YOU KNOW THE LEAST ABOUT YOUR PROJECT?

  30. WE LEARN DURING THE IMPLEMENTATION

  31. AGILE TO THE RESCUE!

  32. SCRUM

  33. WATERFALL

  34. WATERSCRUMFALL

  35. "I need users to log into the site to track

    their delivery." Mr Client
  36. As a User I need to log into the site

    So I could track my delivery
  37. As a User I need to see my deliveries So

    I could know when it's going to be delivered
  38. CLIENT CAME WITH A SOLUTION

  39. WHAT'S THE GOAL?

  40. 5 WHYS

  41. "I need users to log into the site to track

    their delivery." "Why?" "So they could see where's their package." "Why?" "What do you mean? They need to track their deliveries." "Yes, but why?"
  42. "Well, our mission is to offer the most customer friendly

    courier services. We want to increase the number of satisfied customers." "Aha!" "So they wouldn't get impatient and file complaints when the delivery is delayed." "Why?" "So they could know when is it going to be delivered." "Why?"
  43. THE GOAL!

  44. < 5% of customers filing complaints Customers   Support  

    Notifications Contact the Customer if delivery is delayed Add expected delivery time to the confirmation message SMS notifications Add a tracking URL to the confirmation message E-mail notifications List of deliveries after logging in Prevent complaints Check delivery status Why? Who? How? What?
  45. MAKE IMPACTS NOT SOFTWARE Gojko Adžić impactmapping.org

  46. EXAMPLE WORKSHOP

  47. Feature: Tracking deliveries As a Customer I need to see

    a status of my delivery So I could know when it's going to be delivered Scenario: Clicking a tracking URL Given I am waiting for a delivery And I received a confirmation message When I click the tracking URL from the message Then I should see a status of my delivery Scenario: Clicking a tracking URL month after delivery Given I my package was delivered a month ago And I kept the confirmation message When I click the tracking URL from the message Then I should be informed the tracking URL has expired
  48. LET'S CODE

  49. Failing   step   Failing   test   Code  

    Refactor   Passing   step   External Internal
  50. THANK YOU!

  51. Credits •  http://www.rgbstock.com/photo/mfXiaE4/Angry+Sumo •  http://www.nightmarefactory.com/cgi-bin/shopper?preadd=action&key=RU909885