Distributed Agile Development
Home / Services / Distributed Agile Development

Distributed Agile Software Development Services

Distribution of software development is becoming more and more common in order to save the production cost and reduce the time to market. Large geographical distance, different time zones and cultural differences in distributed software development (DSD) leads to weak communication which adversely affects the project. Using agile practices for distributed development is also gaining momentum in various organizations to increase the quality and performance of the project. This paper explores the intersection of these two significant trends for software development i.e. DSD and Agile.

OUR APPROACH

Who likes it?

  • Business -sees value as the project progresses
  • Development teams – iterative development and continuous integration

What is it different?

  • Quality standards are harder to reach
    • In a co-located team, you can reach quality standards by pair programming, coding standards
    • Knowledge diffuses easily by spontaneous communication, you can build shared values just by walking around and talking
  • In a distributed setting it’s harder:
    • Less identification with the project
    • Less identification with the employer
    • Less identification with the employer

How can agile make it better?

  • Do collocated agile first, then distribute it. It takes time to learn this new practice, as it is different from the traditional model

Faculties of Distribute Agile

  • Management
    • Role of Project Managers
      • No Micro Management
      • Project schedules, task breakdowns, work assignments, and progress reports
      • Organize teams by functionality, but not by activity
    • Role of Iteration Managers
      • Run iterations effectively
      • Live on the floor
      • Create excitement, enthusiasm in the team
      • Facilitate among various stakeholders
      • Communicate, communicate and over communicate
  • Planning
    • Release Level Plans
      • Master Story List
      • Split into iterations
      • Identify stakeholders
      • Release level estimation
      • Establish timelines and release dates
      • Short releases
    • Iteration level plans
      • 2 week Iterations (Generally)
      • Iteration Planning Meeting
      • Elaborated requirements
      • Estimation
      • Accommodate changes
      • Manage Hangover cards / Changes
      • Manage cards being pushed to subsequent iterations
  • Analysis and Design
    • Requirements Management: formal requirement specifications, dependencies, responsibilities, and change history
    • Involvement of development resources in Design to provide continuity into Development or disciplined empowerment on Design
    • Business Analysts – Proxy Customers
    • Functional Tests
    • Feedback to Customers

Development

  • Source Code Management: versioned file assets such as design documents, source code, and binary files
  • Test-first approach
  • Continuous integration across multiple locations
  • Senior – Junior pairing
  • Pairing, not just pair programming
  • Explicit communication
  • Progress check via daily stand ups / conference calls
  • Refactoring

Testing

  • Use (automated) test cases to specify requirements
    • Written specifications can hide details
    • Test cases make the details and the flow of events (dynamics) explicit.
  • Write functional test cases before development starts
    • Helps transfer business knowledge
    • Easy way to know requirements have been understood
    • Can then be scripted/automated by testing team
  • Functional Testing
    • FIT : define acceptance tests in HTML tables
    • Selenium : web testing inside the browser

Configuration Management

  • Use common tools:
    • Integrated development environment
    • Source Code Repository
    • Build environment
    • Unit test framework
    • Acceptance test framework
    • Centralized build server
    • Bug tracking system
  • Integrate early and often
  • Automate builds
  • Use Continuous Integration
  • Environment identical at both places