Agile software development encompasses a wide variety of methodologies that define the style of interaction among specialists in teams during continuous software development. Choosing a specific manner of relationships makes the work maximally effective, predictable for participants, and simplifies digital transformation of the business.
The choice of a specific methodology, to a greater extent, depends not so much on the preferences of a specific team, although that too, but on the project it is currently working on (read about the nuances of our projects in the Case Studies section). All agile software development methodologies are divided into several in-demand categories.
Scrum. The most popular methodology, which is divided into roles (the team includes a product owner, scrum master, development team, and other participants), events (sprints, daily stand-ups, and more), and artifacts (for example, product backlog, sprint backlog).
Kanban. Another in-demand process management methodology that focuses on gradual product delivery without overloading the development team. To visualize the workflow, a special virtual board with columns To Do, In Progress, Done, and so on is usually created in this case.
Extreme Programming (XP). This agile software development method is oriented towards improving software quality and continuously changing client requirements. XP employs numerous different practices, among which are pair programming, test-driven development (TDD), code refactoring, and continuous integration.
Lean Software Development. This adaptive software development methodology is inspired by the principles of Lean Manufacturing and focuses on seven nuances: waste elimination, respect among employees, optimization of everything, knowledge creation, deferred decision-making, fast delivery, and creating integrity.
Feature Driven Development (FDD). A methodology focused on building features for any types of software. It includes developing an overall model, creating a list of features, planning by feature, designing by feature, and building by feature.
Dynamic Systems Development Method (DSDM). An adaptive software development methodology based on the principles of Rapid Application Development (RAD). It includes active user involvement, teams that can make decisions independently, and frequent delivery of product versions.
Scrum is best suited for projects with undefined requirements, while Kanban is ideal for software development where priorities are constantly changing. Some methodologies focus more on code quality, while others focus on the speed of application development.
All these agile software development methodologies have their own advantages and disadvantages. That is why, similar to programming languages (about the most in-demand today we wrote in this trend article) and other technologies, their choice is based on the preferences of the team and depends on the specific project.