Breadth vs Depth - How do you organize your brain as a software engineer and communicate with different styles?
Tags: algorithms, computerscience, productivity, softwareengineering
Published: 2023-06-30 12:56:05

Paired teamwork makes the dream work! Recently, one of my colleagues worked on filling out a requirements document to lead a new project with me and the synergy of how we thought in opposite ways helped complete our goal in minutes. We both emailed each other about it and was struggling define everything asynchronously so we both hopped on a call and sorted things out.

What was our secret sauce to success from ideation to defining constraints? It was our different approaches and processes in design thinking! We quickly identified that we had different styles and had a conversation about breadth vs depth. We organized our conversation by taking turns to understand our differences, allowing us to complement each other's perspectives, styles of communication, and design thinking processes. This helped us effectively leverage our unique strengths and collaborate seamlessly.

This experience strongly resonated with Tim Cook's quote on how diversity leads to better products, as it highlighted the power of embracing different perspectives:

> "If you believe, as we believe, that diversity leads to better products, and we're all about making products that enrich people's lives, then you obviously put a ton of energy behind diversity the same way you would put a ton of energy behind anything else that is truly important." - Tim Cook

Whenever you make a decision for simplicity sake, we can model this as the brain choosing between **Decision A** and **Decision B** so in computer science we'd most likely model this representation as a Decision Tree. If you studied Data Structures and Algorithms, you'd know about two different patterns, depth first search (DFS) vs breadth first search (BFS)

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d8ujng132kpqo7actsbk.jpg)

**Depth-first search**
> We traverse through left subtree(s) first then traverse through the right subtrees

**Breadth-first search** involves search through a tree one level at a time.

> We traverse through one entire level of children nodes first (Decision A and Decision B), before moving on to traverse through the grandchildren nodes. And we traverse through an entire level of grandchildren nodes before going on to traverse through great-grandchildren nodes.

I must mention that this is a greatly simplified explanation. Our brains are more complex than continuously comparing two parameters in a linear fashion. Exploring the intricacies of decision-making, which involves multiple parameters, falls beyond the scope of this post. If you're interested in learning how data scientists model many parameters to make decisions, I encourage you to search for information on [Artificial Neural Networks (ANN) vs Biological Neural Networks (BNN)](https://www.geeksforgeeks.org/difference-between-ann-and-bnn/) in your next google search to understand the differences between computer-modeled and biological decision-making!

In its simplest form, when explaining AI to someone, you can consider [artificial neural network are decision trees](https://towardsdatascience.com/pushing-towards-the-explainable-ai-era-neural-networks-are-decision-trees-1603ab97eb1b) with more parameters. They incorporate statistics, probability math, designs on how nodes flow and communicate information, and algorithms applied.

With that, I leave you with these questions:

1. How do you organize your thoughts? - What about when problem solving with someone on your team vs your approach to learning new skills alone? (Breadth vs Depth)
2. What struggles do you have with your team when communicating - how did you resolve this?
3. How do you design your communication flows?
4. What can be improved - who and what conversations can help you grow as a engineer, developer, or leader?

Stay curious!