Agile Development Practices
How do they really work ?
Working
Software
TestingDevDesignAnalysis
Time
Analysis
Design
Dev
Testing
Working
Software
Analysis
Design
Dev
Testing
Wo...
Agile Development Practices are
geared towards…
• Shorter feedback cycles
• Creation of safety nets
• Allowing teams to le...
What did I do
yesterday ?
What am I doing
today ?
Is there anything
blocking me ?
Yesterday I started
the Login story #42
...
Effective Standup Meetings
• Open forum for everyone to communicate daily status and progress
of work
• Take place near a ...
Standup Antipatterns
• Long standup meetings
• A leader drives the standup
• People only look at the leader while talking
...
What story
should I
work on
today ?
I will pair with
you today to
help with the
Auth Service
Pairing Station
Navigator Driver
I would suggest
we refactor this
service to allow
injection of
dependencies
Alright… Let me
try writing a
failing test for...
Benefits of Pair Programming
• Continuous code review
• Problem Solving
• Better Design
• Training newcomers on the codeba...
No worries if
your pair is on
leave.. I can be
the navigator !
Write a Test
Check
if test
fails
Write
production
code
Run all
tests
Clean up Code
Test
fails
Test
succeeds
Test(s) fail
A...
[Test]
public void Should_Get_Full_Name()
{
var contact = new Contact {FirstName = “Donald", LastName = “Duck"};
Assert.Th...
A successful Unit Test run
You know
when you
are done !
You can take
small
incremental
steps
An
effective
safety
net
Helps
drive your
design
Benefits...
Acceptance Tests
 Test the entire system from end to end (rather than testing a
single class)
 Written by Devs and QAs (...
public void verifyCashFlow() throws Exception {
DateTime disbursalDate = systemDateTime.plusDays(1);
int installment = 5;
...
Testing Frameworks
rspec
Continuous
Integration
System
Source
Control
Developer
1
Developer
2
Check for
Changes
Check for
Changes
Get Latest
Run In...
Compile
Run Unit Tests
Run Functional
Tests
Release Candidate
Installer
UAT
Environments
Trigger Build
Story
Checkin
QA + ...
Build Radiator
The Continuous Feedback Loop
Source : http://c2.com/cgi/wiki?TestDrivenDevelopment
Design in Agile
• Part of each story and pairing session
• Constant refactoring of existing code.
• Dev huddles, architect...
“This class is getting too messy,
we need to refactor this at some
point ”
“We have a very tight deadline for
this release...
Managing Technical Debt
• Continuously prioritize Technical Debt during the release.
• Slot them as stories / tasks within...
Quick References
 C2 Wiki (http://c2.com/)
 Martin Fowler’s Bliki (http://martinfowler.com/bliki/)
 Its not just standi...
Books
Questions ?
Agile development practices - How do they really work ?
Agile development practices - How do they really work ?
Agile development practices - How do they really work ?
Agile development practices - How do they really work ?
Agile development practices - How do they really work ?
Agile development practices - How do they really work ?
Agile development practices - How do they really work ?
Agile development practices - How do they really work ?
Agile development practices - How do they really work ?
Agile development practices - How do they really work ?
Agile development practices - How do they really work ?
Agile development practices - How do they really work ?
Upcoming SlideShare
Loading in...5
×

Agile development practices - How do they really work ?

1,026

Published on

TW Biztech Live presentation on basic Agile Development practices

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,026
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Transcript of "Agile development practices - How do they really work ?"

  1. 1. Agile Development Practices How do they really work ?
  2. 2. Working Software TestingDevDesignAnalysis Time Analysis Design Dev Testing Working Software Analysis Design Dev Testing Working Software Analysis Design Dev Testing Working Software Analysis Design Dev Testing Working Software Analysis Design Dev Testing Working Software Waterfall Agile Longer Feedback Cycle Shorter Feedback Cycles
  3. 3. Agile Development Practices are geared towards… • Shorter feedback cycles • Creation of safety nets • Allowing teams to learn by failing fast
  4. 4. What did I do yesterday ? What am I doing today ? Is there anything blocking me ? Yesterday I started the Login story #42 Today I plan to finish the same story I will need a pair to help me understand the Authentication Service API Talking Token
  5. 5. Effective Standup Meetings • Open forum for everyone to communicate daily status and progress of work • Take place near a story wall • Short and quick • Help in identifying obstacles • Help in setting direction for the whole team • Everyone is attentive.
  6. 6. Standup Antipatterns • Long standup meetings • A leader drives the standup • People only look at the leader while talking • People are often late to the standup
  7. 7. What story should I work on today ? I will pair with you today to help with the Auth Service
  8. 8. Pairing Station Navigator Driver
  9. 9. I would suggest we refactor this service to allow injection of dependencies Alright… Let me try writing a failing test for it then…
  10. 10. Benefits of Pair Programming • Continuous code review • Problem Solving • Better Design • Training newcomers on the codebase • “Pair Pressure” ensures more discipline and less disturbances • Builds collective ownership of the codebase
  11. 11. No worries if your pair is on leave.. I can be the navigator !
  12. 12. Write a Test Check if test fails Write production code Run all tests Clean up Code Test fails Test succeeds Test(s) fail All tests pass Source : http://en.wikipedia.org/wiki/Test-driven_development
  13. 13. [Test] public void Should_Get_Full_Name() { var contact = new Contact {FirstName = “Donald", LastName = “Duck"}; Assert.That(contact.FullName, Is.EqualTo(“Duck, Donald")); } A Simple Unit Test Case
  14. 14. A successful Unit Test run
  15. 15. You know when you are done ! You can take small incremental steps An effective safety net Helps drive your design Benefits of TDD
  16. 16. Acceptance Tests  Test the entire system from end to end (rather than testing a single class)  Written by Devs and QAs (pairing)  Effective safety net when run with continuous integration  Used to certify the quality of build.  Leveraged for performance/load testing
  17. 17. public void verifyCashFlow() throws Exception { DateTime disbursalDate = systemDateTime.plusDays(1); int installment = 5; int cashFlowIncremental = 1; DefineNewLoanProductPage.SubmitFormParameters formParameters = FormParametersHelper.getWeeklyLoanProductParameters(); String loanProductName = formParameters.getOfferingName(); int frequency = formParameters.getFreqOfInstallments(); createAndValidateLoanProductWithCashFlow("99.99",formParameters); new NavigationHelper(selenium).navigateToHomePage(); loanTestHelper. navigateToCreateLoanAccountEntryPageWithoutLogout(clientName,loanProductName). setDisbursalDate(disbursalDate). setInstallments(installment). clickContinueToNavigateToCashFlowPage(). validateCashFlowMonths(disbursalDate,installment,frequency). enterValidData(cashFlowIncremental). clickContinue(). verifyCashFlow(cashFlowIncremental); }
  18. 18. Testing Frameworks rspec
  19. 19. Continuous Integration System Source Control Developer 1 Developer 2 Check for Changes Check for Changes Get Latest Run Integration (Compile + Tests + Deploy) Checkin Send Notifications Send Notifications Continuous Integration Lifecycle
  20. 20. Compile Run Unit Tests Run Functional Tests Release Candidate Installer UAT Environments Trigger Build Story Checkin QA + Dev (Pair) Trigger Deployment Dev Pair
  21. 21. Build Radiator
  22. 22. The Continuous Feedback Loop Source : http://c2.com/cgi/wiki?TestDrivenDevelopment
  23. 23. Design in Agile • Part of each story and pairing session • Constant refactoring of existing code. • Dev huddles, architecture white boarding, group refactoring sessions • Made visible on flipcharts near the team area
  24. 24. “This class is getting too messy, we need to refactor this at some point ” “We have a very tight deadline for this release” “We don’t have time for design” “We must try to ship now and deal with consequences later”
  25. 25. Managing Technical Debt • Continuously prioritize Technical Debt during the release. • Slot them as stories / tasks within an iteration • Make relevant stakeholders aware of the debt being piled up because of time constraints • Keep a constant check .. The longer you keep a debt.. The more interest you pay !
  26. 26. Quick References  C2 Wiki (http://c2.com/)  Martin Fowler’s Bliki (http://martinfowler.com/bliki/)  Its not just standing up (http://martinfowler.com/articles/itsNotJustStandingUp.html)  Ron Jeffries (http://xprogramming.com)
  27. 27. Books
  28. 28. Questions ?

×