“Mind the Gaps” With Agile Scrum

Traditional software development (sometimes called “waterfall”) didn’t always work efficiently, because it left too many “gaps” between what was expected and what was delivered (as well as when it was delivered).

Properly applied, principles of Agile Scrum increase quality, efficiency, and visibility by “closing those gaps.” Here are just a few ways this happens:

Mind the (Time) Gap
Agile significantly reduces that time gap between requesting a feature and seeing that feature in action. In traditional software development, months, or even years might pass before some “must-have” specification was finally implemented in the “real world.”

Agile uses many short design/development/testing cycles (sometimes called “sprints”), each ending in a product review (“demo”) that lets team members decide early if development is delivering what they really need.

Yes, that means that Agile projects bring a significantly smaller list of requirements to each development cycle (in the form of “user stories”). But it also means that the team sees little problems before they become big problems and can make adjustments earlier.

Mind the (Expectation) Gap
Agile requires specific, verifiable requirements (often called “acceptance criteria”) for each feature, improvement, or bug fix.

At the end of the sprint, the product either meets the criteria or it doesn’t.
Yes, it is possible that the product fulfills the acceptance criteria but still isn’t exactly what was needed. Such an issue may have to be written into a new user story with more specific acceptance criteria. But, again, the user group discovers this a few weeks into the cycle, not several months later.

Mind the (Product Supervision) Gap
Although project requirements can come in from a wide range of sources, Agile makes one person (the “product owner”) responsible for which requirements go into the development cycle, and for deciding if those requirements have been fulfilled at the end of each cycle.

This “buck stops here” approach keeps things from “falling through the cracks” the way they do on committee-led projects.

At the same time, the product owner is relieved of the responsibility for day-to-day management of the development team. In a scrum environment, each team decides how much work it can handle each cycle and which member on each team does which work. Then the team stays aware of each member’s process throughout the sprint with simple tools like task boards. As it turns out, people tend to do better work faster when they are accountable to peers than when they are accountable only to their managers.

Mind the (Communication) Gap
Agile approaches like Scrum team increase day-to-day peer-to-peer communication, reducing the chances of discovering that some big problem occurred after-the fact.

In addition, the demo at the end of each cycle helps the Product Owner to determine if appropriate progress is being made and if it’s the right kind of progress.

Mind the (Prioritization) Gap
In traditional software development, priority changes are often forced to track along with “nice to have” features because so much code is being changed at the same time it is impossible to “fast-track” any individual feature or bug fix.

By feeding a manageable number of user stories into each development cycle, Agile makes it easier to let priority requirements to “cut in line.”

Mind the (Quality) Gap
Often developers focusing only on making things work pay relatively little attention to how well they work or how hard they are to use. By giving fellow team members, the product owner, and other designated shareholders frequent visibility into the end result, Agile helps product owners and other decision-makers determine if there are usability or other issues that should be prioritized before some awkward process or unusable interface is “cast in concrete.”

Agile doesn’t solve all of the potential problems of software development; no process or procedure can. In the end, it’s up to the people working the project to take advantage of Agile “best practices” to do the right work better and faster.