We should draw more

If you work in tech you’ll likely have to deal with complexity. Ageing codebases, new technologies, scaling up, every step of the way seems to involve wrangling complexity.

It’s one thing to get your head around something tricky, but it’s something else entirely to communicate it to your team. Eventually, you have to share a problem or its solution, and this is where I see people struggle (myself included).

It can be hard to follow along when someone is talking about a complex topic. They may have a lot of context in their head and they need to quickly decide what to share. Sharing too much or too little can leave everybody confused and frustrated, at this point you might see people working against each other to find a solution (this usually means going along with whatever the loudest person has to say).

I think drawing can help solve this problem. This isn’t a novel idea at all, but it’s helped me out more times than I can count and I think we should be doing more of it.

Are you new to a codebase and trying to understand how it works? Draw out the fundamental flows and walk through them with your teammates. Everyone will learn from this. The most surprising part of this process is that it reveals the contradicting assumptions that even experienced members of the team have.

Are you implementing a new feature? Draw the flow. The extra requirements nobody picked up on initially start to materialse.

What I like the most about this is that it feels so cohesive. Teammates work together, building on each other’s ideas, to create something solid.

You don’t need to be the loudest person in the room. There have been meetings where I have silently walked up to a whiteboard and drawn up the approaches being discussed. I usually get it a bit wrong, but this is where the collaboration comes in—everybody joins in to fill in the gaps.

The best part is that you don’t need to be an artist or a UML wizard—in fact the more simple your diagrams are the more effective they are (IMHO). Most of the diagrams I create are square boxes with arrows connecting them. They’re a way to communicate with each other and so the easier they are to read the better.

Next time you’re working on a problem, try sharing your ideas through pictures and let me know how you get on.

Previous post: SYN Flood Denial of Service Attack

Next post: Being Honest