Yeah, I am on gardening leave (watch this space for news soon), and this is a perfect time to purge my backlog of articles on my to-read list.
I stumbled on this one: Learn Programming or Perish (?) by the brilliant Matt Oswalt and I suddenly felt that the feeling I’ve been having for a while now is being reciprocated by someone.
Matt wraps up his post like this: “Emphasize fundamental knowledge. Learn enough about implementations to get in the door, but make sure you know how TCP and ARP work (as an example) regardless of platform.”
I couldn’t agree with him more.
A while ago I started conducting interviews for an opening in my former team and started wondering “how do you hire the perfect candidate? is there any secret hiring sauce?”. What I did is pretty simple. I turned back and talked to the “master of interviews” (a.k.a. Laszlo Fintor – one of my former managers).
During the time we spent together at Sky he’d nailed every single one of them, always hiring brilliant people, technically skilled, easy-going, collaborative, etc. (I was the only exception to this rule, BTW)
What he suggested was basically: “Start with the basics. The foundational knowledge. Ask them about TCP, ICMP, MPLS traceroute, etc. If they start discussing TCP congestion control algorithms, you’ll know you have an interesting one in front of you”.
In my interviews, I then started asking questions like “the life of a packet in a simple network”. I.e. how does a host transmit a L3 packet/L2 frame to a destination, starting with no state (empty ARP tables, empty switching mac-address tables, etc.),
When I started doing that, an appalling reality manifested in front of me.
One candidate out of 7-8 on average (including CCIEs and JNCIEs) was able to sort-of respond to that simple question in a decent way. And the longer their CVs, the lesser they were able to describe how a packet gets from A to B.
Hence my agreement with Matt Oswalt (and Laszlo). Why in the world do you thrive to make your CV longer and longer if you don’t know how ARP works, or the bitwise AND operation that happens before a host knows if he has to send a frame to its DG or somewhere else?