• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content

Loading…

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

Like this presentation? Why not share!

Agile development practices - How do they really work ?

on

  • 1,108 views

TW Biztech Live presentation on basic Agile Development practices

TW Biztech Live presentation on basic Agile Development practices

Statistics

Views

Total Views
1,108
Views on SlideShare
1,108
Embed Views
0

Actions

Likes
1
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Agile development practices - How do they really work ? Agile development practices - How do they really work ? Presentation Transcript

    • Agile Development Practices
      How do they really work ?
    • Time
      Analysis
      Design
      Working Software
      Waterfall
      Testing
      Dev
      Longer Feedback Cycle
      Agile
      Analysis
      Analysis
      Analysis
      Analysis
      Analysis
      Design
      Design
      Design
      Design
      Design
      Dev
      Dev
      Dev
      Dev
      Dev
      Testing
      Testing
      Testing
      Testing
      Testing
      Working Software
      Working Software
      Working Software
      Working Software
      Working Software
      Shorter Feedback Cycles
    • Agile Development Practices are geared towards…
      Shorter feedback cycles
      Creation of safety nets
      Allowing teams to learn by failing fast
    • Pair Programming
      Design In Agile
      Technical Debt
      Test Driven Development
      Continuous Integration
      Standup
      Story Signup
    • Standup Meeting
    • Yesterday I started the Login story #42
      What did I do yesterday ?
      What am I doing today ?
      Today I plan to finish the same story
      Is there anything blocking me ?
      I will need a pair to help me understand the Authentication Service API
      Talking Token
    • 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.
    • 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
    • Story Signup
    • I will pair with you today to help with the Auth Service
      What story should I work on today ?
    • Pair Programming
    • Driver
      Navigator
      Pairing Station
    • I would suggest we refactor this service to allow injection of dependencies
      Alright… Let me try writing a failing test for it then…
    • 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
    • No worries if your pair is on leave.. I can be the navigator !
    • Test Driven Development
    • Test
      succeeds
      Write a Test
      Check if test fails
      Write production code
      Test
      fails
      Test(s) fail
      Run all tests
      All tests pass
      Clean up Code
      Source : http://en.wikipedia.org/wiki/Test-driven_development
    • [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
    • A successful Unit Test run
    • You can take small incremental steps
      You know when you are done !
      An effective safety net
      Helps drive your design
      Benefits of TDD
    • 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
    •     public void verifyCashFlow() throws Exception {
              DateTimedisbursalDate = systemDateTime.plusDays(1);
              int installment = 5;
              intcashFlowIncremental = 1;
              DefineNewLoanProductPage.SubmitFormParametersformParameters = 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);
          }
    • Testing Frameworks
      rspec
    • Continuous Integration
    • Continuous Integration System
      Source Control
      Developer
      1
      Developer
      2
      Check for Changes
      Checkin
      Check for Changes
      Get Latest
      Run Integration (Compile + Tests + Deploy)
      Send Notifications
      Send Notifications
      Continuous Integration Lifecycle
    • Trigger Build
      Story Checkin
      Compile
      Dev Pair
      Run Unit Tests
      Run Functional Tests
      QA + Dev (Pair)
      Release Candidate Installer
      UAT Environments
      Trigger Deployment
    • Build Radiator
    • The Continuous Feedback Loop
      Source : http://c2.com/cgi/wiki?TestDrivenDevelopment
    • Design in Agile
    • Design in Agile
      Part of each story and pairing session
      Constant refactoring of existing code.
      Devhuddles, architecture white boarding, group refactoring sessions
      Made visible on flipcharts near the team area
    • Technical Debt
    • “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”
    • 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 !
    • 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)
    • Books
    • Questions ?