Agile development methodologies can scale to match the needs of large projects involving multiple developers.
Agile software development methodologies promise great benefits, including shorter delivery times and greater flexibility in responding to rapidly changing requirements. These benefits are possible because Agile promotes free and easy interaction between people on the projects.
Indeed, the Manifesto for Agile Software Development states that individual programmers and their interactions are actually more important than the processes and tools being used. However, critics have claimed that Agile does not scale precisely because adding more people to the project increases the sheer volume of interactions that happen, leading to entropy in the system.
But, if we are aware of the importance of these interactions and why they are taking place then, arguably, a way might be found so Agile can be scaled to any level. The key is understanding the full meaning of the first principle: that the tools should be there to promote and encourage interactions between project members, not to get in their way.
For instance, looking at how developers might interact on a typical large Agile project, small teams will each be focused on building their own sub systems or features. Macro-level goals should then be matched with individual groups’ requirements, taking into account cross-team interdependencies.
If all these engineers are feeding into and from a single repository of code, then several hundred developers – organised as teams of teams - can come together and work effectively. In effect, the interactions within a team are kept local, with inter-team interaction happening only as needed.
This approach is even more necessary when considering that requirements repeatedly change, usually when the project scales to become a bigger entity. Collaboration and change management tools exist to serve these needs and create a central store of files for all developers to access.
For example, software configuration management (SCM) is increasingly being used to support Agile projects, even those involving hundreds or potentially thousands of developers.
With SCM, project members across separate teams can integrate and communicate fluidly as an Agile development job escalates in size and scope, whether they are located halfway around the world or in the same room. The policies and rules within the SCM system support the logical segregation of developers into their assigned teams, even if thousands of individuals are involved.
Of course, any development project has to show how it will achieve return-on-investment, particularly in the current economic environment. It is sometimes argued that Agile development is not always appropriate for all levels of the development lifecycle, especially the ‘infrastructure and foundation’ technologies in the IT infrastructure, such as a database.
However, Agile can still be used to put layers on top of that database to provide a new user experience, or an integration with another application. So, if the database needs an additional web-facing interface mechanism to plug into stock market indices, then those additional elements can be built inside the Agile environment
Ultimately, it is important to realise that – regardless of the size of the project involved - Agile development success cannot be bought as a package straight off the shelf. What is required is a combination of factors, including understanding the ‘culture’ of an Agile project, how individuals interact with one another, and knowing when and which tools to use to assist with the process.
Given the right degree of autonomy with the appropriate collaborative support, Agile is surely able to scale and support weighty, large-scale enterprise software engineering development.
Dave Robertson is VP, International for Perforce Software. He has 20 years experience in developing software and in selling and marketing software development tools with vendors both in Europe and the US.