This week we tackle teams in XP and why XP works based on the Theory of Constraints in Extreme Programing Explained, Second Edition (2005). The two chapters are linked by the idea that work is delivered most effectively when teams or organizations achieve a consistent flow.
Chapter 10 -The Whole XP Team
The principal flow, as described in our re-read of Goldratt’s The Goal, proves that more value is created when a system achieves a smooth and steady stream of output. In order to achieve a state of flow, everyone on the team needs to be linked to the work to reduce delay and friction between steps. Implementing the steps necessary to address complex work within a team is often at odds with how waterfall projects break work down based on specialties. Unless the barriers between specialties are broken down it is hard to get people to agree that you can work incrementally in small chunks versus specialty-based phases such as planning, analysis, design and more.
Every “specialty” needs to understand their role in XP.
Testers – XP assumes that programmers using XP take on the responsibility for catching unit-level mistakes. XP uses the concept of test-first programming. In test-first programming, the team begins each cycle (sprint in Scrum) by writing tests that will fail until the code is written. Once the tests are written and executed to prove they will fail, the team writes the code and runs the tests until they pass. It is at least a partial definition of done. As the team uncovers new details, new tests will be specified and incorporated into the team’s test suite. When testers are not directly involved writing and executing tests they can work on extending automated testing.
Interaction designers – Interaction designers work with customers to write and clarify stories. Interaction designers deliver analysis of actual usage of the system to decide what the system needs to do next. The interaction designer in XP would also encompass the UX and UI designer roles as they have evolved since XP Explained was written and updated. The designer tends to be a bit in front of the developers to reduces potential delays.
Architects – Architects help the team to keep the big picture in mind as development progresses in small incremental steps. Similar to the interaction designer, the architect evolves the big picture just enough ahead of the development team to provide direction (SAFe call this the architectural runway). Evolving the architecture in small steps and gathering feedback as development progress from incremental system testing reduces the risk that the project will wander off track.
Project managers – Project managers (PM) facilitate communication both inside the team and between customers, suppliers and the rest of the organization. Beck suggests that the PMO act as the team historians. Project managers keep the team “plan” synchronized with the reality based on how they are performing and the world happening outside the team.
Product managers – Product managers write stories, pick themes and stories for the quarterly cycle, pick stories in the weekly cycle, answer questions as development progress and helps when new information is uncovered. The product manager helps the whole team prioritize work. (Note: it is different from the concept of the product owner in Scrum). The product manager should help the team focus on pieces of work that allow the system to be whole at the end of every cycle.
Executives – The executives’ role in XP is to provide an environment for a team so they have courage, confidence, and accountability. Beck suggests that executives trust the metrics. The first metric is the number of defects found after development. The fewer the better. The second metric that executives should leverage to build trust in XP is the time lag between idea inception and when the idea begins generating revenue. This metric is also known as “concept to cash” (faster is better).
Technical writers – In XP, the technical writer role generates feedback by asking the question, “How can I explain that?” The tech writer can also help to create a closer relationship with users as they help them to learn about the product, listen to their feedback and then to address any confusion between the development team and the user community. Embedding the tech writer role into the XP team allows the team to get feedback on a more timely basis, rather than waiting until much later in the development cycle.
Users – Users help write user stories, provide business intelligence and make business domain decisions as development progress. Users must be able to speak for the larger business community, they need to command a broad consensus for the decisions they make. If users can’t command a broad consensus from the business community for the decisions they make, they should let the team work on something else first while they get thier ducks in a row.
Programmers – Programmers estimate stories and tasks, they break stories down into smaller pieces, write tests, write code, run tests, automate tedious development processes, and gradually improve the design of the system. As with all roles in XP, the most valuable developers combine specialization with a broad set of capabilities.
Human resources – Human resources needs to find a way to hire the right individuals and then to evaluate teams. Evaluating teams require changing the review process to focus on teams, rather than on individuals.
XP addressed roles that most discussions of Scrum have ignored, but that are needed to deliver a project. Roles should not be viewed as a rigid set of specialties that every project requires at every moment. Teams and organizations need to add and subtract roles as needed. XP team members need to have the flexibility to shift roles as needed to maximize the flow of work.
Chapter 11 – The Theory of Constraints
In order to find opportunities for improvement in the development process using XP, begin by determining which problems are development problems and which are caused outside of the development process. This first step is important because XP is only focused on the software development process (areas like marketing are out of scope). One approach for improving software development is to look at the throughput of the software development process. The theory of constraints (ToC) is a system thinking approach for process improvement. A simple explanation of ToC is that the output of any system or process is limited by a very small number of constraints within the process. Using the ToC to measure the throughput of the development process (a system from the point of view of the ToC) provides the basis for identifying constraints, making a change and then finding the next constraint. Using the ToC as an improvement approach maximizes the output of the overall development process rather focusing on the local maximization of steps.
The theory of constraints is not a perfect fit for software development because software development is more influenced by people, therefore, is more variable than the mechanical transformation of raw materials. An over-reliance on the concepts like the ToC will tend to overemphasize process and engineering solutions over people solutions, such as a team approach. This is a caution rather than a warning to avoid process approaches. In addition, systems approaches can highlight issues outside of development’s span of control. Getting others in the organization to recognize issues they are not ready to accept or address can cause conflict. Beck ends the chapter with the advice, “If you don’t have executive sponsorship, be prepared to do a better job yourself without recognition or protection.” Unsaid is that you will also have to be prepared to for the consequences of your behavior.
Previous installments of Extreme Programing Explained, Second Edition (2005) on Re-read Saturday: