Developer First Administrator: Reason for learning software development.

Posted by Anthony Tilelli on October 8, 2019

In the past, applications were written to fit a set of machines in specific and often unique configurations. The classic example was the mainframe systems and their purpose-driven applications. It took teams of machine administrators to ensure the desired state and troubleshoot errors as they occur on the machines. In the past, there were efforts to standardize and make applications cross-compatible, such as the POSIX standard, high-level programming (non-assembly) languages, and interchangeable hardware components. This led to the computer hardware of today. These parts have componentized the motherboards, power supplies and hard drives are not repaired, but replaced and sent to extremely specialized sites for further processing. This moved administrators of those days from machine-specific to server/OS level administration. Freeing the new admins to work on the higher-level task, that today’s system admin (such as myself) work on.

Recent advancements have moved to componentize the fleet of servers an application works on. The Public/ Private cloud has abstracted away much of the hardware and physical layout concerns. The advent of automation has made infrastructure and server configuration a code/application managed process. Stateless infrastructure, container technologies, and Kubernetes aim to make the entire infrastructure layer an abstraction. Thus, applications can run on any of the servers, and application are less state conscious, as containerized applications bring much of their state.

Again, this will free up the administrators of today, to move to new spaces. Like before, a specialized group will move to the infrastructure or under the abstraction level. It requires a great deal of knowledge in security and reliability to offer a public/private cloud. The other admins will work on top of the abstraction layer. Both directions will require more code knowledge to advance. Finally, in my working experience, developers with some system administrator experience are often preferred for DevOps or System Reliability Engineer positions, instead of a system administrator with some developer knowledge.