The fundament upon which all our knowledge and learning rests is the inexplicable. – Arthur Schopenhauer
There have been some recent discussions on my radar around knowing your fundamentals versus knowing how to operate certain tools/software/etc. like an expert.
This drove me back to my experiences with programming in high school and what I later found out about networking/technology in general.
When I first learned a programming language (BASIC and later on PASCAL/Delphi) I had sometimes problems to grasp what certain things I typed into the source code file really meant. And to be honest – I still have my problems when it comes to object-oriented programming and concepts related to this.
But then I started working on a private project with PHP and thought it would be fun to learn some C++ – and suddenly I realized:
“In some way this is all the same!”
Well – I later learned, that it is all rooted in the same concepts and methodologies and only the implementation in a certain language differs (but even those lines are blurry for a majority of programming languages) – So I had this moment, where it made “click” and from that day, I really don’t had any problems with programming anymore.
Of course I’m not a programmer nowadays and I don’t want to become one either – it is simply not for me – but fairly recently I had a similar experience to what I just described above:
When I had my first sysadmin/network admin job I was all about getting into the CLI and the nerd knobs – there was nothing else and I pictured myself as the guy who would become an expert in the tools I had at my disposal. But the more I learned about the standards and protocols – the fundamentals – behind all this, the more I realized:
“This is somehow the same as the programming thing”
– and this drove me into the direction of getting more into the fundamentals and ultimately into design/architecture and how it all relates to business.
So the question that remains is: What is more important? Fundamentals or knowing how specific tools work?
My answer is: Both.
For some people it can be the same as for me:
From specific to more general (and in that way being able to apply something you learned in the past to the new shiny toy). Learning how to operate a specific product/technology can help understand how the underlying concept was meant to work, after all.
For others it will be sticking with the tools and relearning them again and again in a way, when there are updates and replacements – which is OK, too. Because those people know the tiny bits and problems you could have with this device/tool/software/etc – and this knowledge is needed to in todays complex technology landscape, too.
In the end, everyone has to find out, what’s most interesting for his/her own development and as a daily (work) driver.
If you are more interested in the topic and what other, more smart people than myself think about this, I recommend you check out these two podcast episodes:
Heavy Networking Episode 502 from the PacketPushers:
The Hedge Episode 30:
And feel free to hit me up in the comments or on Twitter / LinkedIn if you want to share your own thoughts on this with me.