Most software companies separate their engineering teams by function or by technology. They each focus on a different part of your software, which means they also use different coding languages, frameworks and tools.
A siloed organization makes sense when we think about building agile teams that are owners of their own projects. But the problem arises when these different teams are too technically distinct. Because of that, they work independently from one another, so much so that they do not even need to work together anymore.
Each team only has a rough idea (if any) of what the other is doing, unaware of the challenges or progress the others are going through. Groups within the same company become separated by roles. It goes without saying that the overall cohesiveness of your product takes a hit.
1. Encourage cross-functional collaboration
Everyone is involved in giving users the best digital experience possible. .. and that goes for Engineering teams as well. Separating teams by function is natural, but when groups are detached from another then that limits their ability to work together. Instead you need to understand that everyone has to work under a common goal, and in that sense they need to share their progress, their challenges, and their ideas.
Engineering teams are usually segmented into distinct functions: your Developers and QA troubleshoot user issues, Ops monitor the overall health of your software etc… When you are trying to be more Agile, it makes sense to create these distinct technical groups. Yet when you look at this from the perspective of user issues it becomes clear: everyone is working towards the same goal — creating a bug-free and reliable website.
Now, it is true that the term ‘digital experience’ can scare some off because it has always been attached to Marketers and Product Managers.
But nowadays, the digital experience itself is the software. Engineers have a central role in this.
To avoid silos, you need to center your software development around user issues rather than technical ones, so that you encourage the formation of cross-functional teams and most of all, communication. Everyone needs to be aware of the issues they find and the ideas they have to fix them. And that brings me to the next point.
2. Unify your different observability tools
As we’ve mentioned, your teams should not exist in isolated silos: they need to have a sense of working together towards a common goal — building the best software for their users.
In many cases however, fluid collaboration between cross-functional is impaired by the tools your different engineers use. Let’s take a look at all the tools you need to identify issues across your software:
- Application Performance Monitoring (i.e. New Relic, Datadog)
- Log Management and error tracking tools (i.e. Splunk, Elastic, Sentry, Bugsnag etc.)
- Real-User Monitoring (Catchpoint, Dynatrace)
- Session Replay tools (i.e. Hotjar, FullStory, etc.)
When data comes from so many different sources, it becomes difficult to communicate the information between teams, either because they don’t use the software, or because they don’t understand it.
In order for your different team members to discuss and share their findings you need to use platforms that combine the data from all your different tools so that you have a unified view of the health of your entire software. That way, whenever one Engineer finds issues that they cannot personally solve, they can share their findings with one of their more skilled teammates.
Basically, you need to give your Engineering teams a common platform to work and collaborate on. By giving them the power to work together, they will be able to share information more fluidly. And that is how you foster progress.
The problem with silos is commonly known: it creates bottlenecks and reduces the cohesiveness of your overall application. It’s evident especially when it comes to troubleshooting.
At the simplest level, engineers become silo-ed when they have little to no interaction with the other engineering teams within the company. To avoid these barriers, make sure that your teams can collaborate on a unified platform, to solve common issues. By investing in tools that unify your different teams, you break down the silos.