Almost 20 years after their launch, agile practices remain as relevant as ever and the businesses that implemented them continue to outperform their competitors. Agile is a set of values and principles meant to help develop better software through collaboration, iterations and adaptability to changes.
Agile Manifesto
The Agile Manifesto was created in 2001 as a response to the perceived inadequacies of traditional development methods: rigid structure with long business requirements that developers had to read before coding. There are four core values laid out in the Agile Manifesto:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
Furthermore, there are 12 principles that serve as a guide for developing an agile methodology best suited to a business:
- 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
- Simplicity
- Self-organizing teams encourage great architectures, requirements, and designs
- Regular reflections on how to become more effective
Because it has a customer-centric approach, based on effective collaboration between developers and customers, agile has become the industry standard. Its focus on iterative development, continuous change and fast product delivery results in a higher quality product.
Agile Frameworks
Scrum and Kanban are agile frameworks that include practices and predefined roles for the software development lifecycle. The most popular of the two, scrum is focused on delivering in sprints: predetermined timeframes for delivering the product. It also includes roles, events and artifacts.
For example, the team roles are product owner (the person representing the stakeholders), development team (the developers and designers who will deliver the product) and scrum master (the person who ensures that the framework is being followed).
The workflow is composed of so-called “events”, starting with the sprint (timeframe for delivering the product, usually no longer than a month) and sprint planning (as the name implies, this is when the scrum team gets together to plan the sprint). A daily scrum is a short meeting held at the same time every day, to discuss what was achieved in the previous day and what is planned for the current day, as well as roadblocks to getting work done. At the end of each sprint, a sprint review is held to present the product to stakeholders and get feedback. Finally, the sprint retrospective is a meeting where the team discusses what went well and identifies improvement actions.
Scrum artifacts are tools for maximizing transparency and promote a shared understanding of the work. The three primary artifacts are the product backlog (constantly updated by the product owner, this includes all the product requirements in order of priority), the sprint backlog (what needs to be accomplished during the next sprint) and the product increment (the product’s updated version that is released after each sprint).
Kanban is a concept developed by a Toyota engineer in the 1940s to improve manufacturing efficiency. It is a method that relies on visualizing stages of the development process on the Kanban board. Then, through Kanban cards, progress on tasks is communicated to all team members.
Other agile approaches to software development include Extreme Programming, Crystal, Feature-Driven Development (FDD) and Dynamic Systems Development Method (DSDM).
At ABIT Puresoft we use agile practices and processes to deliver complex projects, adapting to customer feedback on the go. Through continuous integration, user stories, automated tests, customer collaboration, burndown charts, test-driven development (TDD) and effective teamwork, we deliver services that meets or enhances our customers’ processes.