Let's discuss 3 scrum anti-patterns, most Agile practitioners argue there is nothing like these 3 in scrum. But unfortunately, something like this exists.
Sprint 0, Hardening Sprint, and Release Sprint are terms used in the context of Agile software development methodologies. While these terms may be used by some teams or organizations, they are not universally recognized or endorsed by all Agile practitioners. Let's examine each of these terms individually:1. Sprint 0: Sprint 0 is sometimes used to refer to the initial phase of a project where the team sets up and prepares for the upcoming sprints. This phase typically involves activities such as project planning, defining the backlog, setting up the development environment, other infrastructure, training of tools, and establishing team roles and responsibilities. In Scrum, each sprint is expected to deliver a potentially releasable increment of product functionality hence it is definitely an anti-pattern.
2. Hardening Sprint: A Hardening Sprint is a term sometimes used to describe a sprint dedicated to addressing technical debt or stabilizing the product. Technical debt refers to the accumulation of suboptimal or incomplete code, architectural issues, or other imperfections that may impede the development process or degrade the quality. While it is generally considered best practice to address technical debt incrementally throughout regular sprints, some teams may opt for a specific sprint focused on addressing technical debt. The intention is to improve the product's stability and maintainability. However, addressing technical debt should be an ongoing process integrated within the regular sprints rather than treated as a separate sprint, being done in a single sprint, it's again an anti-pattern.
3. Release Sprint: In Agile methodologies, the goal is to have potentially releasable increments at the end of each sprint. A release sprint is a term that implies a specific sprint dedicated solely to finalizing and releasing the product. However, in Agile practice, it is generally recommended to have small, frequent releases to minimize batch sizes and obtain feedback from stakeholders earlier. Agile encourages continuous integration and delivery, so that each sprint's increment can be potentially released, even if it's not immediately pushed to production. This approach allows for flexibility and responsiveness to changes throughout the process. Scrum doesn't encourage an entire sprint to be dedicated to the release process and hence, it's an anti-pattern.
It's important to note that Agile methodologies emphasize adaptability and flexibility, and different teams and organizations may adopt variations in their implementation of Agile practices. The specific terms and practices used can vary, as long as they align with the core principles of Agile, such as iterative development, frequent feedback, and delivering value to customers.