One of my readers sent me a heartfelt email that teleported me 35 years down the memory lane. He wrote:
I only recently stumbled upon your blog and, well, it hurt. It's incredible the amount of topics you are able to talk about extensively and how you can dissect and find interesting stuff in even the most basic concepts.
May I humble ask how on earth can you know all of the things you know, with such attention to detail? Have you been gifted with an excellent memory, magical diet, or is it just magic?
Before going into the details – when I started my networking career 35 years ago, I was exactly like my reader. I mastered some pretty intricate details (in those days I wrote device drivers for RSX-11M operating system and even some rudimentary networking stack for CP/M-based Z80 computers), but had no idea how much more I’d have to learn.
One of my first shocks was the exposure to incredibly complex SNA networking stack, the other one the exposure to completely alien concepts used by TCP/IP (SNA and DECnet used node addresses, whereas IP uses interface addresses, resulting in totally different neighbor discovery and routing behavior), and the bumpy ride never ended. For example, a few years ago I figured out I knew nothing about Fibre Channel and storage networking… and decided to fix that.
Now for the “how to get it done” part. The fundamental trick is getting annoyed at your own ignorance. Whenever you find out that there’s something remotely interesting that you don’t understand, start a research & exploration mission until you master that topic. Lather, Rinse, Repeat.
Next, if you continue that process for decades, you’ll accumulate an incredible amount of knowledge. Assuming you expand your knowledge by 10% every year, you’ll know almost 30 times more in 35 years than when you started. Obviously you’ll also forget a lot of irrelevant stuff (like the commands used to configure AppleTalk zones), but if you do your studies right, you’ll always remember the fundamental principles – and there are only a few ways to get things done in networking (see also RFC 1925, section 2.11).
Talking about fundamental principles – make sure you’re always organizing your knowledge, trying to make connections between seemingly disparate facts, and building a mental model of how things work. It’s much easier to remember trivial facts when they’re well organized, and you might get some really interesting insights (like: socket API is broken) along the way.
Read the Design for How People Learn book if you're interested in a layman explanation of how people learn stuff.
Time for a short story
Let me illustrate the fundamental principles part with the way I explained ADSL to my engineers 15 years ago. We were pretty fluent with WAN technologies (including baseband modems and ATM), but most of them had no idea what this ADSL stuff was all about, so I prepared a 30-minute presentation, which went along these lines:
- You know what baseband modems are. Now imagine you allocate more of the frequency range to one direction, resulting in different upload and download speeds (because that’s what people are looking for when browsing the Net);
- You know what modem rack shelves are. Add an ATM switch to them (for reasons that will become obvious in a few seconds), and you can call them DSLAMs;
- You know the ITU people are obsessed with putting everything into small cells, so they could push voice and data over low-speed lines at the same time. Those same ideas leaked over to ADSL, so now we’re running ATM over baseband modem;
- You know AAL5 – that’s what’s used to transport data over ADSL;
- Anyone who’d want to do thing right would use a router to connect a LAN to a WAN link, but you know people tend to cheat all the time. ADSL is no exception – some idiot decided it’s better to bridge Ethernet to ATM circuit;
- Finally, because someone else didn’t want to change their provisioning system and wanted the DSL lines to look just like dial-up lines (which is hard if they are emulating Ethernet circuits), they invented PPPoE to turn an Ethernet link into an emulated ISDN connection.
OK, now you know what ADSL is all about. Go back to work ;)
Back to the fundamentals
Continuing with the “how to get it done” sermon: there’s no substitute for hard work. If you work 10% harder (which doesn’t mean longer but more efficient or smarter) than the guy next to you, you’ll accumulate 10x difference every 25 years.
Wondering how you get from 10x difference in 25 years to 30x more in 35 years? Time to explore the compound interest.
Another great book I'd recommend reading is Myths of Innovation – it turns out most inventions happened after years of hard work.
Finally, make sure that whatever you do pushes you into some useful direction (rephrased: don’t waste your time, you only have one life). When you realize you’ve stopped progressing, it’s time to pack and move on – into another technology, team or company. For a motivational version of this fact, watch the Steve Jobs Stanford commencement address. I would also strongly suggest to read the How to Fail at Almost Everything and Still Win Big book by Scott Adams.