I have been working on Agile projects for past couple of years. Due to the distributed teams we have in our organization there are various challenges to make Agile work and scale. Some of the challenges are merely technical while others are process related and organizational.
Role of organization in promoting Agile
Before starting with anything else I would like to refer to the Agile manifesto and the principles on which Agile is based. These are documented in the link http://agilemanifesto.org/principles.html.
The point I would like to highlight is “Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.”. Many a times organizations forget this point. This especially happens when there is lot of hierarchy involved in decision making.
Agile works on the basis of collaboration. But in an hierarchical organization things don’t move fast enough and they start affecting the progress of the Agile team. If the team doesn’t resolve its impediments in timely manner work is not going to get done within stipulated time and budget.
One example that comes to my mind is when different teams are responsible for different needs of the organization. We have teams which maintain the infrastructure needs of the developer teams. In order to test our software on different operating systems we need to build machines with those operating systems installed on it. But many a times it happens that the infrastructure teams are busy with some other project and do not have enough bandwidth to support our requirement.
Many a times simple things like giving Administrator rights to a developer on a machine where he is supposed to develop are sacrificed under the pretext of security. Getting the admin rights becomes a long process involving approvals from various people in the organization. This clearly shows that the organization doesn’t trust its people in doing the job.
Another problem is when the teams give requirements for developer environment, infrastructure teams ignore them and build systems with whatever they have as a template. On many occasions we have requested systems with lets say 4 GB RAM and 30 GB hard disk space on C drive. But the infrastructure team comes back with a machine which they have built from a template which has 2 GB RAM and 20-25 GB space on C drive.
This is clearly against the Agile principle of providing the team what it needs. If we go back to the infrastructure team saying we need 4 GB of RAM to run Visual Studio, they start pointing to the hardware requirements for Visual Studio which says minimum 1 GB is enough. I would say they look only at the minimum requirement. In practice anyone who has worked on Visual Studio knows that even with 4 GB of RAM it just works out to be a good solution.
Organizations should realize that adopting Agile involves change at all levels. Its not just enough to have teams formed across globe and start having daily scrum and scrum of scrum calls. There needs to be involvement from all stakeholders and every attempt should be made to remove impediments at the earliest. This would definitely help the teams to stay motivated and deliver a quality software.