"Any organization that designs a system will produce a design whose structure is a copy of the organization's communication structure." - Melvin E. Conway.
As an engineering leader, a critical element of smooth scaling is having strong communication lines within your team and other departments.
Suppose we apply Conway's Law to the organizational behavior of engineering orgs. In that case, we can say that a product will result from how teams are structured and communicate. This means that the more effective you are at knowledge sharing, the better your business outcomes.
Let's look into why knowledge sharing is so critical, and which tools and tactics you can implement in your engineering org (and beyond) to improve it.
Why You Need To Nail Knowledge Sharing
Knowledge sharing is critical for engineering and other teams to continuously learn and improve. It also helps to:
👉 Drive Alignment: Sharing knowledge empowers teams to work towards achieving their goals according to the business mission and vision. This information is crucial to keep your teams working on impactful activities.
👉 Create Visibility: As your team and the company grow, it's not unusual to start losing visibility on the details. Ensuring a good knowledge exchange can prevent this from getting out of hand.
👉 Scale Smoothly: The number of communication lines increases as your team grows. Setting up processes and frameworks from the start helps you scale with ease.
The Risks of Flawed Knowledge Sharing
As an engineering leader, you have to understand the long-term consequences of not tackling something today. Putting your efforts into improvements takes away time from delivering things. But deprioritizing the dissemination of knowledge across teams can lead to complicated risks, which sooner or later will catch up with you.
The Bus Factor: If only one person or a set of people in your entire organization know about something, what will happen if this person is hit by a bus? Who will be able to perform what only that person knew? Of course, we are exaggerating here, but people leave, go on vacations, and the moment can be critical.
Working in Silos: Frontend, data, backend, QA teams, etc., all work towards the same goal: get the product to the end-user. At the same time, they all depend on each other to do their part. If there's a lack of communication at any step of the way, it can impact the final product and user experience.
Not Addressing Bottlenecks: When you know there's a bottleneck, you can't expect to solve the problem if you don't know what it is and why it's happening. Communication is key here to understand the whys and create strategies to solve them.
How to Improve Knowledge Sharing
So how can you mitigate these risks?
I've put together some best knowledge sharing practices between engineering teams, people, and other departments in your organization. Some might be familiar. Some might be new. I recommend you follow at least 5 of these regularly.
How to improve knowledge sharing within engineering teams
👉 Documentation: I can't say this enough: Document your decisions and discussions. They can serve you well in the future when trying to solve a similar problem. I recommend creating decision records, using comments on Jira, and sharing code on slack channels.
👉 Retrospectives: Set up regular meetings to reflect on what worked and didn't. What was the impact on your organization? To facilitate, share your Athenian metrics dashboards with everyone so they can analyze and bring questions to the table.
A quick way of doing so is by sharing a unique link to the dashboards you want to discuss. Each link will save the information for the specific metrics and timeline so you and your team can always quickly go back to it.
👉 Symposiums: Set up an event with a regular cadence where engineers can bring a problem they face(d) to discuss potential solutions.
👉 Stand-ups: Have engineers share accomplishments and the challenges and blockers for the day.
👉 Request for Proposal (RFP): Allow anyone to create a proposal to change something: process, code, architecture. It invites your team to be creative.
👉 Code Review and Pair Programming: Encourage your team to submit their codes under review or even pair them from time to time to push discussions.
👉 Meetups: Set up meetings with people in the same role or domain but from different teams. This way, they can discuss common topics that might be a pain for others.
👉 Post Mortem: Document the team's reflection on what went wrong, how it could've been avoided, and how to improve for the future if the situation happens again. [more]
How to improve knowledge sharing with other teams
I recently asked engineering leaders what they do to improve communication with other departments. Here are some of my favorites answers:
👉 Technical Demos: They're fun and effectively spread information between teams.
👉 Weekly Tech Deep-dives: This helps team members learn about new domains, onboard team members faster, and create a space to share knowledge and learn about specific or obscure systems parts.
👉 "Ask an Engineer": Engineering leaders have regular conversations with the customer support and sales teams to answer their questions about the product and what's happening in engineering.
👉 Create internal release notes with release notes for all stakeholders. Notes are sent via email + slack channel so people can reply in a thread if they have questions.
No matter what stage of the company you're at, nailing your communication and knowledge sharing will ultimately impact your business outcomes, scaling abilities, and the happiness of your teams.
Hopefully, you can walk away today with a sense of how impactful this can be and with a handful of tools that will set your organization up for success!