Why Your Web Developers Should Not Manage Servers

Ok, I am going to poke my neck out and likely get it chopped off by a PHP guru, but in my experience, web developers make terrible server managers. Leaving your server management tasks to your development team may be convenient but could cost you time and money in the long run.

Before I set off some flame war, I just want to say I agree with Patrick Debois about the DevOps approach. In his great post, What is this Devops Thing, Anyway?, he advocates closer collaboration between development and operations. In organizations both small and large, these two departments tend to point fingers at each other rather than shaking hands.

Efficient Developers are Inefficient System Administrators
I work mostly with SOHO’s and SMB’s, so I see a lot of web application developers managing servers. Many of them get things to work, but at what cost?

I’ve seen many web developers download, configure and compile tools that were readily available in their distribution’s package manger. They may not know about the EPEL, Extra Packages for Enterprise Linux., that provides add-on packages for Red Hat Enterprise Linux. As a result, time is wasted downloading, configuring and compiling software that could be installed in 30 seconds.

If your dev team is fixing servers, they are not programming. If they are not programming, they may not be making you money.

Coding for the Future vs. Managing for Now
I understand the desire to write code using the latest and best version of your favorite language. You certainly don’t want your software to be obsolete by the time you push it out the door.

Many developers needlessly use versions of software that are not part of the standard OS.

I see this problem mostly with PHP. Red Hat does not upgrade its version of PHP. As a result, RHEL 5 still uses PHP 5.1 while PHP 5.3 is the latest. So when the development team wraps up their work and gets ready to put it into production, your server management team has to do extra work.

Building custom versions of software is not hard, but it does increase management costs, time and can limit scalability.

When possible, developers should consider using standardized versions of programs that come with the operating systems. This can lower total cost of management, assure vendor support, and allow security updates to be delivered quickly.

Creativity vs. Standardization
While I’ve met many creative sysadmins, I find most of the time we are pushing for standardization.

By working on system operations daily, you become very familiar with standard approaches. These may not be even well documented in the industry or formerly taught in any class. They are simply ways you annotate configuration files, places you put certain types of data, and other server management techniques that are widely used. This standardization makes it easy for multiple system administrators work on a server with little to no documentations.

Web developers often lack the experience to know the accepted standards. As a result, you may end up with “odd” deployment scenarios which can complicate management.

Web programmers have a very different task than system administrators. They often start with nothing and have to build an application. This requires creativity, trial and error, and attention to details. While application frameworks may lend some structure, there are often many ways to do the same thing.

With server management tasks, you can often do things many different ways, but there are accepted ways to approach things. If you are not managing servers daily, then you may not know these hidden rules just as I would not know the accepted conventions for writing a database connection in PHP.

If you let your web developers creativity spill over into your operations, you may discover problems when you go to scale up your project, your have staff changes, or new server software versions arrive.

By standardizing operations, you can more easily find help to manage your systems.

What’s your Take?
While I can read through the PHP or Ruby manuals and write a program, I know I would make a terrible programmer. I simply don’t do the job daily. As a result, I am sure I could get the program to work but it would likely drive a web developer crazy.

I would love to hear from web developers and system administrators alike, but I do have one question:

Why do system administrators make terrible web developers?

The following two tabs change content below.
Jeff is the CEO and founder of rackAID. He has been working in hosting industry since the days of Rackshack's famed customer appreciation parties back in the early 2000's. Jeff is an avid cyclist, wine enthusiast, and admitted Kraftwerk listener (please don't hold that against him). You may spot him at any number of hosting, startup and small business conferences

7 Comments

  • Nick Anderson April 16, 2010 at 9:54 am

    I tend to agree with your statements. It’s been my experience in the past when working with Developers that the point of view of a Developer and the point of view of a SysAdmin are quite disparate. I’ve been following the devops discussions and while I agree with the main principals I hate the term “devops”. I haven’t quite pinpointed what I don’t like about it but it just doesn’t feel like the right terminology. I’m not even sure it needs a name, none of this is new. People and technologies are ever evolving. SysAdmins learning to understand Developers challenges, and Developers learning to understand management challenges shouldn’t be a “movement” but common sense in working with other people. The same goes for cross pollination of tools and working styles.

  • Andrew Gill April 16, 2010 at 10:19 am

    I’m a web developer and i agree! I wouldn’t even try to do any sysadmin work on a production server. I’ve messed around with dev servers and made a real mess of it.

    Andy
    Linkstream.co.uk – SEO Web App

  • will pink April 16, 2010 at 10:25 am

    In the case of Ruby dev’s I have seen a great demonstration of skills in system administration, I put this down to some web developers not having the resources to employ a sysadmin and having to do it themselves in the past. Developers are usually a very intelligent bunch who I find who love tinkering with code or systems and educating themselves.

  • bryanl April 16, 2010 at 11:01 am

    I really enjoy developers who come into their jobs as a graduation from devops/sysadmin work.  I think the knowledge of how things really work goes far in allowing you to create solutions that take full advantage of the OS/Hardware.

  • Jeff H. April 16, 2010 at 12:18 pm

    Will Pink:
    I don’t doubt that developers have the skill or intelligence. I think many simply lack the experience.  You really don’t want to be “tinkering” with productions systems, especially if the environment is a complex one.

  • Eric Lubow April 19, 2010 at 12:31 pm

    I definitely fall into this category.  I am a SysAdmin by trade but program because it’s necessary.  I know Perl, Python, and Ruby and use each when it makes sense to. The best programming I do anymore is to automate systems tasks.

    I think this is because I spent the majority of my time learning systems while developers spent their time learning programming practices, techniques, and algorithms.  As Jeff H. said, I think it comes down to experience.

  • Alex Deva May 2, 2010 at 2:28 am

    In my opinion, sysadmins typically make for poor webdevs because they’re task-oriented, not project-oriented. I’m a webdev myself (on the ruby side of the flame war) and I work with high-grade sysadmins. The responsabilities are pretty sharply delimited and we like it that way.

    I used to be a sysadmin too (back in the days of RH4, 5) and I know that the job requires a well-defined skill set, many of which cannot be aquired by mere learning and practice. I suppose the same is true for devs, this being why I switched sides.