Agile For Integration Projects?
In recent years the agile approach to software development has become increasingly used in the IT industry, and as experience has been gained and the approach has matured it is now often the preferred approach for software development projects. Of course with success in one area (software development), there can be a desire to replicate that success, using that approach, in other types of projects - for example projects that are predominantly software integration oriented. This leads to some interesting questions - is the agile approach appropriate for other types of projects such as integation projects? Are there good examples of success out there?
To elaborate, a core part of the agile approach is a core set of disciplines and working practices that help make agile software development successful including:
- Co-location of developers
- Continuous testing
- Daily stand up meetings
- Short delivery iterations
These practices work well for straight software development projects, especially those that are developing a product where a single party is responsible for the development. However, projects that have a greater degree of integration involved can run into challenges if the same disciplines aim to be applied:
- Integration projects typically require multiple vendors. If those vendors need to make changes to their products, they are typically doing this where their software development takes place, this is invariably not the same location as the integration project. Of course, not all integration projects require vendors to change products but for large projects this is often the case.
- Because there are often multiple vendors involved, ownership of a particular area of a solution can be a problem. This typically becomes a problem when a given integration point is not working as expected and can end up with vendors pointing at each other and saying "it's not our problem".
For a given solution, one vendor may be heavily involved and another may only have a small part. This typically means that some vendors will be involved in the project on a continuous basis while others will drop in and out depending on their part in the project. This can make it difficult to coordinate stand up meetings and team related activities.
Testing is typically a lot more challenging because it doesn't just involve deploying a software release into an environment, it requires multiple vendors to coordinate their releases.
Looking at these challenges more carefully, communication is a key aspect - something that traditional agile addresses by forming a strong team and keeping it together in the same location. Optimation's experience with integration oriented projects, and in particular our clients preferences about how those projects are run, is that they tend to fall back into a waterfall process.
With instant messaging, social networking & collaboration tools, perhaps integration projects can be run in a (more) agile manner? Feedback from anyone out there with experience & ideas in this area would be welcome.