Creating quality software through Scrum is a fundamental question that many people have. So in this post we explained how Scrum could help teams to create high quality softwares.
Scrum embraces uncertainties of software development
Software development is a highly complex activity, with many uncertainties that are intrinsically part of the work. Every software product or application is a new product, that was never built in the same way before, i.e. with the same requirements, using the same technology, by the same people. Customers don’t know exactly and in every possible detail what they want at the beginning. And, even if they think they do, they likely forced to change their mind; by changes of the market, competitors, or internal strategies.
Software development is a complex work
When mapped on the Cynefin model, software development clearly belongs to the complex category of the model. Complexity is the domain of unknown-unknowns. This requires an empirical approach and emergent practice to harness it. To be successful, it is essential that the applied process makes the unknown-unknowns visible and transparent. Also performing the works through an inspect and adapt approach, called ‘probe-sense-respond’ in the model. Therefore, we need an approach that fits with the explained characteristics to cope with the many uncertainties typical to software development.
(picture from https://en.wikipedia.org/wiki/Cynefin_framework)
Scrum uses empirical process control
Scrum is an empirical process designed to address complex adaptive problems to harness complexity and uncertainties. It guides the Team in two parallel ways to improve continuously. In Scrum we produce the highest value features in a Sprint while improving the process we apply to create those product features. Scrum lays down boundaries that decrease the risk of developing the wrong features. The rules and the time-boxes of Scrum assure that we collect feedback quickly and timely.
ُSprints contain all work which is no more than 4 weeks, so we get feedback from stakeholders based on created increments sooner rather than later. Scrum offers effective inspect and adapt opportunities that allow determining the most appropriate next steps to take, taking into account the latest information on the market, product, customer, budget, etc.
Scrum leads to creating the right thing and thing right
Additionally, you ensure that you’ll create highest value features through Sprint Planning, Team inspect and adapt the Sprint plan through Daily Scrums, get first-hand feedback directly from stakeholders in the Sprint Review and finally improve the development process through Sprint Retrospective, continuously. The Definition of Done makes sure there is a clear and shared agreement of the quality criteria that the product should meet, possibly including passing code quality metrics and non-functional requirements like performance and stability. Consequently, all mentioned concepts and rules help the Team to ensure that they are moving in the right direction and are developing high value and quality software.
*Mr. Gunther Verheyen reviewed and evolved this post. Special thanks to him.