The Beauty of "IT" All
Posted on March 05, 2021 by Bob Favre, One of Thousands of Life Coaches on Noomii.
Some notes on my day job.
Anyone who works in Information Technology (IT) knows that there are sometimes downsides: late nights/long hours, eye strain and the knowledge that you’ve no choice but to be the de-facto tech support for your family for life. If there’s an issue with any hardware, software or communications in the house, you own it. End of story.
It’s also extremely rewarding. There’s a seemingly unlimited demand for IT professionals and you can engage across the globe with customers and vendors, learning quite a bit about the human experience in the process.
But besides the obvious upsides to a career in IT, there is something subtler that likely escapes those who don’t know much about what happens on the other side of their screens. It is elegance. It is beauty. Say what!? Yes, it’s true. There are constructs used in computer science that are simply beautiful. Here are four:
Language Compilation/Interpretation
One does not simply tell a computer what to do. Well, one does, but a computer won’t understand it directly. There is a chain of translations that happen on the way. Your voice commands or screen typing/phone tapping can be thought of as translated by the App into the series of commands the programmer used to define the functions of the App. These commands are typically written in a high level (human like) language and translated by a compiler (all at once) or interpreter (line by line) into machine language (basically coded numbers). This machine language is something the central processing unit can load into its registers and “understand” or execute. At the lowest level, transistors are flipped on and off by two different voltage levels representing 0 and 1. This string of translations has a certain symmetry and equivalence from one level to another when thought of in the abstract. This is how you take a machine that would just as soon be a space heater and make it do magic!
Communication Protocol Layer Wrapping/Unwrapping
It’s not two cups and a string. Any information that needs to travel from one place to another will descend through multiple nested layers of protocols (down a stack), across the wire, and ascend (up the stack) on the other side. This, again, has a certain symmetry about it by definition. Skipping a few layers in the description here, your input is wrapped by the application you’re using and minimally broken into chunks by the transport layer (TCP) where each chuck is wrapped with a header and trailer, a kind of package. The same happens at the next layer down, the network layer (IP) and so on until your data is wrapped again and again all snug like a bug. When the packages arrive at the destination (after many routings along the way), each layer is unpacked (header and footer removed) and sent up to the next layer until it reaches the application (or person) on the other side. I’ve always thought this was extremely elegant. Seems to work (if you’re reading this).
Recursive Algorithms
Deep within an application there are functions that call other functions that call other functions to perform more and more specific tasks. Some high level languages allow a function to call itself recursively. For example, a function “FindParent” might be used in an ancestor app and one of the tasks it performs is to call itself to find the Grandparent and so on, keeping track of all local variables on a stack that is always available at the right level at the right time. I’ve always thought this was so cool and yes, elegant. But too many recursions and we could run out of stack space! So the fun must end at some point and each recursively called function must return back to the level that called it.
Host Virtualization and Remote Access
Where am I and what is my name? There’s a computer inside my computer inside my computer! Virtualization allows you to run Windows on your Mac, or Linux on your Windows. An entire operating system can live inside another! Or if that doesn’t strike your fancy, you can remote into a host running on its own iron from the comfort of your own laptop. Or take multiple hops and combinations of all these. It’s friggin’ beautiful man!
There are many other concepts/constructs in IT that are symmetrical and elegant. I surely don’t know them all. I’m even starting to see the elegance in IT Project Management. I’d add more here, but I have to go fix my mom’s wireless router. ;)