To achieve these goals, effective organizations seek out SCM solutions that enable them to do the following:
- Use streams to isolate change according to levels of software maturity and levels of functionality. This enables an efficient, parallel pipeline that avoids the integration “log jam” common to traditional branching techniques. Old-school tools can’t provide the isolation and structure needed to drive this level of agile delivery and software change.
- Implement change packages to allow delivery of change independently from other changes. Developers should be able to promote, demote, and “cherry pick” code at user-story levels of granularity. Traditional SCM tools that manage change at the file or transaction level make this extremely difficult and error prone.
- Simplify inheritance to drive continuous integration by propagating changes frequently and in small, manageable batches across parallel development streams. The ability to have changes propagate forward and backward within the development pipeline is critical.
- Maximize automation and traceability to remove error-prone, manual tracking of code to issues. This also enables developers to see progress being made against an iteration or larger epic. The ability to visually model and control the development process is essential to knowing the true state of code.
When you can tick all of these boxes, you have a pipeline optimized for continuous delivery, a pillar of agile development.
3. Use a Hybrid Model for Legacy Development
Developing legacy software demands a special “hybrid agile” model that combines aspects of agile with waterfall approaches. Using a hybrid model, overall project planning may remain “stuck” in the waterfall, but teams can still work on delivery in an agile way. The important thing is to be as agile as possible in your implementation, even if your planning processes are not 100 percent agile.
For example, focus on developing sections of code that have been identified as needing innovation. The model serves as a blueprint for defining the relationships between legacy software and new integration components. Using your SCM solution to define the interfaces between waterfall-developed legacy code and new code enables companies to move forward with agile through small, evolutionary changes.
4. Scale Your Agile Process
One of the great things about agile for enterprise organizations is how well it scales. Simply expand the Scrum concept up to the next level of management, creating a “Scrum of Scrums” (SOS) led by the director or VP of engineering as the product owner. Above this level, create a product steering committee to serve in an advisory role on strategic goals, such as portfolio investments and product roadmaps.
During SOS meetings, each Scrum team discusses its progress, issues and impediments, allowing teams to share and benefit from each other’s experiences. Perhaps the most crucial role of the SOS is to define the minimum definition of "done."
Finally, implement a portfolio dashboard to track the planned release backlog versus the velocity in order to predict which releases are headed to release candidate status.
Managing this scaled SOS structure is a lot easier if it’s supported by an agile-centric project management solution. Ideally, your project management solution should be integrated with your SCM to create a “closed-loop” approach. This unifies everyone involved—from planning and project management to development and delivery—facilitating effective communication, collaboration, and feedback to drive greater accuracy, speed, and quality.