Agile

In software development, the term “agile” is used to mean a lean process which allows teams to quickly adapt to changes. Our custom agile process is one derived from a mixture of two agile models: Scrum and Extreme Programming.

Scrum is all about setting quick, iterative goals and accomplishing them as quickly as possible through teamwork, collaboration, and communication. The team works a week at a time accomplishing the highest priority tasks of the week; not the top priority from when the project was started months ago.

Extreme programming (XP) is designed to maintain software quality while responding quickly and effectively to changing requirements. This methodology values simplicity, communication, feedback, courage, and respect.

We have in-depth experience in implementing Agile in both of our onshore and offshore development environments. Our technology expertise, Agile methodologies and online tools for project management and collaboration enable us to build an application with startling speed and robustness.

Embracing Change

Change is inevitable in all software projects. Our development process and engineering practices allow us to embrace change and keep projects on track.

  • Test-driven development and continuous integration keep a safety net on the project. Automated tests that run every time someone integrates their work with the project prevent regressions from occurring.
  • Short weekly/biweekly iterations allow customers to make requirement decisions (detail and prioritization) at the latest possible moment instead of months in advance.
  • Requirements are broken down into smaller user-stories along with acceptance criteria to enable us to develop in smaller increments.
  • Frequent releases keep risk to a minimum by allowing changes to happen gradually instead of all at once.

Communication Is Key

Any successful project thrives through the communication of all involved individuals. It becomes even more important in an offshore development project where you do not have co-located teams and opportunities to have in-person meetings. Using our years of leadership and management experience in establishing effective and efficient communication processes, we have implemented robust communication for our projects.

  • Online communication and collaboration tools accessible to everyone in the team keep everyone informed.
  • We maintain a development wiki site for every project for sharing project documentation.
  • Our project documentation is concise and to the point, making it useful and easily maintainable.
  • Daily standup meetings get everyone on the same page. Nothing is left behind and everyone knows what everyone else has completed and will be working on next.

Focus on Feedback

Teams should give and receive feedback constantly during any project.

  • Weekly customer reviews bring everyone together to review how things are going and to decide the next week’s direction for the project.
  • Weekly team retrospectives give the development team time to reflect on what went well and what could be improved the next week, keeping the team focused on improving their methods and practices constantly.

We broadly follow the following steps for application development:

  1. Understand and perform detailed analysis of the business needs.
  2. Work with customers and stakeholders to prioritize requirements based on the value to end users and customers.
  3. Divide requirements into small modules/iterations by priority.
  4. Initiate design and programming on iterations.
  5. Receive client feedback upon completion of each iteration.
  6. Test application to gather real-time feedback.
  7. Practice Scrum and XP principles such as re-factoring and pair programming to eliminate redundancies and optimize efficiency.