Agile Software Development
Agile Software Development — also referred to simply as Agile — is a type of development methodology that anticipates the need for flexibility and applies a level of pragmatism to the delivery of the finished product. Agile software development requires a cultural shift in many companies because it focuses on the clean delivery of individual pieces or parts of the software and not on the entire application.
Benefits of Agile include its ability to help teams in an evolving landscape while maintaining a focus on the efficient delivery of business value. The collaborative culture facilitated by Agile also improves efficiency throughout the organization as teams work together and understand their specific roles in the process. Finally, companies using Agile software development can feel confident that they are releasing a high-quality product since testing is performed throughout development, providing the opportunity to make changes as needed and alert teams to any potential issues.
The 12 principles of Agile
The Agile Manifesto also outlined 12 core principles for the development process. They are:
- Satisfy customers through early and continuous delivery of valuable work.
- Break big work down into smaller tasks that can be completed quickly.
- Recognize that the best work emerges from self-organized teams.
- Provide motivated individuals with the environment and support they need and trust them to get the job done.
- Create processes that promote sustainable efforts.
- Maintain a constant pace for completed work.
- Welcome changing requirements, even late in a project.
- Assemble the project team and business owners on a daily basis throughout the project.
- Have the team reflect at regular intervals on how to become more effective, then tune and adjust behavior accordingly.
- Measure progress by the amount of completed work.
- Continually seek excellence.
- Harness change for a competitive advantage.
Advantages and disadvantages of Agile
Much has been compared over the years with Agile versus Waterfall approaches.
In the Waterfall era of software development, coders worked alone, with little to no input before handing the software to testers and then on to production. Bugs, complications and feature changes either weren’t handled well, or were dealt with so late in the process that projects were seriously delayed or even scrapped.Joseph Flahiff on AgileIT organizations that adopt an Agile approach to software development must be mindful of the Agile impact on the company culture, compensation practices and business processes.PlayMuteCurrent Time 0:00/Duration 2:51Loaded: 5.87% Picture-in-PictureFullscreen
Explore the effects of the Agile software development process.
The idea behind the Agile model, in which everyone — including the business side — stayed involved and informed in the development process, represented a profound change in both company culture and the ability to get better software to market more quickly.
Collaboration and communication became as important as technology, and because the Agile Manifesto is open to interpretation, Agile has been adapted and modified to fit organizations of all sizes and types. The Agile cultural shift also paved the way for the latest software development evolution, DevOps.
On the other hand, many would say the biggest disadvantage of Agile is the fact it has been modified — some would say diluted — by many organizations. This phenomenon is so widespread that the “Agile my way” practitioners are known as “ScrumButs,” as in, “We do Scrum in our organization, but ….”
Although Agile opens up the lines of communication between developers and the business side, it’s been less successful bringing testing and operations into that mix — an omission that may have helped the idea of DevOps gain traction.
Another potential concern about Agile is its lack of emphasis on technology, which can make it difficult to sell the concept to upper managers who don’t understand the role that culture plays in software development. Furthermore, the necessity of completing sprints on time can create a stressful work environment for software developers. They may be forced to work extra hours and stay late in order to meet deadlines.
Scrum and other Leading Agile Methods
Agile is a mindset and it’s a set of values and principles. it is a way of thinking and acting. all about short cycles, iterative and incremental delivery, failing fast, getting feedback, delivering business value to customers early and about people, collaboration and interaction. this is a mindset which is all about transparency, inspection and adaptation. Agile however doesn’t consist of any roles, events or artifacts. It’s a mindset.For example, Scrum is one of the widely used frameworks under the Agile umbrella, which may help you in becoming more Agile, there are however many more frameworks within the Agile movement, like Kanban, XP, Crystal and many more as shown in the Figure below:
Scrum is a framework within which people can address complex adaptive problems, while productively and creatively delivering products of the highest possible value. It is used for managing software projects and product or application development. Its focus is on an adaptive product development strategy where a cross-functional team works as a unit to reach a common goal within 2-4 weeks (Sprint). It consists of a collection of values, artifacts, roles, ceremonies, rules and best practices.
Lean originated with the Toyota Production System, or TPS, which revolutionized the manufacture of physical goods in the 1950s, ‘60s, and beyond. it maintains its hold in manufacturing but has also found new applications in knowledge work, helping businesses in all industries eliminate waste, improve processes, and boost innovation. Software development is a natural application of Lean methodology because, much like manufacturing, it generally follows a defined process, has some defined conditions of acceptance, and results in the delivery of tangible value. The key concepts that guide all practice of Lean methodology, which we call the Pillars of Lean. They are:
- Continuous improvement
- Respect for people
- Lightweight Leadership
Kanban is a highly visual workflow management method that is popular among Lean teams. In fact, 83% of teams practicing Lean use Kanban to visualize and actively manage the creation of products with an emphasis on continual delivery, while not overburdening the development team. Like Scrum, Kanban is a process designed to help teams work together more effectively.
Kanban is based on 3 basic principles:
- Visualize what you’ll do today (workflow): Seeing all the items within the context of each other can be very informative
- Limit the amount of work in progress (WIP): This helps balance the flow-based approach so teams don‘t start and commit to too much work at once
- Enhance flow: When something is finished, the next highest priority item from the backlog is pulled into play
Kanban promotes continuous collaboration and encourages active, ongoing learning and improvement by defining the best possible team workflow.
A Short History of Agile
Here is a look at how Agile emerged, how it acquired the label Agile, and where it went from there. It’s important to take a look at where Agile software development came from to get an understanding of where things are at today.
What are Agile Methodologies?
If Agile is a mindset, then what does that say about the idea of Agile methodologies? To answer this question, you may find it helpful to have a clear definition of methodology.
Alistair Cockburn suggested that a methodology is the set of conventions that a team agrees to follow. That means that each team is going to have its own methodology, which will be different in either small or large ways from every other team’s methodology.
So Agile methodologies are the conventions that a team chooses to follow in a way that follows Agile values and principles.
“Wait,” you’re probably saying, “I thought Scrum and XP were Agile methodologies.” Alistair applied the term framework to those concepts. They certainly were born from a single team’s methodology, but they became frameworks when they were generalized to be used by other teams. Those frameworks help to inform where a team starts with their methodology, but they shouldn’t be the team’s methodology. The team will always need to adapt its use of a framework to fit properly in its context.
The term agile management is applied to an iterative, incremental method of managing the design and build activities of engineering, information technology and other business areas that aim to provide new product or service development in a highly flexible and interactive manner, based on the principles expressed in the Manifesto for Agile Software Development.
Agile X techniques may also be called extreme project management. It is a variant of iterative life cycle where deliverables are submitted in stages. The main difference between agile and iterative development is that agile methods complete small portions of the deliverables in each delivery cycle (iteration), while iterative methods evolve the entire set of deliverables over time, completing them near the end of the project. Both iterative and agile methods were developed as a reaction to various obstacles that developed in more sequential forms of project organization. For example, as technology projects grow in complexity, end users tend to have difficulty defining the long-term requirements without being able to view progressive prototypes. Projects that develop in iterations can constantly gather feedback to help refine those requirements.
Agile management also offers a simple framework promoting communication and reflection on past work amongst team members. Teams who were using traditional waterfall planning and adopted the agile way of development typically go through a transformation phase and often take help from agile coaches who help guide the teams through a smooth transformation. There are typically two styles of agile coaching: push-based and pull-based agile coaching. Agile management approaches have also been employed and adapted to the business and government sectors. For example, within the federal government of the United States, the United States Agency for International Development (USAID) is employing a collaborative project management approach that focuses on incorporating collaborating, learning and adapting (CLA) strategies to iterate and adapt programming.
Agile methods are mentioned in the Guide to the Project Management Body of Knowledge (PMBOK Guide) under the Project Lifecycle definition:
Adaptive project life cycle, a project life cycle, also known as change-driven or agile methods, that is intended to facilitate change and require a high degree of ongoing stakeholder involvement. Adaptive life cycles are also iterative and incremental, but differ in that iterations are very rapid (usually 2-4 weeks in length) and are fixed in time and resources.