This year marked the 15-year anniversary of the writing of the Manifesto for Agile Software Development. Today, I can’t help but marvel at the impact this collection of simple, yet elegantly stated principles continue to have, especially here in Washington, D.C.. Agile has not only changed how we build working software, it has fundamentally changed how we understand our organizations and how we define the business value we produce. With agile, many of us have learned new approaches to prioritizing our work at an enterprise scale, how we can organize our businesses, and even how we can build deeper relationships in the process. Agile development has sparked a new wave of innovation, especially in the Federal market and it’s incredible to think what 2017 will bring.
For those who are doing it successfully, being agile requires the adoption of both an agile-mindset and the incorporation of new software architectures and delivery practices. At TeraThink, we recognize that our clients have very specific needs and objectives for their implementation of agile solutions. We work closely with each client to provide their desired results. Agile is, of course, not without its challenges. Whether it is initial adoption, sustaining agility at scale, or breaking into a more effective CI/CD model, these challenges are significant. I’d like to share a few key observations and strategies that have helped our clients hit their stride with agile.
Strategies for Successful Agile Adoption
Over the past seven years, we have had the tremendous opportunity to help our clients transform from legacy waterfall development practices to agile-based methodologies. In some cases, this involved shifting gears in the middle of a large transformation effort. For others, it was the gradual inclusion of agile development teams to manage sustainment and operations of legacy systems. In each transition, we’ve seen three common factors critical to success:
- Unwavering Commitment from Leadership: Change of this scale requires the belief and encouragement from CIOs and Directors. Leaders must accept that setbacks are an expected part of this journey.
- Deliberate Discovery: Teams rarely deliver high-value software based on how closely they align to a “plan”. Rather, we can best understand what we need to build by discovering value through the software delivery process.
- Code Quantity should never be mistaken for Business Value: Today, organizations are ever more adept at delivering software quickly and rapidly. Our goal should always be to introduce software that is meaningful and impactful to our customers.
Unfortunately, half-hearted attempts at this transition are almost universally unsuccessful. CIOs need strategies that help guide their people from first accepting the change to eventually promoting the new behavior internally. While a leader’s belief in agile is important, that belief must permeate through to the delivery organization. “Coaching the coaches” is our key strategy for long-term success. We believe that building a strong internal coaching and advising staff is critical for any organization. Co-workers are much more apt to buy-in when the message is reinforced by peers and “Agile” is not simply seen as another buzz word coming from management and consultants. In some cases, our clients have internalized the agile practices and are now promoting new changes and innovations to their processes. At its best, agile practices are not just self-sustaining, they are ever-evolving and improving.
Succeeding with Agile at Scale
It’s a well-worn truth that large-scale IT projects fail much more often than they succeed. Management of external dependencies, inter-relationships, and complexity of system code drive the complexity of implementing larger systems. And let’s not forget the sheer number of people involved in the delivery. While these are important factors, the single most damning component of large-scale implementations is Time. The more time elapses during the development process, the greater the likelihood that significant change will creep into the mix. When constraints are no longer constraints, software projects can enter endless refactoring cycles that delay any sort of meaningful release.
Like any change in approach (e.g., software architecture, programming language, cloud deployments), agile development practices may contribute to success in large-scale projects. But…no label or approach is a silver bullet. Today, especially in the federal space, Department or Agency walls no longer define operating environment boundaries. Today’s systems are interconnected, with shared delivery and management of critical APIs. Your software delivery approach shouldn’t just plan for this reality, it should use it to your advantage.
Our agile consultants, software architects and engineers help our clients navigate these challenges and build agile programs to deliver enterprise systems in time-boxed, program increments. As a gold partner of the Scaled Agile Framework, we often incorporate SAFe and other scaling methodologies to build platforms for success for our clients. While a single model may not solve every problem your organization may face, methodologies like SAFe provide an excellent framework for decomposing enterprise-level challenges. We also believe that designing, building and managing agile software delivery must go hand-in-hand. This is why we continuously invest in building and practicing this knowledge across all our team members. Any organization who is vested in delivering agile-at-scale must invest in its people.
Engineering Solutions with Agility in Mind
This is an extremely interesting time for software engineering. For perhaps the first time, we have processes, technology, and infrastructure all available that together support development and deployment of features at an amazing rate. At TeraThink, we continually advance our expertise in delivering software using agile practices. Today we incorporate DevOps tools, along with the capability to implement Continuous Integration and Delivery techniques for our clients. We architect software applications to achieve rapid, automated deployments. Rapid deployment and achievement of high-levels of scalability require both up-front and continuous design.
Today, many of our software architects work with our Federal clients as they begin to incorporate newer deployment models, such as the use of microservices and containers. These concepts introduce highly scalable and resilient architectures for cloud deployments. In addition, they enable our clients to quickly deploy and even evaluate features in production against previous versions of this code. Rethinking software architectures, not just practices, are key enablers for reaching continuous delivery goals.
To support our clients on their agile engineering tasks, TeraThink trains each member of our agile development teams. We work closely with our clients’ IT counterparts to ensure that the knowledge and practices are sustainable.
Where to Go From Here
The promise of agile software development is truly remarkable. Whether your organization is just starting this journey or is looking to continue to expand your capabilities, taking the next step does not need to be daunting. The only agile solution right for your organization, is the one that meets your goals. Here at TeraThink, we have the expertise to make that happen.
If you would like to learn more, you can read about our Agile Engineering efforts on our solution page or you can reach out to us. We would be more than happy to talk with you.
[Editor’s Note: This post was originally published on the blog of Dominion Consulting. On November 1, 2017, Dominion Consulting merged with TeraThink and are now operating jointly as TeraThink. All blog posts migrated from the Dominion Consulting website have been updated to refer to ourselves as TeraThink.]