Top Banner
Buzzwords! or what is this agile thing anyway…
21
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: What is this agile thing anyway

Buzzwords! or what is this agile thing anyway…

Page 2: What is this agile thing anyway

Waterfall

Page 3: What is this agile thing anyway

Problems• communication

• quality

• performance

• functionality

• development speed

Page 4: What is this agile thing anyway

Agile

Page 5: What is this agile thing anyway

The agile manifesto (2001)

• Individuals and interactions over processes and tools

• Working software over comprehensive documentation

• Customer collaboration over contract negotiation

• Responding to change over following a plan

Page 6: What is this agile thing anyway

Core agile concepts• Short Iterations (2 weeks on average)

• Plan only for next iteration

• Code released at end of every iteration

• Customer feedback at end of every iteration

• Change allowed!

Page 7: What is this agile thing anyway

XP• Pair programming

• Shared code ownership

• TDD

• YAGNI or the simplest thing that could possibly work

• Design/architecture only as needed

• Write stories on index cards

• A story is a placeholder for a conversation

Page 8: What is this agile thing anyway

Scrum• Scrum Master enforces scrum rules

• Product Owner maintains product backlog

• Sprint (iteration by another name)

• Sprint planning meeting - estimate stories & commit to stories for iteration

• Planning poker

• Daily standup

• End-of-sprint retrospective

Page 9: What is this agile thing anyway

Kanban/Lean

• Good for reactive teams

• Work is a stream not an iteration

• Blockers block - stop the line

• Remove bottlenecks to speed up flow

Page 10: What is this agile thing anyway

Unit tests

• Test method in isolation

• Mock or stub dependencies as appropriate

• Easy to isolate errors

• Use lots of these, they should be quick

Page 11: What is this agile thing anyway

example unit test

(fact "worn treasure is worn" (def treasure {:id 1 :type "wearable" :name "hat"}) (def player {:id 1 :name "bob" :treasure [treasure]}) (treasure-worn? player treasure) => true (provided (models/worn-treasure-by-player-id 1) => [treasure] ) )

Page 12: What is this agile thing anyway

Integration/Acceptance Tests

• Test integration of all parts of system

• Typically through interacting with a web browser

• hard to isolate errors

• slow to run - use less of these

Page 13: What is this agile thing anyway

example integration test it ‘successful login' do

@driver.get 'http://the-internet.herokuapp.com/login'

@driver.find_element(id: 'username').send_keys('username')

@driver.find_element(id: 'password').send_keys('password')

@driver.find_element(id: 'login').submit

@driver.find_element(css: '.flash.success').displayed?.should be_true

end

Page 14: What is this agile thing anyway

tdd• write tests first

• build system so it is testable

• you know you are done when your tests pass

• can refactor with confidence

• much harder to add tests later

Page 15: What is this agile thing anyway

Continuous Integration

• Automated tests run on checkin

• Mixture of unit and integration tests

• Ensures new functionality doesn’t conflict with existing functionality

• If break build - all checkins stop until problem fixed

Page 16: What is this agile thing anyway

bdd

Page 17: What is this agile thing anyway

bdd

• test behaviour first

• then add unit tests

• you know you are done when all your tests pass

Page 18: What is this agile thing anyway

Cucumber example• Background:

• Given I have chosen some items to buy

• And I am about to enter my credit card details

• Scenario: Credit card number too short

• When I enter a card number that's only 15 digits long

• And all the other details are correct

• And I submit the form

• Then the form should be redisplayed

• And I should see a message advising me of the correct number of digits

Page 19: What is this agile thing anyway

ddd• Read this book! Domain Driven Design by Eric Evans

(2004)

• Architecture of code should reflect domain

• Domain language = customer language

• Articles and pixies not controllers and services

• Bounded context

• Context map

Page 20: What is this agile thing anyway

devops

• Read this book! The Phoenix Project by Gene Kim, Kevin Behr & George Spafford

• Communication

• Shared goals between dev & ops

• Shared ownership

Page 21: What is this agile thing anyway

Questions?