The introduction of DevOps practices to a company’s everyday life brings indisputable benefits described in one of our previous articles. But how has the transition to this work culture influenced DAC? The changes reached far beyond the development and operations team.
Over time we developed a real DevOps culture affecting each team member across DAC, our partners, and clients. The first, and most significant step, was to redefine trust in the team.
Work culture redefinition
Moving issues from one team to another creates bottlenecks that slow down the development process. We’ve decided not to divide the company into too many divisions to prevent the responsibility dissolution. When an issue occurs, there is no way to pin it to anyone else than a person or a team assigned to the task. It is their responsibility to make things work from the very beginning to the moment the feature appears and works on production.
“It works on my machine” is not something that you hear around our team, unless it is a joke. The task is considered completed only when the feature is deployed to production, and it works there, not locally. – says Adrian Nicos, Solutions Architect at DAC.
This approach made each team member feel that they really influence the ongoing project. They are equally responsible for both failures and successes, and the latter is widely known as a significant satisfaction factor at work.
Development of new skills and continuous learning
The primary DevOps tool that each developer in DAC needs to be familiar with is Kubernetes, a Container Orchestration Software we use for automating deployment, scaling, and management of containerized applications. From the moment Kubernetes became part of the toolset, we eliminated many of the manual processes involved in deploying and scaling containerized applications. Our team works with Docker for developing, shipping, and running applications and Helm to manage Kubernetes applications.
To make all team members familiar with new tools, we focused on internal education. In this approach, developers more experienced in DevOps practices were training other colleagues, starting with a theoretical introduction, through practical exercises, and finally by supporting their first steps at work with a new toolset.
We believe that peer-to-peer learning is one of the most effective ways for software development teams to improve.
Development cycle improvement
Continuous integration saves a lot of time. All developers’ changes are merged together several times a day. In the past, we had to wait for release day, which used to cause integration challenges. Testing automation enables continuous monitoring and checking whether the application suffers malfunctions when new commits are integrated.
Depending on the project and customers’ requirements for the workflow, we follow the continuous delivery or deployment principles.
Continuous delivery adds an automated release process and allows for the deployment of the application anytime. All it takes is just one click of a button for anyone responsible for the change. Our developers deploy to production as often as possible, making it easier to deal with potential issues as small batches of code are easier to investigate for errors.
When the change passes all stages of production, it may be deployed to customers. It does not require a presence of a dedicated team member responsible only for releases since the whole process is automated. There is no Release Day anymore since all changes are deployed continuously (hence the term continuous deployment).
After each deployment, an application undergoes a series of automated tests. When something does not work, Kubernetes rolls back the update and brings back the latest, stable version. This approach’s most significant benefit is that our systems are characterized by zero downtime, which would be impossible without DevOps tools.
Continuous delivery and deployment take down a lot of pressure from the team members as the previously performed actions are now fully automated.
Days to hours or minutes
The progress on the project is much easier to monitor. DevOps work culture resulted in a slight modification of a traditional scrum framework. Thanks to continuous integration, delivery, and deployment, we can foresee possible problems in advance and estimate time in sprints with much greater precision than before. It translates to better accuracy in cost estimation and lack of overtime for unpredicted tasks.
What is the value for the customer?
Implementation of DevOps tools for new software development projects enables significant time and money savings in the future. One of the best examples is when a system needs to be moved between two cloud services (e.g., AWS to Azure). Cloud portability is easier and faster, which means less money needs to be spent on such an operation.
When our team starts developing an existing product for a customer, we usually recommend Kubernetes implementation due to the potential future savings. It might seem costly and time-consuming in the beginning. However, it should be considered as a time investment to shorten time-to-market in the future.
Effective DevOps strategy helps with the reduction of technical debt in older systems. A team familiar with the right tools can, e.g., update programming language versions much faster than others. Feature management is also more comfortable and cheaper for the customer in the future.
DevOps approach is driving innovation.
DevOps mindset drives the utilization of the newest technologies and technology stacks. Due to the ease of upgrades and the speed-up of the development cycle, teams are more encouraged to experiment and test new solutions. When it comes to working with emerging technologies or implementation of results of R&D projects, it is crucial to iterate fast as it stimulates learning and allows for constant improvement.
The culture of innovation is a vital part of everyday work in DAC. We always look for the best possible solutions, and thinking outside the box is embedded in the company’s DNA. Adopting DevOps strategies encouraged our team to solve customer problems and speak up each time they notice that something may be done faster, easier or cheaper without giving up on the best possible quality of delivered work.
Increased autonomy and sense of responsibility of our developers followed DevOps implementation in DAC. Team members see that they are not only cogs in the machine, but have a great impact on the final product they work on. – comments Agata Gwardyś, Operations Director at DAC.
The transition to DevOps changed both the way we work and the way we think. Keeping in mind that it is not a finite process, we observe how the new mindset penetrates each organization’s division. Programmers tend to write things that already exist because they don’t know that there are tools that will solve the problems for them. With DevOps knowledge, we can better design systems, because the area in which our team moves is not limited to a programming language or framework.
If you are interested in more information about DevOps culture’s possible impact on your organization or product, contact us or subscribe to our newsletter.