Agile is really designed around software projects. Infrastructure is a different animal. With an infrastructure project some things start to break down:
- You usually aren’t writing much code, maybe some database install scripts so no unit tests.
- Often there’s no continuous integration to speak of.
- Configuration tasks on new software are often difficult to estimate.
- Many tasks end up being time-boxed research items.
- Team members tend to be specialists DBAs or Linux system admins.
- Most of your team are system admins, but often they aren’t dedicated.
I’ve done a few of these now and generally the most difficult part has been having dedicated staff. System admins and DBAs structure their days around reacting to issues and answering many small requests. The idea of dedicating whole days or weeks to a project is novel. Too novel perhaps as often their management chains are unwilling to dedicate resources.
Our approach has been to use some Agile practices like daily stand-ups and task boards, but these practices haven’t made for smooth infrastructure projects. Since our QA team has been investing in automated functional tests we now have regression suites for some of our major projects, but that’s about the only automation we’ve been able to make use of. It often comes down to a PM/Scrum Master who’s willing to constantly remove impediments by walking around making sure the project keeps moving forward.