Previously, we described the concept of DevOps and introduced Azure DevOps, a Microsoft platform designed to help maintain its best practices. In this final part, we will go over how we follow these practices and benefit from them at SoftwareOne. This is our very own DevOps case study. Let's see how to bring these principles to life.
SoftwareOne culture
Before we get into DevOps, let's touch upon our company culture. Ownership, persistence and transparency are our core values. They are what each of our Swomies, especially Project Owners, lives by. In fact, the role of a Project Owner at SoftwareOne has two main responsibilities: to collaborate with development teams and maintain a high degree of service quality, and to remove any obstacles that stand in the way of delivery. It plays an essential part in a DevOps-driven service model.
The “SoftwareOne Agile” Framework
“SoftwareOne Agile” is our in-house framework that ensures a standardised and efficient approach to managing projects. It also helps us to achieve the following:
- a standardised approach to service delivery, in the form of best practices, which are continually being shared and developed (more detail on this in the SoftwareOne DevOps Center of Excellence section, later in the article)
- reporting and project KPIs aligned with our approach. They, in turn, help us to quickly compare, assess and communicate project status (for this, we use Power BI along with the Azure DevOps backlog)
- employees are able to flow between projects and dedicated engineers/teams with little ramp-up and disruption.
We utilise the Product Backlog and have our delivery team work in sprints. This way, they have a clear plan for what to do each week and Project Owners can easily track their progress.
What is SoftwareOne DevOps Center of Excellence?
Our DevOps Center of Excellence is a dedicated team responsible for managing DevOpsbest practices across our organisation. We publish our processes, standards and best practices on a Wiki page in an Azure DevOps project. There, we gather information on the following:
- Process
- Extensions
- Backlog definition
- Dashboards and metrics
- Wiki
- Version control
- Branching strategy
- Branch policies
- Build pipelines
- Release pipelines.
The above sections contain various standardisation details. For instance, in “Branch policies”, you can find the following:
- Direct merge to master – forbidden
- Linked work items for each branch
- At least one reviewer
- Reset code reviewer votes when there are new changes
- Description of what was changed.
Each part of our standardisation has its own description related to DevOps practices.
Azure DevOps from a Project Owner's perspective
Project Owners are responsible for both tracking progress and managing the client relationship. Once we collect requirements, a Project Owner creates a Product Backlog. This is where we keep all requirements and features for any given solution. Based on the backlog, they coordinate the sprint planning process, where we prioritise the features which we will deliver in the upcoming sprint. Each project has a dashboard configured to display project statistics.
Azure DevOps from a Development Team's perspective
Our development team uses Azure DevOps to report work progress on assigned tasks. We mentioned in our previous article that Azure DevOps contains repositories for the source code. Once we develop a new feature, a Development Team member creates pull requests so that other members can review the changes and provide feedback.
Besides code reviews, Development Team also uses Azure DevOps Pipelines to automate application builds and releases. This way, our test teams always have a fresh build to work with.
Team collaboration using Azure DevOps
Our main collaboration and communication tool used by both Project Owners and development teams is Microsoft Teams. Let’s go over a few best practices that we have adopted at SoftwareOne with respect to both DevOps and Microsoft Teams.
Status meetings
We organise our status meetings in Microsoft Teams. During each meeting, the development team shares what they have completed, what they are working on, and current obstacles. We can also display the current sprint directly from Azure DevOps for everyone to see and discuss.
Additional information about project health
We can display project stats in both Azure DevOps and Microsoft Teams. We leverage the integration with Microsoft Teams to access project health data right within the app. There are several channels with project data: we have a build channel that shows build statuses with dates, and a bugs channel that lists reported issues/defects.
Summary of our DevOps case study
As you can see, there are a lot of ways to help maintain best DevOps practices. We touched on just a few of them: team collaboration, deployment automation and version control. Our DevOps Center of Excellence promotes best practices and standards, and every member has a chance to contribute to it. In summary, DevOps is the combination of cultural philosophies, practices, and tools. Which is exactly what we use! Our "SoftwareOne Agile" Framework, Center of Excellence and tools like MS Teams or Azure DevOps help us to improve our development process. Hopefully, our DevOps case study has convinced you to try out this practice. And if you're still unsure, get in touch with us to discuss it further.