We recently met with the chief architect of a company starting a large project to reinvent their core application platform. They previously used commercial software and so had less reason to use agile practices. He asked: how can we start agile development?
Agile fundamentally breaks big problems into small increments. The approach emphasizes code over documents, and continually involves users or customers. Agile is also a mind-set: teams practically deliver and refine in iterations rather than starting with an extended period of document-driven analysis to arrive at a complete solution.
Agile can be adopted in stages. At the CIO level, start with basics including iterative delivery, continuous integration where developers all check their code in to confirm fit, and unit testing that confirms that a small element of code performs as intended. Steer away from theoretical debate about the various flavors of agile practices, like Kanban or scrum, and start with practices common to all forms.
The most important aspect of the first phase is maintaining a disciplined cadence of iterations. This allows business sponsors to build confidence in the development team, and shows that DevOps (developer operations: the group operating the infrastructure for agile practices) is effective. IT leaders should be firm that each sprint delivers well-tested code approaching readiness for production. This catches problems early and provides a foundation for making nimble changes as needed.
In the first phase, IT leaders are just getting people into a regular rhythm. A second phase can increase precision. Continuous integration can be extended to include static tests for code quality and security, and automate performance and functional tests. Developers should target a higher percentage of code coverage for unit tests.
A third phase can move past automating integrating and testing code to include deployment into production. Advanced agile practices can also measure code quality, test security (“devsecops”) and provide feedback to developers. For example, our equities technology team at Citigroup built a system called Gauge that provided a broad range of metrics on developers’ quality through interactive visualizations. It was eagerly adopted, and became part of talent review practices.
Starting agile techniques is about leading people more than engineering. CIOs should encourage bottom up, organic adoption rather than setting top down imperatives. IT leaders should seek out junior managers who are passionate about agile practices, and have them build coalitions.
At Thomson Reuters, we formed teams led by junior managers who recommended how to adopt agile practices. This Socratic approach also tends to result in more concrete and immediate changes compared to changes imposed by senior leaders who may be less aware of day to day processes.
In summary, adopt agile in iterations. Find junior people to act as sponsors and build grass roots support. Start with fundamentals of iterations, continual integration, and unit tests. Get basics in place and show business sponsors that IT dependably delivers on a disciplined cadence. Later, expand automated testing and deployment. In my experience, these practices will motivate people, improve quality, and accelerate execution.