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?