In the News:
CIO Review – by Manoj Khanna, Chief Agile Coach and Eli Feldman, CTO-Advanced Technology, EPAM Systems
In today’s technology-fueled world, organizations are undergoing total digital transformations in order to optimize existing processes and develop innovations. This has created a shift for CIOs in how they balance existing operations while supporting multiple objectives at the same time. With customers constantly interacting with products and services directly through the software they touch, if the software fails, the brand suffers. This has led CIOs to view software as encompassing the entire product and service experience and, with the constant pace of development and delivery, focus on the critical role quality plays in achieving transformation. As the complexity grows within the application development world, changes are inevitable on how quality in software is attained. These challenges call for a strategy and approach that addresses critical components towards the delivery of a product and/or system. The next-generation of business technology solutions need a shorter time-to-market, are increasingly customized, and are created and delivered in ever-accelerating cycles using agile methods. This is why Multi-Speed IT makes sense and why our focus should be on building quality into the process, right from the start.
Why Multi-Speed IT?
Most Enterprise IT landscapes remain very complex machines. Multi-Speed IT represents the difficulty of balancing speed and risk for these enterprises as newer applications and digital platforms have to become nimble. As brand-new solutions rely on existing systems, the existing systems must keep pace. As an example, think of a car engine – the smaller gear moves much faster than the larger one and when the two gears interlock, they remain perfectly aligned to keep the car in motion and accelerate it further. This process is almost parallel when thinking about Systems of Records and Systems of Engagement.
Multi-speed IT exists because of the chasm in delivery methods, risk tolerance, technology and cultures (in particular with acceptance of Agile and DevOps) among the different islands in IT. Multi-Speed IT can be used as a bridge towards enterprise agility and iterative improvements across both types of systems. Organizations today need to adopt different processes and tools that are required for them to be successful in this digital platform development and transformational journey.
The Quality Within
The fluid nature of modern applications, platforms and products and the business challenges they address makes them inherently complex. Engineering practices are well suited to manage such complexities. The practice of Quality Engineering ensures that the methods employed in delivering the software are consistent with the quality outcomes. We call this engineering excellence “The Quality Within.” The goal is zero defects coming out of a unit of development work, well before the Quality Assurance team is called in to validate quality. In practical terms, it includes the strict use of architecture quality attributes and code review, solid test coverage, continuous validation, integration and deployment methods, TDD/BDD approaches and Extreme programming type methodologies. Quality is the responsibility of the development team (or the “DevOps team” in its broadest sense) and each of its members. In some cases, certain team members (like Quality Engineer or Developer in Test or Test Automation Engineer) are tasked with helping implement quality building blocks.
Why Quality Assurance?
While modern applications should greatly benefit from “the quality within,” Quality Assurance and Validation and Verification will continue to be required in regulated setups and complex multi-system integrations. Enterprises willing to provide high-quality products and services to satisfy customer needs and expectations and dealing with complex application landscapes, must establish, manage and monitor the end-to-end quality and the integrity of their systems. Quality engineering and quality assurance together constitute critical quality systems, and both are an integral part of quality management.
How do we bring this together in Multi-Speed IT?
In order to bring all of this together as part of multi-speed IT – we need to look at a combined delivery model. Using a car manufacturer’s lean assembly line as an example, components of the product are expected to be delivered at the necessary quality level and assembled into the end product. The Quality Assurance team verifies that the integration is done correctly and that the overall product works as expected. If, as part of the integration testing, they find a fault with the component, they would question the entire batch of components and send it back to the component supplier. Thus making the supplier accountable for the quality of its work.
Similarly, in product and platform engineering and continuous improvement-multiple streams come together to create value. The modern application teams must be accountable for the quality of components they deliver through quality engineering practices. The classic Systems of Records development and integration teams would rely more on the quality assurance practices. And, the end-to-end validation would be done by the Quality Assurance team but it doesn’t end there.
The model should continuously evolve to optimize the end-to-end delivery methodology, architecture, technology, tools and processes. The testing strategy should be reconsidered with a focus on waste elimination through pervasive automation; developing general contempt for technical debt and adopting a critical focus on quality and time to value.
Ultimately, the lines between Quality Engineering and Quality Assurance and the various speeds in IT should overlap. Quality Engineering will increasingly reduce the need for a “second set of eyes” (with the exception of regulated systems) and Quality Assurance will increasingly adopt automation and other development practices and integrate with the “product teams”.
Quality begins at product inception and follows its entire life-cycle until the time its retired. Throughout the development and continuous improvement phases, it becomes critical for companies to maintain the kind of quality their users expect. For the most part, business drivers win, but occasionally the battle of the architectures and new thinking comes into play, which challenges the status-quo.
What about the low-level code stuff?
As we learned above, in order to build the quality within there should be a drive to improve modularity in software development at a granular level, especially when it comes to multi-speed IT, to keep the development more flexible, scalable and reusable. The key areas where the two gears interlock and keep the engine running, come to a point where they evolve, and with evolution comes extensibility in configuration, stable design patterns, and stable environments. The following key component concepts will help cover this concept as a whole and give focus to the critical areas needed to address overall quality assurance and management:
- Extensibility of Systems – It is an intrinsic measure of the ability to extend design thinking where implementation of focused systems is on future growth.
- Sustainability of Systems – Maintaining and addressing the aspects of code decomposition and re-composition through proper mechanisms and practices, while keeping the code base fast and flexible.
- Stability of Architecture and Design – This directly affects addressing high-volatility and various dependencies due to the complexity of systems and applications within multi-speed IT environments. The focus should be on promoting better design stability in a realistic software development process.
- Configurability of Systems – Configurability offers a high degree of confidence within middleware-architecture, enhancing experience in customizing middleware based on user needs, providing the ability to build a well thought out release plan to determine an effective solution.
Original article is here.