In today's computing ecosystem, I would very much be considered a cloud-native engineer. My first job in the industry saw me deploying cloud hosted platforms on Rackspace and AWS infrastructure, and I have been specializing in AWS ever since. To me, highly available cloud deployments are the basics, the norm, a common standard that is easy to implement.
I cut my teeth on chef and CloudFormation and have since graduated to ansible and terraform. I haven't had the opportunity to work heavily with kubernetes and containerization yet, but I am trained on it and ready to roll. Even in my college days, I was fascinated with virtualized compute, using VMs I didn't really understand to host various services in lab and home networks.
To me, at the time, hardware was a mysterious, opaque box. The kernel code of my chosen professional environments, GNU/Linux, Windows, and MacOS (at the time still called OSX) were, likewise, mystic magics of the highest order. Assembly language programming was out of the question and low level C code was unreadable to me.
Though I developed tremendous expertise in cloud computing best practices and highly available, self-healing, auto-deploying virtual networks of nodes and services, I remained mostly ignorant of the details of how the host systems and virtual systems actually function.
This is an extraordinarily common phenomenon in today's cloud-native technician. In my career I've seen that this is not a situation unique to myself, and that the vast majority of cloud engineers simply do not understand, nor wish to understand, hardware, kernel, and driver level coding.
This leads to some problems. First and foremost, entire avenues of troubleshooting skills are cut off. Many technicians in the industry do not know how to use system tools to trace kernel calls and other low level data that may assist in locating things like memory leaks or faults.
Another issue is that much efficiency is lost, particularly by certain, high level coding practitioners. Web Devs may feel called out, but I think most of them will agree that the messy internals of operating system administration is far beyond the scope of skills they wish to master. This leaves us in a place where even expert developers simply don't understand how the environment they code for will behave at scale.
The difference in performance between code on a workstation and code in a high scale production environment must be tested as part of the deployment pipeline, to ensure we don't introduce inefficiencies that can bring down the service. This is typically handled by specialists known as SRE's or Site Reliability Engineers; a fancy DevOps title held by many cloud-native specialists. It takes a team of experts to build a web service of any complexity, with specialists in each field working together to create something functional.
Rarely do we see the low-level computer expert on cloud teams, but this is changing. I must acknowledge, of course, that they do exist. I have met and learned from a handful of experts who began their careers in eras where 8-bit computing was the most advanced standard; and these technicians understand the platform from its lowest bits to its most obfuscated user-space applications. Windows specialists, in particular, seem to have a higher propensity for exposure to the lowest level hardware concepts early in their careers.
This makes sense to me as, though this is pure speculation on my part, one could live with the limitations of windows if you have mastered controlling the system with low level tools in that environment. That might be revealing a bit too much of how I feel about Microsoft's operating environment, though.
Again we circle back around to the importance of 8-bit computing in the educational space. Because 8-bit systems work the same ways, physically, as 32 and 64-bit systems, while remaining much simpler to design, implement, and understand, it serves as a perfect platform for teaching.
Computer science education needs to embrace 8-bit computing standards in schools in order to increase computer literacy across the population. As we become increasingly reliant on computer technology – tying it into almost every aspect of human life – it becomes increasingly important to ensure computer literacy thrives. Without an educated population, it will be too easy for organizations and governments to control the means of computing; denying equitable access to end-users and developers.
As cloud-native has become the hottest trend in the industry, we find ourselves lacking in the skills that got us there. A cloud technician educated in low level computing is a well equipped cloud technician; one who can likely be relied upon for efficient designs. If you are, yourself, struggling with low level computing concepts, even while operating at high levels in the cloud space, please consider following my journey as I educate myself and others about low-level computing concepts using 8-bit technologies!
Resources