What is shift left concept means in AGILE? What is agile and shift left concept? How to use it in a software development life cycle
Simply, the term "shift-left" means integrating QA early in the development cycle. Another way to think of it is: test early, test often. Shift-left ultimately advocates for Quality Assurance over Quality Control.
With traditional waterfall development, QA and testing didn't start until after development was finished, often the bottom of the waterfall. If you look at a Kanban or Scrum boards like Jira or Trello, QA and testing are on the right, so this can be called shift-right.
With Agile and Scrum development, the idea is to ship product/code faster in a more iterative loop.
When you develop software in a traditional waterfall or shift-right manner, side effects can occur like:
- It costs more in time and money to make software and to fix bugs. Finding bugs post development or post-deployment always costs more time and money to fix.
- The software contains more bugs, thereby, creating technical debt since you are waiting until development is done before you start testing.
- Any delays or bottlenecks are blamed on the QA team, even if those delays are created further up the development chain.
- QA doesn’t have enough time to do adequate testing before release.
- Information Silos. Information is not shared or members of the team only care about their piece of the puzzle.
When you take a shift-left approach, you put more emphasis on process and finding bugs before development starts. It's about being proactive instead of reactive. Some benefits:
- QA collaborates with other team functions -- PMs, UX, Developers, DevOps, etc.
- QA is able to question the requirements and the designs. This allows the team to find bugs in the requirements and the designs, which can be fixed before development starts, which saves time and money. A requirement bug is when ambiguity exists in the requirements.
- Getting questions answered early allows the team to understand “why” a feature is being developed and the purpose of the requirements, which creates clarity. Gaining clarity prevents bugs from occurring. Ambiguous designs and requirements are a big reason why bugs exist since devs and QA might have different perspectives, questions, concerns.
- QA is able to start test planning and write test cases before development starts.
- QA can create a plan and strategy for test automation, even begin to write automated test cases. Devs can also run existing test automation.
- The whole team owns quality, not just QA.
I've been advocating for shift-left on the teams I've worked on over the last 4-5 years. I have often found shift-left occurs more and is more accepted when using a Scrum approach. If you are using agile-fall, a faster version of waterfall (weeks instead of months/years), then shift-left is less accepted, though shift-left can still be utilized.