The Skill I Wish All Developers Had

One of my team members recently said that he was looking forward to the day when everything runs in the cloud so he no longer has to do sysadmin work.  He said this at a time when he was configuring some VMs to create a test environment for our large enterprise application.  I didn't think much of it at the time, mostly because this guy is a really good sysadmin and the configuration was a little bit of a time sink but didn't really get in our way.

I started thinking about his comments more when a member of someone else's team ran into a driver problem.  He went from "it's not working right" to "I may have to reformat the box" in less than a half a cup of coffee.  This led me to thinking about some of the other teams and how they worked for more than 2 years using only a shared environment because no one felt comfortable enough with setting up individual environments.  To be fair, our environment isn't exactly trivial.  We have a mix of IIS web services, Tibco EMS, Oracle, and Active Directory.  At the same time, there's nothing really exotic in there.  These are not only standard technologies, but every one of them can be downloaded as a trial version online.

Driving home last night I realized that I wish every developer had basic to mid-level sysadmin experience.  The ability to not only set up environments from scratch, but to troubleshoot (in a logical way . . . one that doesn't start with, "Well, gotta set it on fire first.") and fix problems.  This skill also helps in a corporate environment since you'll either have to work within the network bounds, work around the network limitations, or both.  That ability only comes from understanding how things really work.

Being a Big Swinging Developer is all about being valuable in whatever environment you're placed.  If you have some sysadmin tools in your toolbox, you never have to be the one sidelined by what turns out to be a speed bump rather than a true block.

4 comments

  1. Brent Ozar says:

    Agreed. I do database administration, and it's exactly the same issue. It's more than just troubleshooting – it's designing for scalability, too. For example, if you know systems administration, you'll have a basic grasp of things like backup and recovery. The DBA can't say things like, "You can have a fifteen minute window to back up the one-terabyte database." If you've done disaster recovery as a sysadmin, you'll understand why they're so reticent to save user-uploaded files on a machine's local C drive without some kind of Plan B. There's so many things that system administration teaches you about how to design systems for real-world implementations.

  2. Jay Grieves says:

    Thanks for the comment, Brent!

    For those of you who don't know him, Brent is a Big Swinging DBA. Well versed in not only sysadmin and virtualization, but also speaking, writing and the Black Art of SQL Tuning . Check out one of my favorite posts: http://www.brentozar.com/archive/2008/10/being-the-porsche-of-job-candidates/

  3. This is so spot on. I spent years as a FidoNet SysOp before becoming a SysAdmin and then a Developer. But I didn't go down the traditional route. Instead I found a love for Builds and Installs. This requires a very broad and deep knowledge of both the SysAdmin world and the development world.

    It never fails to amaze me when I come across developers who can't even do simple crap like install Windows or snapshot a VM. It's as if their entire understanding of the world is based on leaky abstractions and there will always be someone holding their hand when things don't work the way they should.

    I entered this industry assuming that Software Engineers obviously must know more then lowely Sys Admins. I quickly realized this to typically not be the case.

  4. Dania Kodeih says:

    Hey, great blog..

    In my experience, developers who have sysadmin skill tend to be better developers overall. This ranges from using basic Unix sysadmin experience (long live cygwin), to using build tools like ant or maven. Experience in writing ant or nant scripts, especially writing your own custom tasks, counts as added development experience.
    I remember a couple of years ago facing off with some of my colleges who didn't think we could replicate a Citrix environment in a VM.
    Sure enough, we did.. In thinking back to another post you have written about being slave to tools: a good developer works with whatever tools that are available to her and makes the best of it..