Agile methodologies have been getting a lot of press lately. Falling somewhere between strict waterfall style development and free-for-all cowboy coding they attempt to bring some method to the madness and let programmers do what they do best.
Although there are differences in terminology, most agile methodologies have a few things in common. Firstly they do things in small increments. This iterative method of software development has distinct advantages. It allows for changes to be made without significant disruption and always keeps a goal in clear sight. That goal is usually to have some sort of working release at the end of each iteration.
The team size for an Agile project is critical. Between five and nine developers is a good size. Any more and it becomes too difficult to keep track of each developer's progress, any fewer and you run the risk of devolving into an unstructured unit. Team selection is also critical. An agile team is no place for inexperienced developers. Everyone is expected to be accountable to the rest of their team and commit to iteration goals. Likewise there is no room for ivory-tower specialists who do one thing and one thing only. Every team member should have at least one specialisation and a good cross-section of general skills that will enable them to be fully utilised each iteration. Keeping the team constant is important. Moving people in and out of the team interrupts the flow of the project and, as such, specialists should only be brought in when absolutely neccessary