‘Visual’ is the New Global Development Language
Communication is usually the hardest part of any software developer’s job, especially when working on distributed systems. We look at the rise of visual collaboration tools and the next evolution phase for dev tools.
If you tell three engineers they’ll be having fish for dinner, each one will imagine a different dish - it could be anything from fish & chips, to a scrumptious salmon filet with lemon and dill sauce, to a beautiful sushi roll.
Now imagine the results when you ask them to build a “backend platform for my new app.” No matter how similar their end goals, frames of reference, and mental models are, each one will design a slightly different architecture.
This is why communication is usually the hardest part of any software developer’s job, especially when working on distributed systems.
Why is communication problematic?
In the world of software engineering, the ability to communicate and collaborate effectively is essential to building high-quality products. However, the process of designing distributed systems can be especially challenging, as it has many levels of complexity:
- Multiple engineers (or teams of engineers) working on the same or complementary systems, each with a different set of skills, knowledge, and stack preferences.
- Globally distributed, remote teams which have to deal with asynchronous collaboration, non-native English speakers, cultural barriers, and different backgrounds.
- Multiple stakeholders with competing or contrasting priorities (e.g. Product Team, Manager, C-suite, QA, Ops, etc.)
- Increased complexity of distributed systems. The more fault tolerant we try to make our distributed systems, the more complex they inherently become (Galileo also said so … not in quite those words). Not to mention all the new technologies and solutions available at each step of app development.
“As the complexity of a system increases, the accuracy of any single agent’s own model of that system decreases rapidly” - Dr. David Woods, “Coping with complexity: the psychology of human behavior in complex systems”
The limitations of verbal communication
Humans are visual by nature and it’s not by chance that most cultures have a variation of the expression “a picture is worth a thousand words” (also, let’s be honest, nobody reads - willingly - wall-of-text emails or wikis).
No matter how engaging your presentation, or how detailed the explanation of your idea is, the pictures that everyone will form in their heads are going to be slightly different.
Furthermore, we’re not as accurate as we think we are in our mental models: when a concept or topic is particularly complex it’s very difficult to keep every piece of information in our mind. We often imagine it like legos: stacking one piece of knowledge on top of another, to create a complete, layered image. In reality, we’re all doing our best to keep hold of the most relevant legos and hope to remember the rest.
Without visual aids to complement our communication, we’re always at risk of misunderstandings ... and it often means we have to schedule more meetings.
The rise of visual collaboration
This is where the power of visual collaboration tools comes in.
Every developer has stories from their onboarding at a new company where someone had to pull out a pen and paper (or a gigantic whiteboard) and sketch the architecture of the platform. When it comes to distributed systems this becomes enormously more complex: can anyone truly remember all the components and dependencies and/or be able to reproduce the current real-time status faithfully on a physical or digital whiteboard? (just think of Monzo’s microservices architecture!)
Visual collaboration needs to permeate every aspect of software development because there is a need to align on how a feature will look and how it will fit into the system, before jumping into code. Not only that, but it’s critical to show where all the dependencies are and collaborate with other teams (QA, DevOps, etc.) to reach an alignment.
The use of visual aids helps to reduce misunderstandings and miscommunications and can help to improve overall productivity and efficiency. Visual collaboration also helps to make the design process more transparent, with everyone working with the same mental model of the overall architecture and a clear delineation of responsibilities and interdependencies.
For this reason, in recent years, digital whiteboards and visual collaboration tools like Miro, Figma, Visio, and Lucidchart have become increasingly popular.
In fact, here are some numbers:
- Research by Gartner shows an increase of 44% in collaboration tool usage amongst digital workers since 2019 (source →)
- The Okta “Businesses at Work” 2022 report showed that design software was the third fastest-growing category (31% YoY growth by number of customers), shortly followed by content collaboration, developer tools, cloud platforms, etc. It’s important to note that this is a consistent trend: this category has been a solid performer for the past five years. It logged 58% YoY growth by number of customers and a chart-topping 185% YoY growth by number of unique users in 2017. In fact, the top two categories (Travel and Business supplies) are in their respective spots only because of the re-opening of world travel and offices post-COVID.
Visual collaboration is not enough
It’s not enough to be able to work together on the same diagram, in real-time, no matter where you are located.
Visual collaboration has to be embedded in every phase of the development process including design, iteration, component integration, dependency tracking, architecture review, docs drafting, and more.
Nowadays, developers have a plethora of tools to choose from for every aspect of the development stage. However, the burden of integrating and making them work together harmoniously falls on the dev teams, leading to less time (or built-in opportunities) for value-added activities.
The future is design and build
”[…] we should choose tools and processes that promote the things that help humans do their job better. […] Because after all, we owe it to our end users and to our teams to understand and design for the whole system, including the fleshy human parts.” - Denise Yu (Engineering Manager at Hypha)
Visual communication is the new global development language, especially in distributed systems design, where collaboration is essential to reach a consensus and design a scalable, resilient, and efficient architecture.
As a developer designing a new application or a team leader looking to have a more performant team of engineers, investing in visual collaboration tools is a wise decision that will pay dividends in the long run.
However, the current collaboration tools are only one piece of the puzzle. The ideal state would be the place where you collaborate is also the place where you get stuff done.
We’re working on a better way to visually collaborate, across all phases of development. If you’re interested in designing, developing, and managing distributed software more efficiently, sign up for free now.