To place agile in the proper context, we raise four germane questions:
1)Why should an organization adopt agile?
2) How can agile benefit an organization?
3) What decisions can aid in successful agile adoption and ensure that an organization reaps the intended benefits of agile?
4) What software products are good candidates for agile?
Why Agile? How can Agile benefit an organization?
What decisions can aid in successful agile adoption and ensure that an organization reaps the intended benefits of agile?
- An organization must possess the willingness to part with brittle or failed software architectures that do not adapt well to Agile practice. In short Agile will not work with any old software and there is no way to evolve a brittle or unwieldy architecture through iterative development to arrive at a viable agile architecture. Consider the following realities:
- One of the most fundamental paradigm shifts that is vital for Agile software development is test-ability and test-driven development. Software that is not designed for test-ability is not well-suited for agile teams.
- Experience shows us that organizations who try to superimpose agile on software that is not designed to be testable are prone to fail at agile adoption.
- Similarly, certain software architectures fundamentally lend themselves to agile development where as others do not.
- An organization must be pragmatic about whether it's underlying software architecture is sufficiently agile and understand that an unwieldy architecture will invariably lead to a failure to succeed with agile. A governing maxim: software that is failing without agile practices will almost certainly yield the same results in an agile regime.
- Agile doesn't just happen because it's proclaimed. It takes a great amount of discipline at all levels within an organization to successfully employ agile practices. Furthermore, there are fixed costs for successfully managing agile development which cannot be overlooked. The organization needs to have a reliable and efficient platform and tooling to manage it's agile deliverables. This goes far beyond SCM. products such as JIRA,HP ALM and similar ticket management technologies are prerequisites for a successful agile implementation, simply because there must be transparency and line-of-site visibility of every in-progress activity solution at any point in time for agile to work. Tooling alone does not achieve the discipline. There is a need to devote time and resources to triage status, activities and iterations on a burn-down list.
- Agile is essentially a gateway drug for Continuous Integration.
- In fact you cannot realistically implement agile development methods without having a comprehensive set of tooling for build and release automation that are needed to adhere to the agile cadence.
- SCM is a given, Build Automation with a tool such as Jenkins is also essential and automated deployments are needed. These in turn are commonly gateway drugs for tools such as Artefactory and a variety of other software products that are commonly found within agile teams.
- Agile is also a gateway drug for DevOps and most agile teams cannot succeed without a strong DevOps team supporting the work.
- DevOps greases the skids for Agile development teams and effectively clears the path for innovation by the Development Team by validating key platform decisions and verifying that the technologies that are proposed in a given Epic will function reliably within the release environment. DevOops also serves as the gate-keepers of the environments so that each environment within the release cycle can be certified for use before developers introduce newly released sofware in the environment that may be faulty and may have side-effects that destabilize the entire release environment.