Another reason sysadmins should program

December 8, 2011

One of the SysAdvent entries I recently read was John Vincent's Always Be Hacking, about how all sysadmins should be able to program. He gives a bunch of sensible, rational, career-related reasons for this, all of which I wholeheartedly agree with. Still, all of that career related stuff is a bit dry and calculating, and maybe you're not really enthused by it (any more than many Unix sysadmins are enthused by Windows, popular or not).

As it happens, I feel that there's a big motivation that John only touched on in passing:

Being able to program is a great way to make system administration more fun.

And I'm not talking about programming itself being fun (it is to some people, me included, but not necessarily everyone).

System administration is about solving problems (including by building things); that's what gives us our kick. Being able to program (and its mirror twin, being able to understand programs) vastly increases both the amount of problems that you can solve and the size of the problems that you can tackle. Every increment of programming capability widens the horizons that you can reach; shell scripts, 'scripting' languages like Python and Ruby and Perl, large system languages like Java and C++, and low level understanding in C and assembler, they all add to what you can build and what you can understand.

If you learned shell scripting on your own as a sysadmin, you've probably already experienced the moment where you suddenly realized that you could script all sorts of tedious stuff that you'd been doing by hand. Full scale programming gives you that moment over and over again, mixed with the feeling that you are peering behind the walls of the world and seeing the gears turning (as in this well-known illustration).

You're a system administrator. What's not to like about being able to solve more and bigger problems, about being able to scale more and more of the walls that inevitably appear in your way? Being blocked by obstacles is frustrating and no fun; getting past them (or not even noticing they're there) is great fun.

Comments on this page:

From at 2011-12-08 16:57:10:

lately i've mused that sysadmin and site reliability types have the most rewarding playground that exists for programming. it doesn't get any more dogfoodly than building tools to make your own job better. it's a different skill than pure dev in terms of interpreting a marketing or end user spec and building to meet that, but it's really more pure in terms of geekery to build for yourself. it's also more practical and real experience in that tools tend to evolve on vague intervals as there's not usually a hard ship date and your own urgency and availability is more dynamic than even an agile product dev cycle. volatile focus gives you a different perspective on your problems as you alternately pound out tools and ruminate in the background on your ideas. you come to internalize the importance of continuous improvement and practice of good habits like commenting, prototyping, modularizing, etc. i'm not sure there is any better or more satisfying form of engineering.

-Scott Dworkis

Written on 08 December 2011.
« Understanding the Solaris iSCSI initiator (a bit)
A quiet advantage of the systemd approach to service management »

Page tools: View Source, View Normal, Add Comment.
Login: Password:
Atom Syndication: Recent Comments.

Last modified: Thu Dec 8 00:38:26 2011
This dinky wiki is brought to you by the Insane Hackers Guild, Python sub-branch.