• Like
  • Save

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.

Agile development practices - How do they really work ?

  • 985 views
Uploaded on

TW Biztech Live presentation on basic Agile Development practices

TW Biztech Live presentation on basic Agile Development practices

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
985
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
0
Comments
0
Likes
2

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Agile Development Practices
    How do they really work ?
  • 2. 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
  • 3. Agile Development Practices are geared towards…
    Shorter feedback cycles
    Creation of safety nets
    Allowing teams to learn by failing fast
  • 4. Pair Programming
    Design In Agile
    Technical Debt
    Test Driven Development
    Continuous Integration
    Standup
    Story Signup
  • 5. Standup Meeting
  • 6. 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
  • 7. 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.
  • 8. 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
  • 9.
  • 10. Story Signup
  • 11. I will pair with you today to help with the Auth Service
    What story should I work on today ?
  • 12. Pair Programming
  • 13. Driver
    Navigator
    Pairing Station
  • 14. I would suggest we refactor this service to allow injection of dependencies
    Alright… Let me try writing a failing test for it then…
  • 15. 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
  • 16. No worries if your pair is on leave.. I can be the navigator !
  • 17. Test Driven Development
  • 18. 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
  • 19. [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
  • 20. A successful Unit Test run
  • 21. You can take small incremental steps
    You know when you are done !
    An effective safety net
    Helps drive your design
    Benefits of TDD
  • 22. Acceptance Tests
    • Test the entire system from end to end (rather than testing a single class)
    • 23. Written by Devs and QAs (pairing)
    • 24. Effective safety net when run with continuous integration
    • 25. Used to certify the quality of build.
    • 26. 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);
        }
  • 27. Testing Frameworks
    rspec
  • 28. Continuous Integration
  • 29. 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
  • 30. Trigger Build
    Story Checkin
    Compile
    Dev Pair
    Run Unit Tests
    Run Functional Tests
    QA + Dev (Pair)
    Release Candidate Installer
    UAT Environments
    Trigger Deployment
  • 31.
  • 32. Build Radiator
  • 33. The Continuous Feedback Loop
    Source : http://c2.com/cgi/wiki?TestDrivenDevelopment
  • 34. Design in Agile
  • 35. 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
  • 36.
  • 37. Technical Debt
  • 38. “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”
  • 39.
  • 40. 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 !
  • 41. Quick References
    • C2 Wiki (http://c2.com/)
    • 42. Martin Fowler’s Bliki (http://martinfowler.com/bliki/)
    • 43. Its not just standing up (http://martinfowler.com/articles/itsNotJustStandingUp.html)
    • 44. Ron Jeffries (http://xprogramming.com)
  • Books
  • 45. Questions ?