My favorite thing about my career in security consulting has been the constant opportunity to learn new topics. Security weaves itself through every aspect of software, and software is everywhere. The phone in your pocket, the bluetooth chip in your headphones, your automobile, and the SCADA systems you rely upon every day execute millions of lines of code on your behalf. The idea that each of those systems gives me the opportunity to gain new knowledge is truly exciting. It can also be daunting when there is always so much to learn.
Since taking on a leadership role ten years ago, I’ve had to learn topics that had been previously far outside of my wheelhouse: management, finances, personnel, HR, and so much more. All the while, I’ve needed to stay sharp technically. As a leader in my organization, I have to be aware of almost every new technical tool, vulnerability, process and methodology. I also have to be realistic in that my job is to be able to have an intelligent conversation with the experts on my team and help guide them to the best solution, not to come up with the best solution myself. I can’t know everything as deeply as the engineers on my team, so I trust them to know the details better than anybody, then what I can help with is context; historical, business, technological, political, etc.
I want to share my method for awareness and learning to help you quickly learn new concepts. I’ve been using these mental models since I started in the industry. I think they work equally well whether you are starting out in a new field or if you are adding to decades of experience.
When I first moved to Seattle, I picked an area I thought I would like (the University District) and stayed there for quite a while. I would walk in my neighborhood and explore the streets and restaurants. As I did this, I built up a mental map of the area. After a while, my knowledge of the area looked something like this. Some well worn paths to the coffee shops I frequented, and some areas that I knew only with passing familiarity.
Eventually, I wanted to explore new neighborhoods. This all happened before the days of Google Maps or iPhones so navigating was a bit more difficult and could lead you into unknown territory. Thankfully MapQuest was available, but I had to print out the directions (on paper) and follow those directions perfectly to get to where I was going. If I made a wrong turn, I could find myself in an entirely new place, looking for my planned path for quite some time.
I discovered that this way of navigation allowed me to grow my knowledge of a new area and anchor it in my existing understanding. First, I’d learn a little bit about a new neighborhood, then each time I’d go back I’d learn a bit more about that area or a new way to get there. The first time I’d visit a new area, the map was small and the connections were weak.
But over time I’d learn new connections and discover interesting areas to explore.
Eventually, I’d build a better map of my neighborhood and others close by.
Over time I’ve created a detailed mental map of a large portion of the city. I’ve discovered parks and lakes to explore and stumbled across sections of the city that don’t seem to fit together because there were feuding city founders who couldn’t agree on the directions of streets.
Applying to Technology
There are many parallels between different technologies and learning a new city. Learning about technology starts with picking an area of interest. Then you start exploring that area until you feel comfortable. You understand the tools, know the leaders in the space, and have read the books. Once you feel comfortable in one area you may branch out to an adjacent area. Your connection to the new topic will be tenuous at first, but if you find it interesting you’ll keep returning until you know the second area well.
As you continue to explore new areas it gets easier. Sometimes you can use the same tools or maps, or maybe it’s simply that the tools and maps become easier to understand because you have a frame of reference based on all the other things you’ve used.
I think of this as an architecture and frameworks parallel. All the paradigms that make cites similar can also be applied to the thinking of new technologies. The client server model can be applied to mainframes and terminals or mobile apps and APIs or SCADA systems with a centralized controller.
If you walk the streets of Rome after growing up in Los Angeles you may find yourself easily disoriented, like jumping from web app development to Machine Learning, but once you’ve learned enough new neighborhoods things become easier.
Seeing how each neighborhood is connected from a high level and how technology is applied at the street level makes new topics easier to understand.
Broad Awareness First, then Go Deep
I love learning about a new city’s hidden gems, but more often than not I’ll start with the “must see” landmarks. I use standard methods of travel like walking or trains to move between neighborhoods. Once I’ve spent some time in a new area I’ll start to explore more deeply. When I’m in a new city I first look for parallels and what’s similar to what I’ve seen before.
The same is true for learning technology. First, try to apply well worn paradigms. What’s the same as something else I know? Next, look for the landmarks. What makes this new technology unique, or fundamentally different? Finally, explore deeply. What esoteric concepts make this technology truly different and memorable.
I want to gain a deep understanding of everything I touch, but I also have to be realistic in knowing that it won’t be possible for every possible technology. Being able to skim quickly and understand what’s most interesting has become one of my greatest assets. This is analogous to how developers will sometimes “stub out” new functionally when programming a library. Make a marker in your mind so that you know where to go back to if you need to learn more, but then move on to get the complete picture. Some areas of technology you may learn deeply whereas others may never be returned to, even though they were once very interesting.
For example I have never fully grasped how LINQ is used in .NET and how it differs from Entity Framework. I moved on to Ruby on Rails and Active Record as my ORM before needing to acquire that deep knowledge. As a result, knowledge about LINQ is stubbed out in my mind. I know what it is and where to learn more if I need to return to it. I also have the maps and tools I’ve acquired from my time with Active Record and other ORMs, so I know I could pick it up quickly.
Knowing when you’ve learned enough, and how deep to go is a skill in and of itself. Some topics are more applicable than others to your job, while others are more interesting than others. At the end of the day, understanding the tradeoff of going broad vs going deep is a worthwhile goal.
I hope these models for learning will help you frame your new challenges. Learning your first new neighborhood will be difficult, but once you become a world traveler you will have accumulated the tools, maps, and frameworks to make learning easier and faster. But don’t forget to stop and explore those hidden gems along the way.