Learning IT Fundamentals
Where do IT fundamentals fit in our modern, cloud- and abstraction-driven engineering culture?
I was recently discussing the Sysadmin/DevOps/IT industry with a colleague, and we started marveling at just how few of the skills we learned when we were starting out are actually needed today. It seems like every year a tool, abstraction layer or service makes it so you no longer need to know how this or that technology works. Why compile from source when all of the software you could want is prepackaged, tested and ready to install? Why figure out how a database works when you can just point to a pre-configured database service? Why troubleshoot a malfunctioning Linux server when you can nuke it from orbit and spawn a new one and hope the problem goes away?
This is not to say that automation is bad or that abstractions are bad. When you automate repetitive tasks and make complex tasks easier, you end up being able to accomplish more with a smaller and more junior team. I'm perfectly happy to take a tested and validated upstream kernel from my distribution instead of spending hours making the same thing and hoping I remembered to include all of the right modules. Have you ever compiled a modern web browser? It's not fun. It's handy being able to automate myself out of jobs using centralized configuration management tools.
As my colleague and I were discussing the good old days, what worried us wasn't that modern technology made things easier or that past methods obsolete—learning new things is what drew us to this career in the first place—but that in many ways, modern technology has obscured so much of what's going on under the hood, we found ourselves struggling to think of how we'd advise someone new to the industry to approach a modern career in IT. The kind of opportunities for on-the-job training that taught us the fundamentals of how computers, networks and Linux worked are becoming rarer and rarer, if they exist at all.
My story into IT mirrors many of my colleagues who started their careers somewhere between the mid-1990s and early 2000s. I started out in a kind of hybrid IT and sysadmin jack-of-all-trades position for a small business. I did everything from installing and troubleshooting Windows desktops to setting up Linux file and web servers to running and crimping network wires. I also ran a Linux desktop, and in those days, it hid very little of the underpinnings from you, so you were instantly exposed to networking, software and hardware fundamentals whether you wanted them or not.
Being exposed to and responsible for all of that technology as "the computer guy", you learn pretty quickly that you just have to dive in and figure out how things work to fix them. It was that experience that cemented the Linux sysadmin and networking skills I continued to develop as I transitioned away from the help desk into a full-time Linux sysadmin. Yet these days, small businesses are more likely to farm out most of their IT functions to the cloud, and sysadmins truly may not need to know almost anything about how Linux or networking works to manage Linux servers (and might even manage them from a Mac). So how do they learn what's going on under the hood?
This phenomenon isn't limited to IT. Modern artists, writers and musicians also are often unschooled in the history and unskilled in the fundamentals of their craft. While careers in science still seem to stress a deep understanding of everything that has come before, in so many other fields, it seems we are content to skip that part of the lesson and just focus on what's new. The problem when it comes to IT, however, isn't that you need to understand the fundamentals to get a good job—you don't—but when something goes wrong, without understanding what's happening behind the scenes at least to some degree, it's almost impossible to troubleshoot. When you can't fix the problem yourself, you are left rebooting, respawning or calling your vendor's support line. Without knowing about the technologies of the past and their features and failings, you are more likely to repeat their mistakes when someone new to the industry convinces you they just invented them.
Fortunately the openness of Linux still provides us with one way out of this problem. Although you can use modern Linux desktops and servers without knowing almost anything about how computers, networks or Linux itself works, unlike with other systems, Linux still will show you everything that's going on behind the scenes if you are willing to look. You can set up complex networks of Linux servers running the same services that power the internet—all for free (and with the power of virtualization, all from a single machine). For the budding engineer who is willing to dive deep into Linux, you will have superior knowledge and an edge over all of your peers.