To keep pace with the growing complexity of software development, organizations have spent years working to implement agile practices into their developer experience. Agile practices are a set of software development methodologies centered around the idea of iterative development, where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams. It enables teams to deliver value faster, with greater quality and predictability, and greater aptitude to respond to change. Agile’s popularity grew from its list of benefits including having a better focus on business values, users, and quality. But many organizations are still struggling to achieve agility and state that progress is still slow and projects are stalled.
What causes agile failure
Most agile practices fail due to a rising number of misconceptions and misunderstandings of what agile is and how to apply it. In this article, Mik explains common misconceptions about agile development and how to properly apply and develop an agile culture.
Agile development evolved from the need for flexibility and speed in modern software development with the purpose of promoting collaboration, communication, and responsiveness to create better ways of developing software. Agile principles empower organizations to respond to feedback and make necessary changes at any point in the agile software development lifecycle.
IT leaders who attempt to squeeze agile ways of working into organizations that haven’t fully embraced agility can fall victim to agile antipatterns. Some of the most common antipattern practices include big planning upfront, long sprints, too much emphasis on accurate estimation points, and ineffective retrospectives.
Two Agile antipatterns: Detailed requirements, long release cycles
There is a common belief that planning way ahead of time produces great software. In some cases, that’s true, but not in most application development. Designing and planning for a product year in advance can actually be damaging to the success of a business. When development plans are made upfront, it leaves no room for agility since requirements captured during planning can’t accurately reflect what the actual workflow needs to be successful.
One of the most important insights into agile development that we’ve learned over the past 25 years at Tanzu Labs is that very few people can predict what those workflows are. Instead, you discover and perfect the workflows by studying what people do with your software as you incrementally release it. When you use the right tools and process, software can be changed quickly (daily even!) – allowing you to put new features in front of people, observe how they use it, and then change those app features again. By repeating this process you’re able to use validated data to discover and then perfect how your software solves people’s problems.
There are two warning signs of falling into this bad practice. First, check if you’re creating a large number of software requirements, stories, or whatever you use to specify what the software does. Second, do you have long release cycles, on the order of six or more months? We’ve worked with many organizations over the years who had failed to release their software for a year or more and yet thought they were practicing agile. Long release cycles indicate that agile requirements (often called “stories”) are not being broken down into small enough pieces and that release cycles are too long. Breaking down releases into a series of frequent, small changes is the way to go.
How to do agile development right
Speeding up release cycles can be surprisingly quick. By our estimates, at least 50% if not around 70% of organizations have yet to fully automate their testing and build pipelines. These are just tools that need to be put in place or, in some cases, just used more fully.
There are several other agile principles we haven’t discussed here that are also frequently left off the shelf or not fully implemented. For example, to get the benefits of agile development management needs to make teams more autonomous, give them the voice to point out areas of improvement, and trust them to make those changes.
At VMware Tanzu Labs, our approach to agile is based on a set of guiding principles and core practices, honed from over 30 years of experience working with organizations of all sizes and from all industries. What makes our agile playbook unique are our four pillars:
(1) Balanced Teams – we start with a software team that has a mix of skills and perspectives. Depending on what your organization’s needs are, this typically includes a product manager, a product designer, and several engineers. This means each team has the primary capabilities needed to create software, reducing the time consuming need to coordinate and hand off across functional silos.
(2) Extreme Programming – the 12 principles of Extreme Programming provide a proven set of prescriptive practices for agile software development. Practices like test-driven development, refactoring, and pair programming give you the exact recipe to start with. Many organizations get the idea of agile but are left alone to figure out the daily practices. Extreme Programming fills that gap.
(3) Lean thinking – we apply the lean philosophy of focusing on continuous learning and improvement, waste removal in the end-to-end pipeline, and worker autonomy to software development.
(4) User-centered design – user-centered design puts the needs and objectives of users at the heart of the design process. Treating users as important stakeholders in the product ensures that what teams build is relevant, helpful, and delightful. When implementing this, it’s important to ask for regular feedback on designs, prototypes, and early versions so the outcome aligns better with your target audience.
Surrendering to the process
When building an agile culture, businesses and IT leaders should be ready to accept that there is uncertainty in any software project. What’s key is being ready to manage that uncertainty in useful ways and learn to be comfortable with being uncomfortable. Agile development is simply being realistic about any team’s ability to accurately forecast more than a few weeks ahead. When done correctly, businesses will experience the many benefits including better resilience and the ability to pivot according to market and user needs, better alignment between delivery teams and user needs, as well as more sustainable work for development teams.
To learn more, visit us here.
Devops, Software Development
Read More from This Article: How to build a successful agile development culture – and why your business needs one
Source: News