Understanding the potential barriers to change will help you make the right choices of timing, project, and approach. Some of the more important questions to ask include in the following:
- How supportive is senior management of the change? The measurements and milestones
they establish can easily derail an iterative approach, as is the case when they ask even seemingly
innocent questions such as “When will the design be completed?” or “When will requirements be
signed-off?” - What is the scope of your authority to make changes? How much of the development lifecycle
are you responsible for? For example, the requirements might have already been specified in a
format and to a level of detail that would make it more difficult to adopt an iterative approach. - What are the team’s feelings about the changes? How enthusiastic is the team about iterating?
To achieve the transition to iterative development, you will need the support of the team,
especially the other members of the leadership team. - What else does the team have to do? How many other projects and initiatives is the team involved
in? If the team is not focused on and dedicated to the project, the transition to iterative
practices will probably be slower and take more time and energy to complete. - What capability do you need to improve? It is important to understand the capability of the
team and how well the current capability supports the proposed iterative approach. For example,
is there any testing capability in the team? Testing will be needed from the first iteration, which is
often a problem in companies organized around the phases of a waterfall approach. Read More


One of the frequent questions we are asked is "how can I get the time to explore needs when the business says that it is already done - "it's in the business case", even when it is obviously not complete? This is actually a pretty common occurrence - nobody wants to take time to understand needs because they think it has already been done.
Most project management approaches address risk in a fairly superficial way: risk mitigation is viewed as an important activity, but one that is largely a distraction from the main effort of the project. Risks are identified at the start of the project, they are usually assiged to someone to address the risks, but these risk-mitigation activities are largely viewed as things that take away from the project work. In practice the risks are only identified once and then they are largely forgotten in the large amount of work to be done.
As technologists, we tend to collect very detailed information and present it in a very technical way. We talk about things like process maturity levels, and productivity indexes. I have even seen some measurement data about Agile maturity models that attempt to show how agile we are. The problem with this kind of approach is it doesn’t provide anything that the business and the customers can relate to.
Iterative development is simple in concept: it is simply breaking a large project down into a series of smaller projects that deliver value in smaller steps. The hard thing about adopting it is that it requires the project team members and stakeholders to adopt a new set of attitudes and behaviors about how they work together to achieve a common goal. This requires subtle but significant changes on the part of all participants, especially if they have been working on conventional projects for many years. In short, these changes include the following: