Slide 1

Slide 1 text

Building in quality Jakub Zalas 7th of April 2014

Slide 2

Slide 2 text

@jakzal @jakub_zalas @SensioLabsUK £  

Slide 3

Slide 3 text

QUALITY? What is

Slide 4

Slide 4 text

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.

Slide 5

Slide 5 text

How would you define software quality? @jakub_zalas

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

software quality? That the software delivers real value and is built in a sustainable way. @IanDominey External quality Internal quality

Slide 8

Slide 8 text

MORE IMPORTANT? What is

Slide 9

Slide 9 text

Ignoring the external quality

Slide 10

Slide 10 text

Ignoring the internal quality

Slide 11

Slide 11 text

INTERNAL QUALITY

Slide 12

Slide 12 text

SHOULD WE CARE?

Slide 13

Slide 13 text

Ignoring the internal quality  Care No care Time # of features

Slide 14

Slide 14 text

Ignoring the internal quality Time Pace Care   No  care   Care   No  care  

Slide 15

Slide 15 text

IS OUR PROFESSIONAL RESPONSIBILITY Ensuring the internal quality

Slide 16

Slide 16 text

CONTINUOUSLY REVIEW THE DESIGN To MAINTAIN the internal quality

Slide 17

Slide 17 text

REFACTOR To MAINTAIN the internal quality

Slide 18

Slide 18 text

TESTS There’s no refactoring without

Slide 19

Slide 19 text

IS OUR PROFESSIONAL RESPONSIBILITY Writing tests

Slide 20

Slide 20 text

DESIGN WELL To BUILD the internal quality

Slide 21

Slide 21 text

DRIVE YOUR CODE WITH TESTS To BUILD the internal quality

Slide 22

Slide 22 text

WE LEARN HOW TO KEEP THE DESIGN SIMPLE Writing tests FIRST

Slide 23

Slide 23 text

IS OUR PROFESSIONAL RESPONSIBILITY Writing tests FIRST

Slide 24

Slide 24 text

IS ALL ABOUT TDD Building the quality into our app

Slide 25

Slide 25 text

EXTERNAL QUALITY

Slide 26

Slide 26 text

BDUF

Slide 27

Slide 27 text

Requirements Design Implementation Verification Maintenance

Slide 28

Slide 28 text

GET IT RIGHT FROM THE START

Slide 29

Slide 29 text

WHEN IS IT YOU KNOW THE LEAST ABOUT YOUR PROJECT?

Slide 30

Slide 30 text

WE LEARN DURING THE IMPLEMENTATION

Slide 31

Slide 31 text

AGILE TO THE RESCUE!

Slide 32

Slide 32 text

SCRUM

Slide 33

Slide 33 text

WATERFALL

Slide 34

Slide 34 text

WATERSCRUMFALL

Slide 35

Slide 35 text

"I need users to log into the site to track their delivery." Mr Client

Slide 36

Slide 36 text

As a User I need to log into the site So I could track my delivery

Slide 37

Slide 37 text

As a User I need to see my deliveries So I could know when it's going to be delivered

Slide 38

Slide 38 text

CLIENT CAME WITH A SOLUTION

Slide 39

Slide 39 text

WHAT'S THE GOAL?

Slide 40

Slide 40 text

5 WHYS

Slide 41

Slide 41 text

"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?"

Slide 42

Slide 42 text

"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?"

Slide 43

Slide 43 text

THE GOAL!

Slide 44

Slide 44 text

< 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?

Slide 45

Slide 45 text

MAKE IMPACTS NOT SOFTWARE Gojko Adžić impactmapping.org

Slide 46

Slide 46 text

EXAMPLE WORKSHOP

Slide 47

Slide 47 text

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

Slide 48

Slide 48 text

LET'S CODE

Slide 49

Slide 49 text

Failing   step   Failing   test   Code   Refactor   Passing   step   External Internal

Slide 50

Slide 50 text

THANK YOU!

Slide 51

Slide 51 text

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