A DEFINITIVE GUIDE TO AGILE SOFTWARE DEVELOPMENT - a3 logics (the best motivational books TXT) 📗
- Author: a3 logics
Book online «A DEFINITIVE GUIDE TO AGILE SOFTWARE DEVELOPMENT - a3 logics (the best motivational books TXT) 📗». Author a3 logics
HOW TO MANAGE SOFTWARE DEVELOPMENT RISKS IN AN AGILE ENVIRONMENT
54
Every mobile app development project involves some degree of risk. How enterprises plan to mitigate or prevent these risks will ensure a higher probability of project success. Practicing agile software development addresses many of the risks associated with traditional waterfall environments by concentrating on fast, rapid iterations; however, threats are still prevalent in many agile environments. Often, these risks are a result of project team mistakes, planning errors, failures in process, and unexpected changes as products evolve.
Depending on the nature of the project, these risks can vary, but they can typically fall into five categories. This chapter addresses each software development risk and how it can be managed to mitigate delays, mistakes, and other barriers to shipping a successful product.
Budget Risk
As the name suggests, this is the risk of projects going over budget. Budget risk is perhaps the most common risk in software development, and it’s often tied to other issues in the software development lifecycle.
Personnel Risk
Personnel risk is the chance of losing or the absence of project team members. Even over a short period, personnel risk can cause delays and errors and miscommunication.
Knowledge Risk
When there are silos or the transfer of information is imperfect, this is known as knowledge risk. The process of relearning results in additional labor, time, and resources.
Productivity Risk
Productivity risk is common in long projects, mainly when deadlines and goals are long- term. This environment creates a lack of immediacy and urgency for deliverables.
Time Risk
Product delays are all-too-common in software development. Time risk is typically the result of poor planning, unrealistic timelines, and the inability to adapt to changing product requirements.
MANAGING RISKS IN AGILE SOFTWARE DEVELOPMENT
For enterprises that work with traditional methodologies like waterfall, transitioning to agile software development can cause uncertainty. While the inherent cadence and iterative nature of agile practices make them well suited for the management of a wide range of risks familiar with software development, these practices can also instill fear in those tasked with driving and safeguarding process changes.
While agile may lack the practices of traditional risk management (i.e., risk logs, assessments, or audits), there are several ways agile offers solutions for addressing risk. The remainder of this article takes an in-depth look at the solutions an agile environment provides to solve the software development risks mentioned above.
Budget Risk
Solution: In software development, you necessarily make assumptions that cannot be proven or disproven until more information becomes available. As development progresses, objectives or goals may shift, or the product may need to pivot to be viable.
Rolling wave planning is a method of project management designed to account for budget risk. Teams make product decisions when they are in the best position to make them, rather than presenting very detailed plans at the beginning of the project.
Therefore, you make actionable decisions that are informed by new knowledge and the progression of the product. Rolling wave planning mitigates budget risk because you do not have to waste time and resources re-planning.
While rolling wave planning helps keep your project under budget, it’s crucial to create a
budgeting plan that acknowledges the entire scope of the project. Many companies underestimate the cost of developing a functional mobile app and make several mistakes in the budgeting process. Every software development project is different, so it’s essential to have a clear understanding of the services you require.
Personnel & Knowledge Risks
Solution: Squad-based development. Squads are co-located, 10 to 12 person teams that plan together, share knowledge, complete code reviews, and work together on a given project from beginning to end. They have a known maximum capacity and open flow of knowledge, which helps address both personnel and knowledge risk, as it eliminates knowledge silos and gives team members the ability to seamlessly take on tasks if somebody is absent or leaves the team.
Productivity Risk
Solution: iterative development phases known as sprints. Sprints accomplish a demo version of the product within the given timeframe (usually, every two weeks). They serve to provide actionable goals and objectives to product teams and add a sense of immediacy and short-term accomplishment. Sprints help mitigate complacency and maintain project velocity by dividing the work into smaller, manageable tasks.
Time Risk
Solution: Time risk can emerge from scope creep, gold-plating, or the “perfection complex,” improper capacity planning, and rigid development processes. A replicable, flexible process is the most effective way of dealing with common causes of time risk.
In an agile environment, risk management doesn’t have to involve the formal documentation and meetings of traditional development settings. Instead, risk management is built into scrum roles, sprints, and events. As a project progresses in an agile environment, the risk of that project declines. The key to managing agile software
57
development risks is to ensure your process encourages flexibility. A flexible process helps team members adapt quickly to changing product needs, promotes rapid and frequent delivery, and contains change management controls. By implementing the practices mentioned above – sprints, squad-based development, and rolling wave planning – teams better position themselves to manage time and expectations to mitigate product delays and eliminate large-scale failure.
59
Agile software development is a methodology focused on iterative decision-making, where requirements and solutions are developed through collaboration between multiple teams. Traditionally favored by small groups, agile development has become increasingly popular amongst larger organizations across almost all industries.
However, while agile development enables teams to deliver valuable products quicker, more efficiently, and with greater quality, scaling agile is still one of the most challenging obstacles for enterprises. This is largely due to how these enterprises are structured with multiple teams and more complex systems than their smaller counterparts.
This chapter is going to look at how to scale agile in an enterprise environment, examining:
The current trends in enterprise agility
Major challenges enterprises face in scaling agile
Frameworks for scaling agile in enterprise environments
Successful agile Implementation
CURRENT TRENDS IN ENTERPRISE AGILITY
VersionOne’s 13th Annual State of Agile Report shows that 97% of respondents surveyed said that their organization practices agile to some degree, with 95% saying they have realized success from agile projects. Furthermore, 73% are investing in DevOps.
The survey also shows there is a lot of opportunity for growth and improvement, with 83% claiming that their organization was at or below the “still maturing” level with agile. Even organizations that have realized some success from adopting agile methodologies are facing significant challenges with scaling agile.
MAJOR CHALLENGES TO SCALING AGILE IN ENTERPRISE ORGANIZATIONS
The benefits of agile for enterprises are clear – increased productivity, delivery speed and time to market, ability to manage changing priorities, software quality,
and boosting team morale.
However, the sheer size of enterprise organizations and the bureaucratic nature that comes along with such size present numerous challenges in scaling agile.
The following are some of the main challenges faced by enterprises.
Legacy Systems
Legacy systems create many difficulties for a number of reasons, ranging from the technology to the fact that teams working on these systems have historically worked within silos. On the technical side of things, legacy systems are not designed for agile practices that focus on rapid and frequent delivery.
Equally challenging is the mindset surrounding legacy systems; this is symptomatic of a larger enterprise challenge that includes skepticism of new methods and resistance to organizational change, or in other words, the “things have always been done this way” mentality.
Change Resistance
One of the most common and difficult challenges to scaling agile in enterprise environments is resistance to change. In large delivery environments, where processes are so ingrained and teams are large, it is very difficult to enact change that will affect organizational culture and processes. Change resistance plays out in a number of ways, from general skepticism of the efficacy of agile methodologies to managerial resistance to change and pushback from the bottom-up.
Getting Executive Support
Change impacts all aspects of an organization; from workflows to employee satisfaction. It’s important for leaders to be prepared to address any issues or backlash that might arise during periods of change by providing constant support to ensure that the organization stays focused on an agile mindset. This is particularly difficult as the mindset at the executive level also needs to be transformed as decision-making is often cemented in more rigid, waterfall frameworks. Executive leadership support is at the foundation of scaled
61
agile transformation. Successful transformations are a result of leadership teams that are committed to organizational change, and promoting innovation and collaboration as new styles of working are implemented.
Integrating Non-Agile Teams
A contributing factor in a successful transition to an agile environment is an enterprise’s ability to get multiple teams onboard. Having agile teams working with other teams and departments that don’t follow the same methodologies and/or mindset has proven to be one of the main challenges of cross-team coordination. Changing entire delivery frameworks from pre-existing processes – many of which have been the standard in organizations for years – takes effort, time, and investment.
Knowledge Acquisition
Lack of experience is a notable challenge and may include aspects like lack of investment in coaching and training, misunderstanding agile concepts and their purpose, and general organizational and inexperienced personnel in implementing and delivering via agile frameworks. For an enterprise to properly scale agile, a training and coaching program on agile values and processes is necessary as insufficient guidance leads to chaos and poor implementation. Without a thorough understanding of what agile is, organizations that attempt to scale will encounter significant challenges.
FRAMEWORKS FOR SCALING AGILE IN ENTERPRISE ENVIRONMENTS
Despite the numerous challenges discussed above, there are many examples of successful agile transitions for large enterprise organizations. Success stories are often attributable to particular scaling frameworks designed to help normalize the agile mindset and methodologies in large organizations. Below, we cover a handful of the most popular frameworks that are more widely implemented and have been proven to succeed in large software delivery environments.
SAFe (Scaled Agile Framework)
The Scaled Agile Framework (SAFe®) helps businesses address the significant challenges of developing and delivering enterprise-class software and systems in the shortest sustainable lead-time. SAFe® combines agile development, systems thinking, and lean product development principles.
SAFe® is designed to address broader organizational goals that transcend single teams. In the framework, teams
Comments (0)