Our first exercise is to do a little compare and contrast review of our team, our environment, and our customers. All three are critical elements for any project without regard for the under lying process. Many projects fail when the team lacks the specific skills required. Many teams fail when they are not provided the necessary software or hardware resources, and no amount of material support can protect a project from irrational or more likely, delusional customers.
Traditional and Agile teams need to be assembled from available personnel. While it is typical for traditional teams to be selected from a pool of titles (after all one Senior Dev III is just as good as any other Senior Dev III) Agile teams tend to self select, one individual at a time. Each person considered for their specific soft and technical skills.
Similarly, while traditional environments and Agile environments each provide Source control, network infrastructure, shared development environments separate from test and production, as well as some form of access controls it is the manner by which they are managed that separates the two. Traditionally the setup and management of these would be delegated to an in-house infrastructure group Separate from the development team. Not so in an Agile environment. Agile teams distribute this load with some part allocated across all team members and the remainder done by infrastructure focused members of the team... Not an outsider.
Both traditional and Agile teams face difficult customers. There are two notable factors differentiating Agile from traditional teams;
- Upfront, traditional teams work to understand their customer's requirements, while Agile teams tend to accept not knowing, instead they look to include customers within their team throughout the entire SDLC as compared to excluding the customer during the main development activities..
- Throughout the SDLC, traditional teams strive to build what was defined by the contract. Deviations are first contractual issues requiring formal change management to control identification, definition and cost negotiations. Instead of building what is concisely described by a customer representative, the Agile team embraces change and educates the customer on the many ways change happens. Based on the core concept of shared responsibility change is a scope and priority exercise first and only in the most extreme cases contractual.