Delivering digital transformation: Why automation and creating a high-performance engineering culture are vital to digital success
A key part of digital transformation is actually changing the way you develop software. New technologies such as mobile, progressive web, cloud, big data, and machine learning create increased demand for entirely new skills. The fast pace of innovation requires new processes like Agile development, continuous delivery, DevOps, and rapid experimentation. This has led to many companies that have embarked on their digital transformation journey to recognize that they just can’t do it the old way and need to adapt to stay competitive.
At Grid Dynamics, we’ve helped guide many Fortune 500 companies through their digital transformation journey. And we believe that establishing a high-performance engineering culture is a critical part of that journey as it allows for rapid software development without sacrificing quality.
In this article, we outline how injecting a high-performance engineering culture, automation practices, and cloud resources helps companies scale their organizations and deliver engaging digital experiences for their customers.
Scaling engineering to go digital
One of our clients, a fortune 500 retailer, was aiming to be at the forefront of brick and mortar retailers going digital in order to compete directly with native technology companies. Delivering an omnichannel experience would mean needing to build an e-commerce platform from scratch. To do this however, they would first need to build up their engineering team’s capabilities. This effort required scaling their initially small team of engineers to the hundreds of developers that would be required to build out new customized features and create an online experience that could rival digital giants like Amazon.
As their engineering team grew, the processes, tools, and environments used to test and develop new features simply couldn’t keep up, hampering their upward trajectory. Recognizing the critical need to nurture innovation, the retailer looked for external help to improve the engineering team’s productivity while it scaled.
At this time, Grid Dynamics was helping the client build their omnichannel commerce platform. The client was a trailblazer for going digital as well as embracing microservices architecture. Using their own full time employees, and engineering vendors, including Grid Dynamics, they built a number of teams that each worked on a different service or component of the omnichannel platform.
The client’s engineering managers were particularly impressed with the pace and quality of Grid Dynamic’s new feature delivery. Despite working in challenging environments, our teams stood out for being able to deliver features faster, more reliably, and with little to no rework compared to other teams. The client’s top management also noticed this and asked us to analyse our engineering practices with the aim of trying to figure out why our performance stood out. Their hope was that our internal practices and expertise could help them solve their problems with innovation and engineering productivity.
Working with the client, we conducted a joint analysis where we surveyed our own practices and compared them with the client’s processes, tools, and practices. We found that Grid Dynamics’ success was due to our high-performance engineering culture and strong focus on automation and cloud-based resources.
Now let’s take a closer look at how these practices and processes directly contributed to productivity and performance gains.
Creating a high-performance engineering culture
Agile development - Our approach to Agile was successful because we focused on end-to-end delivery rather than just code completion. At the end of every sprint, new features were successfully tested and deployed, so they were not just “dev complete.” Delivery was faster and more reliable since we included testing and deployment in each sprint.
Product mindset - Our teams treated every project as a product. The process involved building a minimum viable product and then making small feature changes to improve performance according to pre-defined KPIs. If possible we would then A/B test those features in production and use the analysis to make additional changes.
Cross-functional teams - We designed our teams to be cross-functional. This means they were small, 100% focused on the project, and every skill that was needed to complete the project was present on the team. Additionally, every member of the team understood the role of every other team member, which helped improve task coordination and overall efficiency.
Highly skilled engineers - We, as a company, strived to hire only the top 5% of engineers who were familiar with the latest technologies and attended the best technical universities in their region. We believe that engineering talent provides exponential value and having a few senior highly skilled engineers with the right technology culture lifts the performance of an entire team.
Relying on automation - we relied heavily on end-to-end automation to ensure our software was built quickly and was error-free. This included:
- Automated testing - We automated 100% of functional testing so that every change could be tested immediately. Our testing practices were comprehensive and spanned functional testing, unit testing, integration testing, regression testing, and performance testing.
- Automated deployment - We automated the deployment and environment provisioning so that deployment could proceed quickly as soon as all the necessary approvals were given.
- Continuous integration continuous deployment - We built CICD pipelines to ensure there was a one click solution to complete testing and automated deployments, which ensured rapid changes to production that were fault tolerant.
Cloud resources - Having to wait for client IT departments to provision hardware can delay teams weeks or even months. We addressed this issue by gaining approval from IT to allow us to directly use cloud resources to provision our test and dev environments on demand, which significantly sped up development.
Integrating Agile development, automation and the cloud into engineering teams
Upon completion of our joint analysis, the client asked us to help them integrate our proven tools and practices into their engineering teams to boost their productivity. Our approach involved replicating the elements that we’d identified would be the most beneficial and to scale them to the client’s entire engineering organization. This involved:
- Building CICD tooling where test and dev environments could be spun up on-demand in addition to implementing public cloud infrastructure, which would relieve IT from being a resource bottleneck.
- Building a complete test and deployment pipeline with 100% coverage for functional testing and automation for deploying and provisioning environments. This would ensure that development would be faster, cheaper, and more precise than manual operations.
- Ensuring knowledge transfer of the most important aspects of building and maintaining a high-performance engineering culture, DevOps, Agile development, and a product-based mindset. This was achieved by working with the client’s engineering teams on co-creation projects, holding technology days, and inserting Grid Dynamics engineers or high-performing client engineers with the right skills and cultural mindset into underperforming teams.
- Optimizing the client’s engineering teams so there was an ideal ratio of junior or staff engineers to senior engineers with the right skills and understanding of Agile development and DevOps culture. This ensured the correct skills and practices were present on every team without the expense of working solely with highly trained engineers.
Delivering and scaling digital transformation
The result of our efforts to put in place a high-performance engineering culture, automation, and cloud resources enabled our client to scale its engineering team, boost productivity, and meet its digital transformation goal of building a unified commerce platform. After our collaborative efforts, it was clear that we had helped the client to completely transform not only the size of their engineering team, but also its practices and culture.
The following outlines the tangible results of our efforts:
- The CICD platform now supported over 3000 engineers, more than 200 teams, and the time between code commit and production deployment was reduced to under five hours.
- The time to provision a new test or dev environment decreased significantly from one month to one hour.
- The time to rollback a change was reduced to one to two hours.
- Test coverage increased to 100% and full end-to-end testing could be done in one to four hours.
- The cloud microservices architecture platform we built is now capable of running hundreds of services with over 16000 virtual machines of equivalent compute capacity.
- While the client still chose to do major releases on a weekly or biweekly basis, our system now allowed the client to push changes many times a day. This provided the option to perform hotfixes wherever needed.
- The client could now scale the entire engineering team while keeping costs linear.
Overall, the client’s time to market is now ten times faster and their digital platform can be leveraged to achieve exponential online revenue growth. They can also retain customers who may otherwise have had a bad digital brand experience and moved on to a competitor. These transformative results proved the value of having a strategic technology partner. We were able to bring fresh ideas and practices to the client and enable knowledge transfer through co-creation projects. Our experience with emerging technologies and highly trained staff was able to accelerate this effort and ensure that it was ultimately successful. If your organization is looking for this kind of long term Agile co-creation strategic partner drop us a line.