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;