“Our development methods must keep pace with an increasingly complex world driven by software”. – SAFe Foundation
Let’s see the feedback from companies that build those large and complex systems:
“No way to improve systematically…” “Too little visibility…” “Too early commitment to a design that didn’t work…” “Late delivery” “Problems discovered too late…” “Underestimated dependencies” “Massive growth in complexity” “Hard to manage distributed teams” “Phase-gate SDLC (System Development Life Cycle) isn’t helping reduce risk…” “Poor morale”
Why is it so?
Our development practices haven’t kept the pace of technology. In the last couple of years Agile has become mainstream methodology for software development, and Scrum is by far the most popular framework within Agile. In 2012, the authors of the Agile Manifesto met together and identified two main challenges for Agile Software Development for the next decade: (1) delivering “done” software increment at the end of the iteration, and (2) the Agile Enterprise.
“The heart of Agile is conveyed in just four words: Collaborate, Deliver, Reflect, Improve” – Dr Alistair Cockburn. Hence, why is it so difficult to apply Agile on enterprise level? Agile, in particular Scrum, shows the greatest promise, but it was developed for a small number of teams. We need a new approach that harnesses the power of Agile and Lean, and is applicable for the necessities of the largest software enterprises. When we talk about Agile Enterprise, we usually talk about some sort of scaling. When we talk about scaling Agile, we need to take into consideration the following factors:
- Type of application
- Team size
- Team dispersion
- Project duration
In my opinion, secret for successful scaling lies in Dependency Management. We need to find a way to manage (1) dependencies within and between product backlogs, (2) dependencies within software, and (3) team dependencies. Solution is in managing product backlog dependency via grooming, managing software dependency with engineering practices (refactoring, continuous integration, etc.) and managing team dependency with knowledge sharing.
Currently, there are numerous frameworks for scaling Agile: SoS, LeSS, Nexus, DaD, SAFe.
Scaled Agile Framework (SAFe) is an Agile framework, used to govern planning, execution and delivery by scaling Lean and Agile practices at enterprise scale. SAFe synchronizes alignment, collaboration and delivery for large number of teams required to build system-level solutions. SAFe promotes following core values:
- Code Quality
- Program Execution
SAFe is based on Scrum Framework and XP engineering practices, where Agile teams integrate software frequently, apply test automation and build-in quality from beginning. SAFe, compared to the Scrum framework, has some additional roles, events and artefacts to help with large and complex software solutions, developed by multiple Agile teams in terms of alignment, collaboration and cooperation.
SAFe provides a cadence-based approach for building system-level solutions by multiple Agile teams, which are part of Agile Release Train (ART). ART is a long-lived, self-organizing team of agile teams committed to continuous value delivery, which is aligned to a common mission around the enterprise value streams via single program backlog. It operates under architectural and UX guidance, and delivers fully tested, system-level solutions (valuable system-level Program Increments – PI) every 8 to 12 weeks. To achieve that, ART synchronizes with PI Planning, demonstrates the full system every iteration, inspects and adapts every PI. ART brings together the people we need, who are able to deliver larger amounts of value. That includes Business Owners, representatives of the customers, Product Management, architecture, System Engineers, hardware, software, testing, and people involved in manufacturing or deployment of the solution. ART is cross-functional and it has the needed skills.
Rather than to have a commitment on project plan to deliver a successful software (as would be using in traditional methodology), in SAFe Agile teams have a commitment based on PI objectives and that is the main difference. Plan, which is created during RPE (Release Planning Event), helps teams in achieving PI objectives, but teams don’t commit to plan, they jump to achieving objectives. Teams agree to do everything in their power to meet the agreed-to objectives, or to escalate immediately so that corrective action can be taken.
According to creator of SAFe, Dean Leffingwell, if it is properly implemented, SAFe delivers following business results:
- Increase in employee engagement
- 30-75% faster time to market
- 20-50% increase in productivity
- 50%+ defect reduction
Therefore, if your company is building a large and complex software solution, I strongly recommend the use of Scaled Agile Framework. However, for company to be able to utilize SAFe successfully, it requires:
- Proper SAFe training,
- Belief in Agile-Lean values and principles,
- Active engagement of SAFe Practitioner and Coach,
- Significant shift in company culture and for company’s leaders to trust their people and believe that their teams are capable of making decisions and doing the right thing!