2019 is the year that Agile and DevOps go large
There is an increasing wealth of large-scale Agile and DevOps stories to draw on
‘At scale' or ‘large-scale' Agile and DevOps development - sometimes separately but often in the same breath - was a topic that has been cropping up more frequently in the enterprise-IT world. The ‘scale' message is topical because it chimes with how software development increasingly involves the entire enterprise. For instance, IoT products cover hardware and software engineering, while video game development encompasses coders and artists with various specialities. This broader application of Agile is also affected by having to work for distributed teams, stretching what ‘classic' Agile practices such as SCRUM covers.
Many organisations have already experienced success with Agile and DevOps. However, extrapolating the foundations on which those successes are built on a much bigger scale can be a challenge, though there is an increasing wealth of large-scale Agile and DevOps stories out there. Many of the IT industry's brightest brains are also focusing their attention on how to address the ‘at scale' issue to deal with the complexity, sheer volume of content and contributors, often across dispersed environments and locations.
Within the Agile community, fast-growing and emerging approaches include Large-Scale Scrum (LeSS) and large-scale Kanban. This is in addition to the more established Scaled Agile Framework (SAFe), which gives some organisations - particularly more traditional ones - a structure to move to Agile, while others may find it too inflexible. There are also several hybrid variants, for instance combining Gantt scheduling with SCRUM. The latter is indicative of a growing realisation by many organisations it is often better to pick and choose elements that best fit each situation, that rather than sticking rigidly to a prescribed Agile or DevOps approach. There is no ‘one size fits all', even less so at scale.
What is perhaps more important to understand is how to address some of the stumbling blocks that will occur in large-scale Agile or DevOps implementations, regardless of framework. A classic roadblock is the realisation that getting - and keeping - everyone on board is hard to sustain, yet change will be the only on-going constant. Management who initially approved of an Agile or DevOps implementation may find enough reason to abandon it at the first problem, viewing it as a failure rather than acknowledging that change is never easy, it requires work and dedication to reap the long-term rewards. This is why it is essential to look at the entire lifecycle of an application and the concrete business results to understand if sustainable change is happening.
Toolchains need to be reassessed for their scalability: not just performance and speed, but also how usable they are for different contributors (which in large-scale Agile or DevOps can include less technical individuals), whether they fit around people's existing working processes and tools (such as finding ways to enable them to carry on using Git for version control, without sacrificing project-wide control). Also, the file types that need to be included go far beyond just code. This is especially true in IoT projects where there are both hardware and software designers, or in games and entertainment where coders and artists need to collaborate, combining the code with large assets and other types of files.
Adding in new types of tools or re-evaluating the role of existing ones can support ‘at scale' Agile and DevOps. The right tools help to automate processes and create consistent efficiency. Questions to ask include, for example, what does it mean to have a true product backlog? How is that different from just having a flat list of issues or spreadsheets to make decisions? These are crucial questions to answer as no Agile organisation can be go beyond the limits of their tooling.
Continuous code inspection and automated static code analysis, should always happen in the background with minimal manual involvement. Building enterprise-wide development standards helps with consistent reproducibility and code quality across large teams, while also contributing to any compliance requirements.
Automation clearly contributes towards large-scale projects, speeding up productivity and reducing manual error. While not everything can be automated, many routine tasks can, such as automation of test processes, which is becoming increasingly important with the trend towards continuous-testing and ‘Shift Left', where developers are taking on more responsibility for testing earlier in the development process.
However, tools should always be the supporting act and both Agile and DevOps will always rely on the right mindset. While tools can help provide speed and quality, a culture that is truly collaborative, flexible, constantly open to change and seeking improvement, is essential to large-scale adoption of any software development methodology.
Johan Karlsson is a senior consultant at Perforce Software