Check out this graphic (from Chapter 2 of the awesome book “Fundamentals of Software Architecture”). For every developer, there’s a choice between technical depth and technical breadth.

Pyramid diagram showing technical depth and breadth with three sections: Stuff you know, Stuff you know you don't know, and Stuff you don't know you don't know.
Technical Depth and Breadth in Software Development.

Technical depth means becoming an expert in a specific area – the kind of specialist who knows every inch of their chosen technology. Technical breadth is about having a broader understanding of different technologies. You may not be a master of each one, but you know how they generally work and when to use them.

Both approaches are valuable, and the “right” one depends on your goals and what excites you. Some people thrive on digging deep into one area. Others love the variety of exploring the entire landscape. Think of it like a pyramid – you either dig down into the yellow area (increasing your technical depth), or you increase the area of yellow stuff by moving the line between the yellow and red areas down (focusing on technical breadth).

What is your natural preference? For example, I have always loved exploring new technologies. There’s a real joy in discovering different programming languages, frameworks, and tools. I naturally enjoy expanding the “map” of my technical knowledge; I love learning about things I didn’t know. So technical breadth is my thing. What is yours?

The world of technology is constantly changing. So whether you choose depth or breadth, the key is to adapt and learn new things. If you go the technical depth route, you’ll need to stay on top of the latest updates in your field. If you prefer breadth, you’ll need to find ways to consistently pick up bits of knowledge about new things.