Image

Traditionally, system administrators have been responsible for designing, implementing, and managing hardware and underlying operating systems. However, advances in edge computing, machine learning (ML), and intelligent applications have broadened sysadmins' scope of work and skillset required for software development projects.
[ Download now: A system administrator's guide to IT automation. ]
This article explores five things sysadmins should know about software development.
Communication between teams is key to success, and it begins by asking the right questions from the start.
In a typical software development project, there are many players: architects, data engineers, data scientists, ML engineers, software engineers, front-end developers, and of course, sysadmins. Because of how specialized these roles are, it can be challenging to communicate across teams. For this reason, all teams responsible for an end-to-end project should participate in the discovery and planning phase, including IT professionals and system administrators.
Asking the right questions to the right people is critical to meeting environment, security, and hardware requirements. Here are some ideas about what to ask the participants:
Record the answers to these questions in the software development plan.
[ Free cheat sheet: IT job interview tips. ]
Set infrastructure and hardware expectations as soon as possible to avoid conflicts down the road.
In some cases, developers depend on sysadmins to explain security policies, hardware limitations, and what resources are available to them. For example:
Challenge the requests, describe why they may be problematic from an IT perspective, and provide an alternative solution. The sooner the development team is on board with your goals on the hardware and security side, the less likely you will be butting heads with them later.
[ Download now: Git cheat sheet. ]
As development progresses, application requirements and staffing changes will alter the initial software development plan. You may have to return to previous discussions about hardware requirements, security permissions (including adding new users and changing access), and adding libraries to environments. While sticking to the original scope is essential, there must be some wiggle room for adaptability and flexibility in software development projects.
You may be responsible for more development environments than you initially expected. Development environments refer to the isolated workspace developers use when making changes to the code without affecting the live application. When environments are not identical across machines, it leads to bugs, inconsistent app behavior, and infamously irritating "Well, it worked on my machine…" conversations.
It is best practice to maintain isolated environments by logging into a remote managed environment or using virtual environments. For example, Python's project and package managers are virtualenv and pip. You can specify the packages needed in the environment using a requirements.txt file and then create the development environment on a local or remote terminal. Keep in mind that development environments can also be containerized using Podman.
[ Download the Podman basics cheat sheet. ]
You may install more libraries or packages than you anticipated, especially if you manage environments on a cloud platform such as AWS. In addition to maintaining identical development environments, it is also critical to use a versioning tool such as DVC or Git to keep track of modifications to the codebase and who made them.
Developers appreciate it when sysadmins go out of their way to learn about their tools. You may be surprised to learn that developers use many of the same tools and techniques sysadmins use. For instance, many scripting languages such as Python and Perl are used as the codebase for ML models and data-processing pipelines. Data engineers and web developers use Linux commands to transform data (tr
, paste
) and test connections between servers (ping
, curl
). The more knowledgeable you are about their tools, the more developers will care about respecting security policies and the underlying hardware.
Sysadmins are essential to the success of the software development process, and the nature of the role is constantly evolving. Be aware of new technologies and tools incorporated in software development pipelines. Take a look at the Red Hat Developer's Blog to stay in the loop. You can also search trending or starred projects on GitHub to find new tools, languages, and applications for your benefit and that of your developers. Also, read The DevOps Handbook: How to Create World-Class Agility, Reliability, & Security in Technology Organizations by Gene Kim, which I referred to when writing this article.
[ Download now: A sysadmin's guide to Bash scripting. ]
Thanks to Stephen Wilson, Chris Kang, and Trevor Royer for their insight!
Nicole Lama is a first-generation Panamanian-American with a bachelor's in biomedical sciences and a master's in bioinformatics and computational biology. Since 2015, she has worked with academics, tech startups, and Fortune 500 companies to help meet their data extraction, transformation, mobili More about me