Agile practices in software development discover requirements and
develop solutions through the collaborative effort of self-organizing and
cross-functional teams and their customers or end users. The approach involves
adaptive planning, evolutionary development, early delivery, and continual
improvement, and it encourages flexible responses to change.
Every technology organization today seems to practice the agile methodology for software development, or a version of it. Or at least they believe they do. Whether you are new to agile application development or you learned software development decades ago using the waterfall software development methodology, today your work is at least influenced by the agile methodology.
But what is agile methodology, and how should it be practiced in software development? How does agile development differ from waterfall in practice? What is the agile software development lifecycle, or agile SDLC? And what is scrum agile versus Kanban and other agile models?
Agile was formally launched in 2001 when 17 technologists drafted the Agile Manifesto. They wrote four major principles for agile project management, with the goal of developing better software:
The Manifesto for Agile Software Development
The Manifesto for Agile Software Development is based on twelve principles:
Benefits of Agile Software Development:
Leading Agile Methods
Agile is a mindset and it’s a set of values and principles. Agile is a way of thinking and acting. Agile is all about short cycles, iterative and incremental delivery, failing fast, getting feedback, delivering business value to customers early and about people, collaboration and interaction. Agile 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.
Scrum and Kanban are the most common and widely used frameworks
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.
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.
Other frameworks are as follows
Lean originated with the Toyota Production System, or TPS, which revolutionized the manufacture of physical goods in the 1950s, ‘60s, and beyond. Lean 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
Dynamic Systems Development Method (DSDM)
DSDM is a framework that is made up of eight principles, a lifecycle
and products, roles and responsibilities and several best practice techniques. These
underpin and support a philosophy of delivering strategically aligned business
benefits as early as possible to give an organization the best possible return on
DSDM is a methodology that prioritizes schedule and quality over functionality, which fixes cost, quality and time at the start and uses the MoSCoW method of prioritization, which breaks a project down into four different types of requirements:
- Must have (M)
- Should have (S)
- Could have (C)
- Won’t have (W)
There are eight principles underpinning DSDM Atern. These principles direct the team in the attitude they must take and the mindset they must adopt to deliver consistently.
- Focus on the business need
- Deliver on time
- Never compromise quality
- Build incrementally from firm foundations
- Develop iteratively
- Communicate continuously and clearly
- Demonstrate control
Extreme Programming (XP), originally described by Kent Beck, has
emerged as one of the most popular and controversial Agile methodologies. XP is a
disciplined approach to delivering high-quality software quickly and continuously.
It is intended to improve software quality and responsiveness in the face of
changing customer requirements. It promotes high customer involvement, rapid
feedback loops, continuous testing, continuous planning, and close teamwork to
deliver working software at very frequent intervals, typically every 1-3 weeks.
The methodology takes its name from the idea that the beneficial elements of traditional software engineering practices are taken to “extreme” levels. As an example, code reviews are considered a beneficial practice. Taken to the extreme, code can be reviewed continuously through the practice of pair programming.
The original XP method is based on four simple values – simplicity, communication, feedback, and courage.
It also has twelve supporting practices:
- Planning Game
- Small Releases
- Customer Acceptance Tests
- Simple Design
- Pair Programming
- Test-Driven Development
- Continuous Integration
- Collective Code Ownership
- Coding Standards
- Sustainable Pace
Feature Driven Development (FDD)
Feature-Driven Development (FDD) was introduced in 1997 by Jeff De Luca when he was working in a software development project for a large Singapore bank. It is an iterative and incremental software development process and is an agile method for developing software. FDD blends a number of industry-recognized best practices into a cohesive whole. These practices are driven from a client-valued functionality (feature) perspective. Its main purpose is to deliver tangible, working software repeatedly in a timely manner. The advantage of using FDD is that it is scalable even to large teams due to the concept of ‘just enough design initially’ (JEDI). It is a great solution to maintain control over agile, incremental and inherently complex projects because of its feature-centric process. It consists of five basic activities:
- Development of an overall model
- Building of a feature list
- Planning by feature
- Designing by feature
- Building by feature
Every project will have its own unique model, which will result in a feature list. The last three activities are short iterative processes, with a feature not taking longer than two weeks to build. If it will take more than two weeks, then it will have to be broken down into smaller features.
Crystal methods are a family of methodologies (the Crystal family) that were developed by Alistair Cockburn in the mid-1990s. The methods come from years of study and interviews of teams by Cockburn. Cockburn’s research showed that the teams he interviewed did not follow the formal methodologies yet they still delivered successful projects. The Crystal family is Cockburn’s way of cataloguing what they did that made the projects successful. Crystal methods are focused on:
Agile is a powerful tool for software development, not only providing benefits to the development team, but also providing a number of important business benefits to the client. Agile helps project teams deal with many of the most common project pitfalls (such as cost, schedule predictability and scope creep) in a more controlled manner. By reorganizing and re-envisioning the activities involved in custom software development, Agile achieves those same objectives in a leaner and more business-focused way.