The following is an update to a post originally made to ServerFault in 2009.
System administration is more than clicking Next, cutting your fingers on cagenuts,
and 3am pager alerts. Sysadmins can borrow many of the same skills and tools that
programmers use daily to make themselves more productive, and build a deeper
understanding of the systems they manage. The following five skills are perhaps the
most obvious overlaps between our two roles:
Version Control. Be able to generate, read and apply patches. In 2012, it's vital that
your version control system present a repo wide version history. You should be able to
write descriptive changelogs and why you want them. Whatever your technology (I recommend
git by default), know how to search the repository's logs for keywords and time frames.
Scripting. Do something once and be on your way. Do it twice or more, do it once then
write a script. To paraphrase Tom Limoncelli, if you're not using Powershell or bash,
you're working too hard.
Debugging. Know how to read a stack trace and how to report relevant errors to your
software support contact. Documenting the error is easy and helpful, but knowing how to
fix it takes a lot of investment in reading a specific code base. Do the part that's easy
for you, and let the devs handle the part that's easy for them.
Testing. Repurpose integration tests for continuous integration testing. Used in
conjunction with version control and testing, you have a strong idea of what may have gone
wrong when and what changed at that time.
Peer Review. Keep your system configuration in revision control, and turn on commit
mail. Change is core to system administration, not just an agenda item at the weekly staff
meeting. Do not let Change Management degrade into political battles or displays of
Study Cryptography. System administrators are charge of networked resources; baking in
security as a final step is somewhere between impossible and a very expensive proposition.
Given how much of the sysadmin role involves acting as a trusted third party, understanding
public key cryptography, password handling practices, entropy and encryption in general are
valuable skills in debugging, performance tuning and setting policy.