Skip to contentCarlos Rosão

Writing · Tales of Engineering Leadership

Breaking Down the Walls

Overcoming Knowledge Silos

An artistic interpretation of knowledge silos in an organization, depicted as isolated islands in a vast ocean, with each island representing a different team or department. The ocean is calm but expansive, highlighting the separation and lack of connection between the islands. In another scene, illustrate the concept of redundancy in efforts, showing teams unknowingly working on the same problem, depicted as actors rehearsing the same lines for different plays on separate stages. The style should be reminiscent of Leonardo da Vinci, focusing on detailed and intricate illustrations that capture the essence of isolation and redundancy, using ink and light watercolor tones. Throughout my years helping teams dismantle knowledge silos in order to become more robust and adaptable I’ve often encountered skepticism. It surprises me that today many still view these silos as inevitable or even question the need to address them. In my view, breaking down these barriers is not just possible; it’s essential for creating resilient and adaptable teams.

Imagine an organization as a vast network, akin to individual islands in an ocean, knowledge silos are like isolated pockets within this network, making vital information and skills inaccessible to the broader team. This isolation hampers the free flow of ideas and collaboration, essential for innovation and growth. It’s like having a football team where each player only knows their part of the game; the overall strategy remains unclear.

In the context of a product and engineering team, the impact of these silos manifests as inefficiencies and waste. When developers work in isolation, integrating their work into the team’s collective effort often requires additional steps like code reviews and discussions which, since they don’t bring direct value, are waste. These processes, while necessary, are reactive solutions to a silo that ideally shouldn’t exist. Similarly, having only a few team members knowledgeable about specific parts of the codebase creates a fragile situation. What happens if they’re unavailable and a critical issue arises?

Overcoming Knowledge Silos

Illustration of a team of figures in welding masks gathered around one laptop at a table, sparks flying: collaboration in the middle of the hard work. Addressing knowledge silos requires a focus on enhancing communication and collaboration while reducing single points of failure and spreading knowledge. In this light, the value of cross-functional and full-stack teams becomes clear. Cross-functional teams bring together a diverse range of talents – developers, designers, product managers, and more. Each member contributes a unique perspective, creating a mini-ecosystem that reflects the entire company within a single team. This diversity dilutes the reliance on any single expertise, fostering a more inclusive and collective problem-solving approach. In full-stack teams, members have a broad skill set that spans different aspects of development. It’s not about mastering everything but understanding the bigger picture and being able to work on anything necessary to solve the problem at hand. This approach enables team members to move fluidly across areas – from front-end to back-end to infrastructure – cultivating a comprehensive grasp of the domain.

Pair programming naturally fits into this approach too. When two engineers collaborate closely, sharing their techniques and insights, they not only spread knowledge but also enhance the quality of their code. Rotating these pairs frequently broadens this impact across the team. Furthermore, pair programming allow strategies like trunk-based development (allowing to drop the usage pull requests) and continuous delivery to be adopted which further promote a shared sense of ownership and accountability.

Talking about accountability and ownership, when a development team manages its own on-call system, it fundamentally changes their relationship with the software they create. It’s a profound shift from just writing code to taking full ownership of how that code performs in the real world. This sense of accountability is crucial. When you know that you’re the one who will be called upon if something goes wrong, you naturally write more robust and reliable code. You think more critically about every line, every integration, and every potential point of failure.

Documentation, particularly of key decisions, plays a crucial role here - try Any Decision Records. It makes the codebase more approachable and preserves the context for future team members, aiding them in understanding the why behind past decisions.

Agile development practices can also help prevent the formation of silos by making work visible which ensures transparency. Together with that, avoiding task pre-assignment and making sure engineers assist each other and take on the most pressing tasks (by working on what’s on top of the TODO column) instead of randomly choosing work todo, ensures everyone can work on every thing.

Regular knowledge sharing sessions – through presentations, discussions, or informal talks – align the team and nurture a culture of continuous learning. Providing access to training budgets opens even more avenues for team members to acquire new skills and methodologies, enriching the collective knowledge pool.

As we’ve mentioned, open communication is fundamental in avoiding knowledge silos and in fostering collaboration. There are simple tricks while using tools like Slack, that can help foster open communication and help spread knowledge: make sure that most topics are discussed in open channels and not private group messages, this fosters openness and makes it easy to search for information. Together with that fostering a transparent leadership style by maintaining open calendars and giving context about all decisions, significantly bolsters trust and collaboration.

As someone who has always advocated for deep understanding and communication within software development, I firmly believe in the value of involving engineers directly in customer calls. When engineers have the opportunity to interact with customers, they gain firsthand insights into the users’ experiences, challenges, and needs. This direct exposure breaks down the traditional silos between development and customer-facing roles. Engineers become more than just code producers; they become empathetic problem solvers who understand the context and nuances of the issues their work is addressing. This practice fosters a more holistic approach to development. By hearing customer feedback and questions directly, engineers can tailor their solutions more effectively, leading to more user-centric and valuable products. It also bridges the gap between theory and practice, allowing engineers to see the real-world impact of their decisions. Moreover, this involvement encourages a culture of openness and shared responsibility. By participating in customer calls, engineers become more engaged and invested in their work, leading to a richer, more collaborative, and ultimately more effective development process.

In reflecting on the journey to overcome knowledge silos, it’s clear that the path lies in nurturing a culture where knowledge is shared freely and collaboration is the norm. The steps we’ve taken, from fostering cross-functional and full-stack teams to embracing pair programming and managing our own on-call systems, are all geared towards building a resilient, adaptive, and deeply collaborative environment. These practices are not just techniques; they represent a fundamental shift in mindset from working in isolation to being part of an interconnected, empathetic team that understands the full spectrum of the software lifecycle and the real-world impact of their work.

In conclusion, dismantling knowledge silos is not just about changing how we work; it’s about transforming how we think, interact, and perceive our roles within the team and the organization. By weaving together practices that promote open communication, shared responsibility, and continuous learning, we create not just a more efficient and knowledgeable team, but a culture where every individual feels a deep sense of ownership and accountability for the success of the product and is empowered to contribute to their fullest potential.

← All writing