"...In iterative and agile development organizations, adaptive and client-driven planning is forefront. Client-driven development implies that the choice of features for the next iteration or release comes from the client. The focus is on whatever the client perceives as the highest business value. Still, many development organizations do not consult the client, but instead isolate the choice of features to the business analyst or product marketing teams. Prioritization of features is done by the product managers via their interpretations of the market trends and competition. Unclear and vague requirements are passed to the development teams, who typically have even less contact with the customer. They code the features to their perceptions (which are far removed from the customer's viewpoint). Clients often do not see the application until after code freeze or during a formal beta cycle, which is too late.
In this paper, I offer suggestions for how we can change this cycle in our organizations and get early and continuous customer involvement. I provide examples of common problem scenarios based on my personal experience in software development projects. And although these examples illustrate a software development lifecycle, the techniques I describe can be used by anyone responsible for verifying and gathering requirements."
Laura Rose, Quality Engineering Manager, IBM, Software Group
Involving customers early and often in a software development project
суббота, 17 июля 2010 г.
суббота, 10 июля 2010 г.
Agile critics on weaknesses of Agile
Donald Patti.Ten Weaknesses of the Agile Methodology
http://www.pmhut.com/ten-weaknesses-of-the-agile-methodology
1.True Agile is rarely practiced. Long-time practitioners will tell you, “It’s Agile – not agile”. Without a doubt, the biggest single problem I have encountered in Agile-practicing shops in the past decade has been that too few people truly understand and practice Agile. In many cases, software developers, development managers and consultants alike mistake Agile for its lowercase sibling, agile, and assume that Agile is all about flexibility and absence of process.This is far from the truth. Agile has formal rules and structure, though they are quite a bit different from those of other development approaches. Agile is iterative, it is adaptive and it is supported by some outstanding tools and techniques, like burn-down charts, product backlogs, user stories and stand-ups. Most important, Agile is not anarchy. It does not mean that everyone does whatever they want and there’s no sense of organization, despite the fact that you may feel this is the case.
2.Heavy customer interaction is essential. Reflected in principles four and five of the Agile Manifesto, heavy customer interaction is one of the biggest benefits of Agile, but it also becomes a weakness in some environments. Consider, for example, situations where the customers or users of the software being developed do not have the time available to meet with members of the software development team on a frequent basis? What if the key customer is the CEO, who often has more important matters to address? What if you’re not permitted to talk with the users?One important thing to know about Agile development teams is that they are high maintenance – they work quickly, but they also require much more time and attention from the business side to be able to work quickly. If that time cannot or will not be spared for their benefit, using an Agile approach will bring little gain over a Waterfall approach.
3.Agile thrives with co-located teams. In a typical Agile environment, the Agile development team and the business users are located in the same physical location, such as the same floor and cube space, to increase interaction within the team and with the customer. This technique is highly effective, but it is also not always practical. In many cases, the line-of-business does not have the space to temporarily house the development team members. In other cases, the development team is national or international, so it is simply impossible or cost-prohibitive to have some members of the team on site.
4.Agile has difficulty scaling for large projects and large organizations. When run properly, an Agile development team is typically in the three-to-eight person range, being made up of the software product manager, a team leader (often the Scrum Master), one-to-three developers, and in some cases a designer, an business analyst and a tester. In many cases, the designer, analyst and test roles are shared by the leader and the developers, so the team could be as small as three people. With its heavy emphasis on customer interaction, self-organizing teams, verbal-communication over-written-documentation, prototyping and requirements flexibility, it becomes extremely difficult to coordinate work as an Agile team grows. For example, one developer may be working on an order entry screen that relies upon data in a product catalog or inventory management system being created by an entirely different group within the team. These two need to talk to make certain their two parts of the system work well together, or they’ll end up with two incompatible parts, which is not a problem with a small development team sitting side by side. Assume, instead that the two developers share work with thirty other team members and they are thousands of miles apart. How likely are they to discuss the shared work area? How hard will it be to uncover their shared interest via daily standup meetings? The scalability problem with Agile is not minor and it shouldn’t be overlooked. I’ve seen this problem wreak havoc in three businesses and three large-scale projects to-date, so it’s not to be taken lightly.
5.Agile is weak on architectural planning. While software architecture is not entirely like building/construction architecture, they do share some qualities, including the need for a well-defined architecture up-front. In construction, a good building architect determines the structure of the building, the materials to use and integrates the architecture into the landscape long before the first nail is hammered. Similarly, a reliable software architecture and the software platform are selected before the heart of the software is developed. Otherwise, there’s a good chance much of the work will need to be thrown away, much like a make-shift shack in a third-world shanty town. The XP approach does have architectural spikes, but on large scale projects it may take many weeks or months to choose and verify that a particular set of technologies is the most appropriate one, something that can hardly be done in a few days within a single iteration. Yet, the decision on which technology platform to use and how to structure the system is so critical, because it not only affects the success of the overall project or program, it binds the business to that architecture for years to come.This weak-architecture problem is only an issue when the architecture and the platform are not known or pre-determined. In many larger businesses, software architecture and platform selection are done separately from software development via enterprise architecture and architectural roadmaps, which often takes the burden away from the Agile software team. However, if the platform is not known prior to the start of the project and the architectural approach is new or unproven, then the Agile software approach will struggle to define and deal with architecture.
6.Agile has limited project planning, estimating and tracking. There are tools available in the Agile arsenal for planning estimating and tracking, but as Agile proponents will tell you, there’s very little emphasis on these core aspects of project management. By design, Agile minimizes planning through the use of backlogs – prioritized to-do lists of software product features – and by fixing deadlines instead of scope. In most cases, estimating level-of-effort is done for each iteration (sprint), with only rough estimates for for each release.Efforts to track progress vary – some projects ask the developer to mark a specific task on the backlog as “done”, while others ask team members to report hours while tracking which work items are designed, developed an tested as though they flow through a miniature life-cycle in each iteration.In most cases, this lightweight planning, estimating and tracking process suits small, non-strategic projects well. But often is not acceptable when the customer is a third-party who requires scope and cost defined via contract or a senior manager who wants to know what will be provided, when it will be done and how much it will cost.
7.Agile requires more re-work. Because of the lack of long-term planning and the lightweight approach to architecture, re-work is often required on Agile projects when the various components of the software are combined and forced to interact. In Agile-speak, this is roughly called “refactoring” and it is both expected and budgeted for in each iteration after the first. Certainly, refactoring has its benefits in that one team member does not have to wait for the other to begin work. However, in a worst-case scenario, major portions of code may need to be re-written when two or more developers are not in sync, resulting in higher and higher re-work costs as the number of iterations increases.
8.Challenges making contractual commitments. For many projects, the client and/or senior management want commitments about the triple-constraints – what will be provided (scope), when it will be provided (time), and how much it will cost (cost). For Agile projects, in particular, it is extremely difficult to prepare estimates for fixed-bid contracts and its not uncommon to see senior managers pound their fists on the table when they fail to received detailed estimates.
9.Agile increases potential threats to business continuity and knowledge transfer. By nature, Agile projects are extremely light on documentation because the team focuses on verbal communication with the customer rather than on documents or manuals. As a result, a switch of a single team member, much less an entire development team, away from one product and over to another can significantly impact the organization’s ability to maintain and improve that product. Much of the knowledge resides in the team’s head and is gone when they are.
10.Agile lacks the attention to outside integration. Both large software development projects and small projects in large environments require multiple points of integration with other systems in their universe, such as sharing data with a downstream system (from order processing to accounting) or retrieving data from another system (such as inventory quantities to order processing).
http://www.pmhut.com/ten-weaknesses-of-the-agile-methodology
1.True Agile is rarely practiced. Long-time practitioners will tell you, “It’s Agile – not agile”. Without a doubt, the biggest single problem I have encountered in Agile-practicing shops in the past decade has been that too few people truly understand and practice Agile. In many cases, software developers, development managers and consultants alike mistake Agile for its lowercase sibling, agile, and assume that Agile is all about flexibility and absence of process.This is far from the truth. Agile has formal rules and structure, though they are quite a bit different from those of other development approaches. Agile is iterative, it is adaptive and it is supported by some outstanding tools and techniques, like burn-down charts, product backlogs, user stories and stand-ups. Most important, Agile is not anarchy. It does not mean that everyone does whatever they want and there’s no sense of organization, despite the fact that you may feel this is the case.
2.Heavy customer interaction is essential. Reflected in principles four and five of the Agile Manifesto, heavy customer interaction is one of the biggest benefits of Agile, but it also becomes a weakness in some environments. Consider, for example, situations where the customers or users of the software being developed do not have the time available to meet with members of the software development team on a frequent basis? What if the key customer is the CEO, who often has more important matters to address? What if you’re not permitted to talk with the users?One important thing to know about Agile development teams is that they are high maintenance – they work quickly, but they also require much more time and attention from the business side to be able to work quickly. If that time cannot or will not be spared for their benefit, using an Agile approach will bring little gain over a Waterfall approach.
3.Agile thrives with co-located teams. In a typical Agile environment, the Agile development team and the business users are located in the same physical location, such as the same floor and cube space, to increase interaction within the team and with the customer. This technique is highly effective, but it is also not always practical. In many cases, the line-of-business does not have the space to temporarily house the development team members. In other cases, the development team is national or international, so it is simply impossible or cost-prohibitive to have some members of the team on site.
4.Agile has difficulty scaling for large projects and large organizations. When run properly, an Agile development team is typically in the three-to-eight person range, being made up of the software product manager, a team leader (often the Scrum Master), one-to-three developers, and in some cases a designer, an business analyst and a tester. In many cases, the designer, analyst and test roles are shared by the leader and the developers, so the team could be as small as three people. With its heavy emphasis on customer interaction, self-organizing teams, verbal-communication over-written-documentation, prototyping and requirements flexibility, it becomes extremely difficult to coordinate work as an Agile team grows. For example, one developer may be working on an order entry screen that relies upon data in a product catalog or inventory management system being created by an entirely different group within the team. These two need to talk to make certain their two parts of the system work well together, or they’ll end up with two incompatible parts, which is not a problem with a small development team sitting side by side. Assume, instead that the two developers share work with thirty other team members and they are thousands of miles apart. How likely are they to discuss the shared work area? How hard will it be to uncover their shared interest via daily standup meetings? The scalability problem with Agile is not minor and it shouldn’t be overlooked. I’ve seen this problem wreak havoc in three businesses and three large-scale projects to-date, so it’s not to be taken lightly.
5.Agile is weak on architectural planning. While software architecture is not entirely like building/construction architecture, they do share some qualities, including the need for a well-defined architecture up-front. In construction, a good building architect determines the structure of the building, the materials to use and integrates the architecture into the landscape long before the first nail is hammered. Similarly, a reliable software architecture and the software platform are selected before the heart of the software is developed. Otherwise, there’s a good chance much of the work will need to be thrown away, much like a make-shift shack in a third-world shanty town. The XP approach does have architectural spikes, but on large scale projects it may take many weeks or months to choose and verify that a particular set of technologies is the most appropriate one, something that can hardly be done in a few days within a single iteration. Yet, the decision on which technology platform to use and how to structure the system is so critical, because it not only affects the success of the overall project or program, it binds the business to that architecture for years to come.This weak-architecture problem is only an issue when the architecture and the platform are not known or pre-determined. In many larger businesses, software architecture and platform selection are done separately from software development via enterprise architecture and architectural roadmaps, which often takes the burden away from the Agile software team. However, if the platform is not known prior to the start of the project and the architectural approach is new or unproven, then the Agile software approach will struggle to define and deal with architecture.
6.Agile has limited project planning, estimating and tracking. There are tools available in the Agile arsenal for planning estimating and tracking, but as Agile proponents will tell you, there’s very little emphasis on these core aspects of project management. By design, Agile minimizes planning through the use of backlogs – prioritized to-do lists of software product features – and by fixing deadlines instead of scope. In most cases, estimating level-of-effort is done for each iteration (sprint), with only rough estimates for for each release.Efforts to track progress vary – some projects ask the developer to mark a specific task on the backlog as “done”, while others ask team members to report hours while tracking which work items are designed, developed an tested as though they flow through a miniature life-cycle in each iteration.In most cases, this lightweight planning, estimating and tracking process suits small, non-strategic projects well. But often is not acceptable when the customer is a third-party who requires scope and cost defined via contract or a senior manager who wants to know what will be provided, when it will be done and how much it will cost.
7.Agile requires more re-work. Because of the lack of long-term planning and the lightweight approach to architecture, re-work is often required on Agile projects when the various components of the software are combined and forced to interact. In Agile-speak, this is roughly called “refactoring” and it is both expected and budgeted for in each iteration after the first. Certainly, refactoring has its benefits in that one team member does not have to wait for the other to begin work. However, in a worst-case scenario, major portions of code may need to be re-written when two or more developers are not in sync, resulting in higher and higher re-work costs as the number of iterations increases.
8.Challenges making contractual commitments. For many projects, the client and/or senior management want commitments about the triple-constraints – what will be provided (scope), when it will be provided (time), and how much it will cost (cost). For Agile projects, in particular, it is extremely difficult to prepare estimates for fixed-bid contracts and its not uncommon to see senior managers pound their fists on the table when they fail to received detailed estimates.
9.Agile increases potential threats to business continuity and knowledge transfer. By nature, Agile projects are extremely light on documentation because the team focuses on verbal communication with the customer rather than on documents or manuals. As a result, a switch of a single team member, much less an entire development team, away from one product and over to another can significantly impact the organization’s ability to maintain and improve that product. Much of the knowledge resides in the team’s head and is gone when they are.
10.Agile lacks the attention to outside integration. Both large software development projects and small projects in large environments require multiple points of integration with other systems in their universe, such as sharing data with a downstream system (from order processing to accounting) or retrieving data from another system (such as inventory quantities to order processing).
Подписаться на:
Комментарии (Atom)