The goal of the agile infrastructure is that it be built on a foundation of respect, value, and system thinking. The agile organization must embrace a set of principles and practices that create a culture of fostering successful projects.
Four key values should already be in place before the organization can truly move forward with an agile development and project management infrastructure. They must be:
Continually improving. Continuous improvement is at the very foundation of the agile process. No process is perfect, and when problems arise the whole team is responsible to stop, change the process and restart. And it’s key to do this without pointing fingers at other team members.
Respecting people. People hold the knowledge about processes, problems and needed improvements. Teams use their local knowledge, guided by their organization’s enterprise standards in order to create processes that will successfully deliver products and projects. It is essential – and expected – that each team member will deliver on his own commitments and that all team members depend on each other to do the same. It’s all about a mutual respect and trust.
Focusing on value. Team decisions are always based on what delivers business value – real, meaningful business value – quickly. The business must, of course, prioritize what features are necessary to satisfy their needs and those key features are what the agile team will focus on as the highest priority of functionality.
Removing impediments. The entire team is responsible for identifying and – as much as they possibly can – removing things that get in the way of the forward progress of the team and the team’s ability to deliver value on the project. If it is out of the team’s control to remove certain roadblocks, then they must turn to management to get this done. As with any type of project, if success is going to happen, roadblocks must be identified and eliminated.
Principles of agile teams
Optimizing the whole. The agile team needs to be focused on the entire portfolio of projects that are key to the organization. Look at the key values and do what is needed to maximize the overall flow of those values. At the project level, the business analyst, developers, and QA/testers must work together to create high quality code, high quality output and a high quality end solution. Bug free.
Eliminating waste. Anything in the project or development process that creates waste must be eliminated. If it doesn’t add value to the business, to the customer or to the end solution, then it has no place. If it delays development or is more than what the customer needs or wants, then it needs to be eliminated from the process. It is wasting resources, time and money…and likely adding risk.
Building quality into the project. Quality must be built into the project and final solution – it must be designed in. It can’t be tested in. Remember that QA and testing exist not to find bugs but to identify causes of bugs so that processes and solutions can be corrected.
Testing early and often. It is critical that the agile team understands what the business truly needs, that they produce a final solution that is what the business or customer needs, and that it is a quality solution. Testing should start as early as possible in the development process and remain an integral part of the project throughout in order to ensure a quality end solution.
Practices of agile teams
Delivering incremental value. Basically this is: deliver quality often. By delivering smaller quality deliverables, the team shows value to the business, promotes learning among team and project members, and definitely can improve overall morale with these frequent successes. This can also help identify problems or issues early on or highlight missed requirements, thus eliminating painful and expensive late-project rework that can often occur with waterfall development projects. Keeping the scope small between deliverables allows for quality, tested, focused delivery and frequent success – thus helping to ensure overall success for the final solution.
Fostering open communication on the team and project. Forget the need-to-know idea…efficient and effective communication is key to agile project and development success. So many misunderstandings can be eliminated just by practicing good, frequent communication. A free-flow of information and communication not only reduces the chances for misunderstandings and miscommunications – not to mention wasted effort – but it can also ensure that all team members are on the same page and working to reduce any uncertainties on the project.
Being ready to adapt to change. It is nearly impossible to isolate a project from change and the more an organization seeks to maximize the business impact of a technology investment, the more they tend to venture into new territories for the organization. Key decisions will need to happen and, therefore, all core project roles must remain available throughout to contribute to these decisions. The agile team must work together to address issues that arise based on the knowledge that each team member brings to the table. The contribution of all team roles to the decision-making process ensures that matters can be explored and reviewed from all relevant perspectives. Change will happen – the team must be working together to adapt in order to be successful.