Ch11
Transcription
Ch11
Agile Project Management Jim Highsmith Chapter 11 Scaling Agile Projects Scaling Problems Expected success rates on small (< 10 people), short (3 – 6 months) projects is high. Success rates on large(1,000+ people), long (> 18 months) projects is much lower. Problems with large projects: Increased bureaucracy Excessive paperwork Unmanageable communication networks Inflexibility “Management expertise has become the creation and control of constants, uniformity, and efficiency, while the need has become the understanding and coordination of variability, complexity, and effectiveness.” Dee Hock 1999 Scaling Factors Given two teams… one a 6-person collocated team and the other a 100-person team divided into eight feature teams. Task: Setting up and maintaining the process and tools for Build, Integration, and Testing (BIT) How does the 6-person and the 100-person team handle BIT? 6-person team: Handled collaboratively with the entire team making the decisions and sharing knowledge would be informal and interactive. Team members would rotate BIT maintenance activities informally 100 person-team and Build, Integration, and Testing tasks A part-time BIT team of 3-5 people would be drawn from feature team members who had expertise and interest in BIT BIT team would discuss issues, do research, & propose the process and tools. The proposal would be discussed with feature teams, with team members providing feedback BIT team would make final decisions, set-up the BIT environment & document the process. BIT team members would provide guidance Support of BIT would be done by a rotating team Collaboration and Coordination For an organizational perspective, agilists view all interactions as collaborative. Collaboration (working together to make a decision) is expensive… the BIT team collaborates to make decisions then coordinates those decisions with the feature teams. “Interpretation of Agile principles” … but as projects get larger, appropriate interpretation and application of the principles becomes difficult and more critical to success. A 100-person team will never feel like a 6-person team, but each can definitely be agile. The key is appropriately applying agile principles to organizational design, decision making and collaboration/coordination design. Uncertainty and Complexity • Uncertainty comes from issues such as market uncertainty, technical uncertainty, number of customers, and project duration. • Complexity comes from factors such as team size, team location, dependencies, and domain knowledge. • Key questions… Should the project be agile? How should we adapt agile practices for this type of project? and… do we have a culture that capable of applying Agile principles to their project work and responsibilities? Figure 11-1 An Agile Scaling Model Business Goals Organization Product Management Team Release/Project Management Team Feature Team Product Backlog Capability 1 Process Product Roadmap Capability 2 Feature 1 Feature 2 Feature 3 Story 1 Story 4 Story7 Story 2 Story5 Story 8 Story 3 Story 6 Story 9 Agile Values Release Plan Iteration Plan Building Large Agile Teams Bigger teams involve the need for more communication, more decisions, more meetings, more documents, and more politics… all of which are of value to the development of the project. Concerted effort in 4 areas is a perquisite: 1. 2. 3. 4. Organizational design Decision-making design Collaboration/coordination design Applying Agile principles Collaboration, coordination and knowledge sharing can result in too much communication, endless meetings, tons of documentation and emails. Organizational Design Hierarchical structures and not compatible with the core values of a “adaptive” workplace. “The political agenda was furthered d by the hierarchy chart, which had little to do with dynamic, highly functional information management teams. Hierarchical IT infrastructures established an atmosphere where politics flourished and collaboration floundered. Hierarchies also let to an embedded culture that fostered adversity and encouraged the consolidation of individual power gases, as opposed to delivering quality information to the enterprise. As power gases enlarged, struggles ensued and adversity grew. You soon had an environment where 80% of workers’ time was dedicated to working around the system, and only 20% was focused on doing their job. Hierarchical management structures are also a classic way to punish those that refuse to play the game and to reward those who know how to manipulate the political machinery” A Network Organizational Structure Figure 11-2 Feature Teams A-N Collaboration / Coordination Design What makes communications design so difficult…. is that it rests on a foundation of relationships… of trust, respect, appreciated cultural differences and shared context. A team “in sync” can get away with lower effective means of communicating because they have good relationship contexts for sharing information. Simple set of collaboration guidelines • • • • Use a wide variety of interaction modes Match interaction needs with collaboration practices Use lower-cost modes to the extent possible Use higher effectiveness modes on critical, higher-risk activities. Reference… to an approach to implementing large selforganizing teams. “Traveling pairs” “Every other iteration, a pair from one feature team could travel to the second site where they then pair with developers from the second team.” … transferring knowledge about the team’s features at a working level. “No matter how good the architectural decomposition of a product, two distributed teams working on the same product need a certain amount of working-level conversation and collaboration.” “Exchanging people will be much more effective than exchanging paperwork.” … or emails Decision-Making Design When there is high risk, lots of coordination and collaboration is needed. Framing questions for decision design: • What task are being accomplished by each feature and specialty team and what key decisions need to be made to complete these tasks? • What other teams are impacted by the decisions? • Do any of the impacted teams need to be involved in the discussions about the decision? • Who should make the decision (the feature/specialty team, the iteration manager, the product manager, the project leader, the project leader with the team)? • How and to whom should the decision results be communicated? • Who if anyone, should review the decision? Feature team guidelines: “If in implementing a story the team abides by guidelines established (architectural decisions made by the preceding process, for example) and that implementation does not appear to impact any other team, then the feature team is delegated the right to make all decisions relevant to their story.” “Decision-making design should be part of the working agreement that all agile teams develop. Teams should not make unilateral decisions on items that impact another team without engaging that team in the decision process. So, for example, a team could not change an interface design without coordinating it with other teams that use the interface.” How is a large agile team different from a large traditional team from an organizational perspective? 1. A large agile team has a flatter, less hierarchical structure – fewer layers of managers. 2. To the extend possible, decisions are pushed out to the feature teams or specialty teams. 3. Feature team members participate in specialty teams to ensure their input is heard and to take part in the decisions 4. Team decision making, whether project or technical decisions are being made, are accomplished in a participatory fashion. 5. Specialty teams are encouraged to issue guidelines, not fiats, and furthermore – like managers – they are encouraged to make as few decisions as possible. 6. Peer-to-peer (feature team to feature team) interactions and dependency management are encouraged. For example, rather than having a project leader manage inter-team dependencies, the teams themselves manage them through mechanisms such as Inter-team Communication Stories (ICS)… 7. The team embraces agile principles. Knowledge Sharing & Documentation Agile Documentation Guidelines • The fundamental issue is knowledge transfer – understanding, not documentation. • Knowledge transfer requires person-to-person interaction, particularly as the complexity of the knowledge increases. • Documentation should be barely sufficient, but not insufficient: User overviews rather than try to document all the details. • High-quality readable code and test cases, particularly when the test cases are automated, may be adequate for detailed requirements documentation. • Models are a form of documentation. Keep them light and barely sufficient also. Develop only those models that are useful to the development team, and develop them “with” the team. • Documentation should be as informal as possible – while boards, flip charts, digital pictures, wikis, etc. Agile Documentation Guidelines • • • • • (continued) Interactive, dynamic documentation is important in agile projects: Wiki, Web 2.0 Working software is one goal of development, enabling the ongoing enhancement of that software is a second. Think about the barely sufficient documentation to support both. Documentation requirements vary by industry, company, and project. Permanent documentation is hat which as organization is will to spend the money, and time, to maintain. Working papers are documents that are used during a project (and may be very informal) but are not maintained. Don’t confuse these two types. User documentation should be identified as a story and prioritized by the customer team just as software stories. Self-Organizing Teams of Teams Large agile teams consist of multiple feature and specialty teams… individuals are the agents in teams, whereas feature teams are the agents in a larger project. A network replaces the common hierarchical structure… Decision making and collaboration must be carefully designed… with discipline reflecting the rules of engagement across teams. What is needed: – The right leaders – Articulating the work breakdown and integration strategies – Encouraging the interaction and information flow across teams “The project leader’s role should be to facilitate the interactions between the teams, not the specific activities each team uses to produce deliverables.” Key inter-team task is managing dependencies, a task frequently relegated to the project leader… All to often dependency management falls into the same traditional trap… management by documentation and not conversation. Each project is unique… leadership needs to experiment with interaction practices just as it does with technical practices. Similarly, establishing inter-team rules of engagement and accountability are important. Example Rules of Engagement (Fig. 11-5) Feature Teams • Shall have input to, and participate in (the number of participating teams may be limited) architectural decisions that impacts tier work • Shall have the right to assess the impact of any architectural change and adjust estimates and schedules accordingly. • Shall have the right to request that the project leader review any architectural decision in which the team’s objection is overridden. Architecture Team • Shall receive prompt information about and feedback on proposed architectural plans. • Shall expect prompt notification of problems that feature teams encounter in implementing architectural decisions. Team Self-Discipline Individuals have responsibilities to their teams… teams must be self-disciplined in working within a larger selforganizing framework. Team behaviors closely parallel those of team members: • • • • Accepting accountability for project results. Engaging collaboratively with other feature teams. Work within the project self-organizing framework. Balance project goals and team goals. “When a team estimates how many stories it can deliver in an iteration, its members must factor in time to coordinate with other teams because team members will undoubtedly serve on specialty teams.” Process Discipline Larger teams and excessive process … problems. Example End of wave… integration of several modules causes a few days of extra work. Typically, the problem leads to additional meetings to correlate the work. The meetings may take more time that fixing the problem… as well as unanticipated consequences of implementing the fix. So… the issue is not to react and attempt to anticipate “every” problem and establish processes to do this… it’s cheaper and faster to fix problem but not spend time anticipating them. I’m not sure how Highsmith’s rule “Don’t always fix things that are broken” applies to this example.