Agile software development techniques are being increasingly adopted by organizations. Agile usage continues to grow and achieve more universal acceptance. The logical evolution has been to apply Agile methodology to larger projects and organizations. However, this evolution is fraught with challenges that naturally inhibit agility – such as team communication, technical complexity, organizational complexity (including company cultural, organization and compliance constraints), large team size, multiple teams, and geographic separation. In this blog, we examine how integrated project requirements, design and project management tools can be exploited for scaling Agile in the enterprise.
Scaling agile requires the application of core principles to large groups of people. To accomplish this, we need to enable these people to be more connected to their work and its impact, despite being part of a larger system. This process can be effective if the Agile approach can be scaled by creating consistently defined requirements and design elements at different levels of scale throughout the organization. Rather than build larger teams, the project should be organized to comprise smaller, cross-functional teams that are closely integrated together into a larger whole. In this way, the project team remains the core unit and owns its working agreements, communication pathways and business rules.
Team Communication
In our experience, poor team communication is the single biggest hurdle in scaling Agile in the enterprise. What makes Agile so successful in small teams is the superior communication that results from a tight-knit team working on a single purpose. When you start dividing larger enterprise projects into multiple teams, you immediately run into this challenge of dilution in communication. This is particularly key from the perspective of managing the product requirements and design – as it is the glue that brings the various functional team members on the same page. If you are using an unstructured approach for managing requirements and design (using a bunch of Word and Excel docs), you immediately inhibit good team communication. This approach does not scale well. It results in siloed views of product requirements and design and interferes with good team communication. An integrated Agile tool kit with a structured representation of product requirements and design is a great first step in alleviating poor team communication. Company culture also plays a big role here – embracing honest and open communication without rigid boundaries and protocols helps deal with this challenge.
Technical Complexity
Large projects are naturally more complex, involving a myriad of requirements and design elements. Software development projects are also dealing with hardware related issues, preparation of supporting documentation and often evolving the business process around the usage of the system. A single, integrated Agile tool kit for requirements identification, design and real-time development of supporting documentation enables project teams to seamlessly collaborate on large projects to better define business process flows, business rules, and detailed product requirements. The ability to define, apply and re-use architectural patterns for consistency is a big first step in handling technical complexity. The architectural pattern approach can also help you automatically generate design documents for product features, integration interfaces (APIs) and enterprise integration architecture diagrams that are always up-to-date. These tools reduce ambiguity and improve visibility, particularly with projects involving hundreds of design elements.
Large complex projects often comprise legacy projects that traditionally have long lead times between each delivery, and don’t fit well with the Agile methodology of rapid sprints and releases. Further compounding the problem is that legacy work frequently does not have delivery pressures that outside projects do with its demands for rapid and frequent releases. To avoid this, the Agile methodology can be applied to define interim releases that break up long release cycles to stop user stories from accumulating in the backlog. Agile project management tools, particularly visually driven tools, can provide valuable structured assistance by automating the task generation process, creating fine-grained burndown charts down to individual task and user story level, managing blockers visually with improved visibility, and managing project status with dynamic project dashboards.
What complicates the technical landscape further is the rapid rise of APIs and Integrations that connect the various applications in increasingly complex ways. The ability to document these Integration Points and Interfaces from a business perspective is critical in taming this complexity. Often times, the technical nature of these requirements scares away business users from diving deep and taking control. Having business user-friendly tools that can document the requirements and design of these Integration Interfaces can be a tremendous asset. As mentioned before, the ability to synthesize and apply Architectural Patterns in a repeatable manner can also be critical in dealing with this complexity.
Organizational Complexity
In addition to technical complexities that large projects present, there is often a complex domain or technical environment, or one that may be organizationally distributed or hierarchically complex. A visually driven Agile process that clearly and in real-time identifies participant roles, design requirements, design elements and project status helps organizationally diverse teams be aware of the project ‘big picture’, stay apprised of new product features and project status, and maintain an enthusiastic project team member engagement. The importance of ‘big picture’ awareness cannot be overemphasized: without awareness for the full delivery lifecycle, teams can easily succumb to adopting near-sighted approaches and forgo the benefits provided by up-front, strategic planning.
One of the biggest obstacles to successfully scaling agile for enterprise environments is the mindset of those involved in the process. Using a collaborative, transparent Agile project management tool can positively influence this mindset and help team members change how they feel about and act toward their daily tasks. Further, project performance can be tracked to see that the team continues to make progress and develop more efficiently. To evaluate your progress, reasonable objectives can be set by defining agile key performance indicators (KPIs) for the project team and tracking these KPIs with a transparent tool.
Large and Geographically Separated Teams
Much of the Agile methodology advice and training is oriented towards small teams who are co-located, with ready access to their primary stakeholders, and working on software that can be easily organized into a series of small releases. Multiple teams working in parallel, particularly in multiple geographically-separated offices, can benefit by working in smaller, discrete sprints with common cadences. Integrated cloud-based requirements management and project management tool kits are ideal for geographically distributed teams in that often these tools are the common thread for collaboration and communication and the designated ‘meeting place’ for project status and information.
To effectively coordinate work with multiple teams, you should proactively plan three to five iterations ahead. These midrange plans or sprints create a certain level of predictability that reduces the risk of coordination and delivery. Once teams are used to a cadence of iteration and release planning, additional Agile teams can be added. Of course, evolving team membership can be a problem. To the extent practicable, forming smaller stable teams is integral to delivering working code in short iterations. Defined sprints or plans that are clearly described and tracked in an integrated Agile project management tool is critical to coordination amongst multiple teams.
Methodologies for Scaling Agile
These approaches, coupled with toolsets, are useful with any of the primary Agile methodologies being employed for large scale projects, including Scaled Agile Framework (SAFe), the Discipline Agile Delivery (DAD), the Dynamic Systems Development Method (DSDM) and Large Scale Scrum (LeSS). SAFe is a prescriptive set of process decisions made for a specific approach to scaling. DAD advises that the use of common cadences is a process choice, but does not prescribe it as the only reasonable strategy. LeSS is a relatively lightweight agile framework for scaling Scrum to more than one team, promoting empiricism on a large-scale which enables the teams and organization to inspect-adapt their implementation based on their experiences and context. Each methodology has its distinctions, but all methodologies have a common theme – collaboration, shared vision, transparency and visibility. Integrated project requirements, design and project management tools can be effectively used to promote these win themes and successfully complete large projects in the enterprise environment.
What has been your experience in scaling Agile in your organization? We would love to hear your thoughts and comments in the section below.