Agile in the Enterprise: How Tools and Processes Enable Interactions


schedule, scope, and budget. Unfortunately for customers, some companies also include quality in this list. Let's for the sake of argument assume that quality is fixed. Also, I'll assume that an organization will make the appropriate decision with regard to schedule. Either it's fixed, or a Scrum-like approach is applied and a decision to ship is made when appropriate business value has been delivered. So that leaves us with budget which includes resources and resources are mostly people.
In large software organizations, efficient management of resources is critical. To deliver the most value, we've got to make sure we're always working on the most important stuff, figure out how to get more efficiency out of existing resources, and figure out how to get more resources for a fixed budget (outsource!). The cold hard business reality is that well-managed organizations will pursue all of these avenues. Resource management, a core capability of Project and Portfolio Management (PPM) tools, is becoming a best practice in large software development organizations. PPM tools provide resource management capabilities that allow organizations to understand and manage to their resource capacity, ensure they are maintaining the appropriate balance of resource skills and experience, and efficiently allocate resources and teams to new projects and enhancement requests. Again, this is way overkill for smaller teams, but it's nearly impossible without tool support in large global enterprises that have resources separated by both time and distance.
Tracking Deferred Customer and Market Requirements
Resource management must also be accompanied by efficient backlog management. To make good resource and team allocation decisions, you must have a clear understanding of current and upcoming backlog items. With small co-located teams this is simple. Index cards and whiteboards are effective tools for the team leads (e.g. ScrumMaster, Product Owner) to assign backlog items to individuals. But what do we do when the team is geographically distributed? How do we collaborate with team members in India, China or the Ukraine? I wouldn't recommend faxing or overnighting the index cards. Obvious choices here are issue and requirements management systems. These systems not only help to organize and prioritize the backlog, but also can handle the assignment and status tracking of issues, requirements and user stories. And, as scoping decisions are made during fast and furious development cycles, these systems will help retain information for future release planning.
Providing Visibility and Governance
The object model of application development processes and data is an academic's dream. We can relate the earliest conception of a software requirement down to a defect discovered in a line of code five years later. It's hard to refute the value here until you start to understand the process overhead this implies. And, this is where we have to achieve a balance with top-down compliance-driven visibility and governance initiatives and application development agility.
Capturing key decisions and maintaining relationships amongst the key development artifacts is critical to the business. But this needs to be done in a manner that is transparent to the development team. If it gets in a developer's way of writing code, it will be resisted. Today's application lifecycle management (ALM) environments capture and manage the critical development artifacts and metrics. As these tools mature, they are leveraging the interconnected model and providing automated refactoring and impact analysis support. Further, through integration with PPM and reporting systems, visibility into key metrics and decisions is automatically presented to business stakeholders.
Accommodating Process Heterogeneity
Simplistic models for managing the backlog also don't work for large scale application development where hundreds of applications and/or products may be under development or in various stages of production

AgileConnection is a TechWell community.

Through conferences, training, consulting, and online resources, TechWell helps you develop and deliver great software every day.