We use Agile Scrum methodology for web and mobile development. Agile methodology has gained wide acceptance in the world. It is especially effective for developing technologically difficult custom web and mobile applications.
- In Agile, people and interactions are more important than processes and tools;
- Working code is more important than perfect documentation;
- Cooperation with customer is more important than contractual commitments;
- Response to changes is more important than sticking to a plan.
Development process is broken up into iterations, which usually last about 2 weeks each. Each iteration represents a whole development life cycle: planning, requirements analysis, design, programming, testing and documentation. Each iteration is aimed at receiving next stable release. Each following release either considerably improves the current version, or adds new functionality. After each iteration, the project team reviews project priorities.
Agile development methodology is especially effective for projects with limited timeframe. It requires minimal documentation at all stages of project development. Close interaction of customer with the development team provides quick response to customer requests and immediate adaptation to changes in requirements.
The cornerstone principles of Agile Project Management:
- Customer satisfaction with fast and frequent deliveries of useful working software.
- Working software is the principal measure of project progress.
- Changes in requirements should be welcomed even late in development. Agile development methods are optimized for changes so that customer can get a competitive advantage.
- Sponsors, developers and users should work at a sustainable pace
- The duration of each iteration should be from two weeks to two months, short intervals are preferred.
- Constant striving for technical perfection and robust system design increase agility.
- Potential system users, who are domain experts for the project, and developers should work together every day during the whole project.
- Simplicity is important in Agile methodology – it is the art of avoiding as much work as possible.
- Involve motivated people to work on the project. Provide them with everything necessary, and trust them – they will do the job.
- Best architectures, requirements and system designs are created by self-organizing teams.
- The most efficient way of information exchange both inside the development team and for developers with the outside world is direct communication.
- A team will regularly reflect on how to increase efficiency, and then make changes in their approach to software development.