Technology is a field with tremendous breadth and depth. It spans from AI and cryptocurrencies to apps that deliver meals to your doorstep. You can learn about how to make your first webpage or how a Mosfet transistor works. This incredible span of topics creates a problem when the idea of “learning technology” or “working in technology” is presented.

Determining what range of knowledge is required is a constant problem in technology. On top of this, the word “technology” and the topics it covers are changing rapidly. It’s no longer good enough to teach specific concepts or languages. We need to teach students a whole new way to think. Simplification of problems, isolation of problems, problem solving. These are skills that need to be applied no matter what you are working on.

The challenge

Helping others with technology is something I love doing and have deeply integrated into my own life. I enjoy this challenge, but I also believe it presents an issue in the progression of the next generation of developers, researchers, and engineers.

The challenge starts with the task of balancing understanding with practical knowledge. For example, not everyone needs to know how memory management works, but it can be useful when explaining why one’s code produces a buffer overflow. These relations are amplified when expanded to the full range of what technology is all about, creating a massive tree of interconnected topics.

The tree below illustrates the way I think about how topics in technology are all related to each other. The topics spread out in breadth as they split off into more specific groups. Depth represents the level of understanding and in a sense, how close to the actual moving parts of a system you are. For example, programming webpages has a much lower depth than writing assembly code to run on the x86_64 platform. We move horizontally and vertically on this tree in an attempt to balance these two aspects of learning.