SCRUM
Scrum is a project management methodology focusing on teamwork, continuous learning, and adapting to change. It is trendy in IT, but it can be applied in any industry where projects require rapid development and the ability to pivot swiftly.
Key elements of Scrum:
- Product Backlog: This is an organized list of product requirements that need to be addressed. It is continually updated and maintained by the Product Owner.
- Sprint: This is a short, typically 2-4 week period, during which the team works on a defined amount of work. The work to be carried out during the sprint is planned at the beginning of this period.
- Daily Scrum (Stand-up): These are daily short meetings (usually lasting up to 15 minutes) where each team member reports what they did the previous day, what they plan to do today, and any issues they encountered.
- Sprint Review: A meeting that takes place at the end of each sprint, where the team demonstrates the work done and receives feedback from the Product Owner and other stakeholders.
- Sprint Retrospective: A meeting after the conclusion of each sprint, where the team analyzes what worked well, what didn’t, and what changes can be made for improvement.
The primary roles in Scrum are the Product Owner, Scrum Master, and Development Team. The Product Owner is responsible for defining product requirements and work priorities, the Scrum Master assists the team in adhering to Scrum, and the team performs the work. The central principles of Scrum are iterative progress, team self-organization, transparency, and flexibility.
Let’s consider a more concrete example of using Scrum based on an actual project — developing a new mobile game.
- Role definition: The owner of a mobile game development company assigns one of his teams to work on a new game. The team includes a Product Owner (project manager), a Scrum Master (technical leader), and a team of developers, including designers, programmers, testers, etc.
- Sprint Planning: The Product Owner is responsible for defining the Product Backlog – a list of features and tasks that must be completed to create the game. At the sprint planning meeting, the team selects tasks from the Backlog to work on for the next two weeks. Tasks include designing a new character, coding a new level, testing new features, etc.
- Sprint Execution: The team works on the selected tasks during the sprint. They hold daily meetings (Daily Scrum), where each team member shares their progress and discusses problems.
- Sprint Review: After the sprint is completed, the team holds a demo for the Product Owner and other stakeholders, showing what was done during the sprint. It could be a presentation of a new character, a game demo at a new level, or a showcase of how a new feature works.
- Sprint Retrospective: At the end of the sprint, the team holds a retrospective, where they discuss what went well and what can be improved and make an action plan to address issues and improve work processes for the next sprint.
The Sprint Retrospective is a key moment in Scrum that allows the team to focus on self-improvement. It will enable the team to assess their work and determine which workflow elements should be retained and which need to be changed.
KANBAN
The main principle of Kanban is to visualize the workflow. Work is divided into stages and visualized using a Kanban board, which typically has columns for different task states such as «To Do», «In Progress», «Review», and «Done». Each task is represented by a Kanban card, which is moved across columns according to progress. Toyota developed Kanban as a project management methodology, a system aimed at improving efficiency, work transparency, and minimizing waste.
The main principles of Kanban:
- Visualization of work: The Kanban board reflects the current state of all tasks, helping the team see the overall volume of work and its progress.
- Work in Progress Limit (WIP limit): Kanban suggests limiting the number of tasks in progress in the same column to prevent overload.
- Flow management: Kanban focuses on a smooth and steady flow of work, not on individual iterations.
- Continuous improvement: Teams use a cyclical process of reflection and improvement to improve their workflows constantly.
Suppose you have a team of developers working on a large project. They’ve decided to use Kanban to manage their tasks and progress. Here’s how they might implement this:
- Creating a Kanban Board: First, the team creates a Kanban board with four columns: «Backlog” (task list), «In Progress», «Testing», and «Done».
- Filling the Backlog: The product owner (or project manager) populates the «Backlog» column with tasks, which include a description, priority, deadlines, etc.
- Setting WIP Limits: The team decides that the maximum number of tasks in the «In Progress» and «Testing» statuses should not exceed 5. It is done to ensure the team is adequately prepared and to ensure its focus on specific tasks.
- Working on Tasks: Developers pick tasks from the «Backlog», move them to «In Progress», and work on them. Once a task is completed, it is moved to «Testing».
- Testing and Closing Tasks: After testing, the task is moved to «Done» if it has been completed according to requirements or is returned to «In Progress» if more work is needed.
- Continuous Improvement: Regularly (for example, every two weeks), the team meets to reflect on and discuss ways to improve their working processes.
This simple yet effective process allows the team to visualize their work, focus on the most important tasks, easily adapt to changes, and continually improve their work.
EXTREME PROGRAMMING (XP)
Extreme Programming (XP) is indeed an agile software development methodology designed to ensure high-quality development and the ability to adapt to changing customer requirements. Kent Beck initiated it in the late 1990s.
The main aspects of Extreme Programming include:
- Collaborative Planning: Customers and developers actively collaborate in defining and prioritizing user stories, which form the basis for planning in XP.
- Small Releases: The product is developed in small, manageable iterations. New code is released for customer review every 1-3 weeks.
- Simple Design: XP encourages a simple design and continuous code refactoring to improve its structure and cleanliness.
- Pair Programming: This method involves two programmers working together on one computer. One writes code while the other reviews it on the fly, and they constantly switch roles.
- Test-Driven Development (TDD): Developers write unit tests before writing the functional code and then refactor it until the test passes.
- Continuous Integration: Code is integrated and tested several times daily to detect and correct problems immediately.
- Sustainable Pace of Work: XP encourages developers to work efficiently but not to exhaustion. Overwork in the long term reduces productivity.
Extreme Programming is considered one of the most disciplined software development methods, requiring strict adherence to its principles and practices. Following these principles, a development team can maintain a high-quality standard, adapt to changing requirements, and deliver effective software products.
FEATURE-DRIVEN DEVELOPMENT
Feature-Driven Development (FDD) is an agile methodology aimed at short iterations and incremental delivery of software features. Jeff DeLuca and Peter Coad developed it in the late 1990s.
Here are the key elements of FDD:
- Develop an Overall Model: The first step in the FDD process is to create a model of the system that encompasses all of its main aspects. Typically, this process is carried out through discussions and modeling sessions involving the entire team.
- Build a Feature List: The system’s features are formed and organized into a list. Each feature should be small enough for the team to develop within one iteration.
- Plan By Feature: The team plans iterations based on the feature list at this stage. Planning includes determining the order of feature development and responsibilities for them.
- Design By Feature: A detailed design is developed for each feature. It may include creating diagrams, writing pseudocode, or creating prototypes.
- Build By Feature: Each feature is developed, tested, and integrated into the main system.
FDD is considered a very effective methodology for large teams and projects, as it provides clarity of process and allows easy scaling of development. By focusing on individual features and developing them one at a time, teams can deliver frequent, tangible progress while maintaining flexibility to adapt and respond to changes.
DYNAMIC SYSTEMS DEVELOPMENT METHOD
Dynamic Systems Development Method (DSDM) is an agile software development methodology. It was developed by the DSDM Consortium, a non-profit association, in 1994. DSDM is based on the principle of rapid development, focusing on the strategic implementation of projects while maintaining flexibility and active stakeholder involvement.
Here are the main elements of DSDM:
- Active User Involvement: DSDM requires that users be actively involved in the development process so they can provide their input and give feedback in a timely manner.
- DSDM Teams: Teams working with DSDM must be well structured and organized. They must have a clear leader, but all members should be able to influence the process.
- Frequent Delivery: One of the key aspects of DSDM is systematic and iterative releases. It means that users have access to early versions of the product for testing and feedback.
- Embracing Change: In DSDM, changes are seen as a necessary part of the development process. It means that teams must be ready to change requirements at any time.
- Testing Throughout the Life-Cycle: Testing in DSDM is used to check the final product and verify the development process and ensure that requirements are met at all stages.
DSDM is suitable for projects where quick delivery is an important factor, as well as for projects with high uncertainty or variability. By encouraging active user involvement and embracing change, DSDM aims to deliver software that closely meets the users’ needs and can quickly adapt to changing requirements.
All these methodologies (Scrum, Kanban, Extreme Programming (XP), Feature-Driven Development (FDD) and Dynamic Systems Development Method (DSDM)) are variants of Agile practices and methodologies that are based on the Principles of the Agile Manifesto. Each has unique aspects that dictate how they approach product or service development.
- Scrum is a flexible and iterative methodology focused on continuous cycles of feedback and improvement. It’s suitable for projects with a high degree of uncertainty or volatility.
- Kanban is a methodology focused on work visualization and limiting the amount of tasks being worked on simultaneously. It helps improve workflow efficiency and reduce cycle time.
- Extreme Programming (XP) emphasizes close collaboration between developers and customers, frequent testing, and continuous release of the product for optimizing feedback and improvement.
- Feature-Driven Development (FDD) is a model-oriented short-term development methodology focusing on feature development within the context of the overall product model.
- Dynamic Systems Development Method (DSDM) is a methodology focused on active user participation, frequent deliveries, and readiness for change.
When choosing a methodology, it’s important to consider the specifics of the project, the team, and business goals. For instance, if you need speed and flexibility, Scrum or XP might be the appropriate choice. For projects requiring a high degree of discipline and detail, FDD or DSDM might be better options. Kanban or Lean could be ideal for projects focused on continuous improvement and process efficiency.