Art of iterative and incremental software development
Those who work in the industry, or are close to it, are aware that the art of software development is one that is special, and different to other kinds of engineering projects. It requires the care and attention of a team who are adaptable and flexible, and those who are willing to respond quickly to changes and won’t bat so much as an eyelid at a client’s overnight demands. This is what Agile methodology is all about.
The principles and practices of Agile methodology have scaled cross-team and globally. Key takeaways from the report are:
- “95% of respondents report their organizations practice Agile development methods.”
- “81% of respondents said their organization has Agile teams where the members of the same team do not all work in the same location (i.e., not co-located).”
- “71% of respondents said their organization practices Agile, with multiple co-located teams collaborating across geographic boundaries.”
Agile methodology is a type of project management process, mainly used for software development, where demands and solutions evolve through the collaborative effort of self-organizing and cross-functional teams and their customers.
The Agile methodology is a collection of principles that value adaptability and flexibility. Agile aims to provide better responsiveness to changing business needs, and therefore focuses on enabling teams to deliver in workable increments.
Stemming from the values and principles of the Agile Manifesto, it was created as a response to the inadequacies of traditional development methods, such as the Waterfall method. The software industry is a highly competitive market due to the fact that software is something that can be continuously updated. This means that developers need to constantly improve and innovate their products to keep on top of the game—and the linear, sequential approach of the Waterfall method just wasn’t cutting it.
The Agile Manifesto is a declaration of the values and principles expressed in Agile methodology. Made up of four foundational values and 12 key principles, it aims to help uncover better ways of developing software by providing a clear and measurable structure that promotes iterative development, team collaboration, and change recognition.
The values and principles of the ‘Manifesto for Agile Software Development’ are:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
- Customer satisfaction through early and continuous software delivery
- Accommodate changing requirements throughout the development process
- Frequent delivery of working software
- Collaboration between the business stakeholders and developers throughout the project
- Support, trust, and motivate the people involved
- Enable face-to-face interactions
- Working software is the primary measure of progress
- Agile processes to support a consistent development pace
- Attention to technical detail and design enhances agility
- Self-organizing teams encourage great architectures, requirements, and designs
- Regular reflections on how to become more effective.
Those who apply any type of Agile methodology adhere to these values and principles. The manifesto offers a good overview of what is expected when it comes to the Agile development life cycle practices.
Agile project management is a methodology that is commonly used to deliver complex projects due to its adaptiveness. It emphasizes collaboration, flexibility, continuous improvement and high-quality results. It aims to be clear and measurable by using six main deliverables to track progress and create the product.
Product vision statement: A summary that articulates the goals for the product.
Product roadmap: The high-level view of the requirements needed to achieve the product vision.
Product backlog: Ordered by priority, this is the full list of what is needed for your project.
Release plan: A timetable for the release of a working product.
Sprint backlog: The user stories (requirements), goals, and tasks linked to the current sprint.
Increment: The working product functionality that is presented to the stakeholders at the end of the sprint and could potentially be given to the customer.
There are various frameworks within Agile project management that can be used to develop and deliver a product or service. Each framework highlights a specific approach and focuses on a determined outcome. Depending on the requested outcome, the particular approach of Agile is chosen and applied. While they each have their own set of characteristics and terminology, they share common principles and practices.
Two of the most popular ones that support the Agile development life cycle are Scrum and Kanban.
Scrum is an Agile framework that is used to implement the ideas behind Agile software development. It is the most popular Agile framework used in companies. Created by Jeff Sutherland and Ken Schwaber (who were also part of the 13 individuals who cemented the Agile Manifesto), it comprises five values: commitment, courage, focus, openness, and respect. Its goal is to develop, deliver, and sustain complex products through collaboration, accountability, and iterative progress.
What distinguishes Scrum from other Agile methodologies are the roles, events, and artifacts that it is made up of, and with which it operates. Here’s what they are:
Scrum Team Roles
Product owner: Product expert who represents the stakeholders, and is the voice of the customer.
Development team: Group of professionals who deliver the product (developers, programmers, designers).
Scrum master: Organized servant-leader who ensures the understanding and execution of Scrum is followed.
Sprint: Iterative timeboxes where a goal is accomplished. The time frame does not exceed one calendar month and is consistent throughout the development process.
Sprint planning: Where the entire Scrum team gets together—at the beginning of every Sprint—to plan the upcoming sprint.
Daily Scrum: 15-minute time-boxed meeting held at the same time, every day of the Sprint, where the previous day’s achievements are discussed, as well as the expectations for the following one.
Sprint review: An informal meeting held at the end of every Sprint where the Scrum team present their Increment to the stakeholders and discuss feedback.
Sprint retrospective: A meeting where the Scrum team reflects on the proceedings of the previous Sprint and establishes improvements for the next Sprint.
Product backlog: It is managed by the Product Owner, it’s where all the requirements needed for a viable product are listed in order of priority. Includes features, functions, requirements, enhancements, and fixes that authorize any changes to be made to the product in future releases.
Sprint backlog: A list of the tasks and requirements that need to be accomplished during the next Sprint. Sometimes accompanied by a Scrum task board, which is used to visualize the progress of the tasks in the current Sprint, and any changes that are made in a ‘To Do, Doing, and Done’ format.
Kanban is a highly visual method popularly used within Agile project management. It paints a picture of the workflow process, with an aim to identify any bottlenecks early on in the process so that a higher quality product or service is delivered.
Its six general practices are:
- Limiting work in progress
- Flow management
- Making policies explicit
- Using feedback loops
- Collaborative or experimental evolution.
A concept that was developed in the production line of Toyota factories in the 1940s, Kanban achieves efficiency through visual cues to signal certain stages of the development process. The said cues are a Kanban board, Kanban cards, and sometimes even Kanban swim lanes.
Kanban board: A visual management tool used to visualize the development process. It can be either physical (a whiteboard, sticky notes, and markers) or virtual (like Zenkit’s online project management tool), and can be used for personal productivity, as well as professional use.
Kanban cards: Cards that depict a work item/task in the work process. Used to communicate progress with your team, it represents information such as status, cycle time, and impending deadlines.
Kanban swimlanes: A visual element on the board that allows you to further distinguish tasks/items by categorizing them. Flowing horizontally, it offers distinction and provides a better overview of the workflow.
Agile methodology is an effective process for teams looking for a flexible approach to product development. No longer exclusive to the software industry, it can be implemented in any business venture that requires a non-linear plan of attack that also needs to value customer collaboration, effective teamwork, responsive changes, and of course, quality results.
How has agile methodology improved your team’s way of working? Don’t forget to share your tips in the comments.