|
Our company is using Agile software development technologies for the most of the time. The eXtreme Programming (XP) practice is the way to maximize chances of successful project completion even when the initial Customer requirements are not clear or a subject to change (and this is the case for the big chunk or even for the most projects in software outsourcing). The XP practice allows incorporating new changes quickly.
Below are the examples of XP techniques used in our projects and their effect for the Customer.
Release planning
Release Planning is a practice where the Customer presents the desired features to the programmers, and the programmers estimate their difficulty. With the cost estimates provided by the development team and with knowledge of the importance of the features, the Customer lays out a plan for the project. Initial release plans are imprecise: neither the priorities nor the estimates are truly solid, and until the team begins to work, we won't know just how fast they will go. Developers regularly update planes in order to provide all info for the customer and to trance potential deadlocks ASAP. This technique allows creating correct estimates and minimizing risk of going out of the budget even when initial requirements are not clear.
Iteration Planning
Iteration Planning is a practice where the team is given direction every couple of weeks. The two-week period is called "iteration", and the team delivers running useful software at the end of the each iteration. During Iteration Planning, the Customer presents the features desired for the next two weeks. The team is doing an estimate of the required effort and the Customer has final say in what will go to the iteration and what will not. This technique especially efficient for the product which has to work in any moment of time. I.e. when the gradual upgrade/refactoring is going on. It allows not only manageable amount of changes once upon the time but also minimizes risk to derail working system.
Small Releases
Small Releases is a practice closely related to Release and Iteration Planning. It allows releasing new features fast and providing good testing coverage of the product in any moment of the product life cycle.
Pair Programming
Pair Programming is a practice when software is built by two developers sitting at the same machine. We use it extensively especially for the critical tasks, it allows not only the better code and less costs associated with fixing bugs later but the project knowledge is distributed more evenly among the team thus the risks associated with unforeseen difficulties when the key developer is unavailable and learning curve are greatly reduced.
Continuous Integration
Continuous Integration is a practice of making several builds a day instead of a single daily or weekly one. This helps to keep software product integrated at all times.
|