System Admins Should Know How To Code
snydeq writes "You don't need to be a programmer, but you'll solve harder problems faster if you can write your own code, writes Paul Venezia. 'The fact is, while we may know several programming languages to varying degrees, most IT ninjas aren't developers, per se. I've put in weeks and months of work on various large coding projects, but that's certainly not how I spend most of my time. Frankly, I don't think I could just write code day in and day out, but when I need to develop a tool to deal with a random problem, I dive right in. ... It's not a vocation, and it's not a clear focus of the job, but it's a substantial weapon when tackling many problems. I'm fairly certain that if all I did was write Perl, I'd go insane.'"
People who've never coded tend to have many "magic boxes" in their thinking about systems. I find it hard to fully trust an administrator who can't at least parse through other people's code.
Cloudiot: A person who does not see offsite storage as a way to lose control over access to his or her own data.
...and support for that matter.
Next you'll tell me my developers should know how to admin a server and do so at a drop of a hat.
And if you're going to say I'm a programmer then pay me like one. I don't think most sysadmins get paid as much as programmers, and I don't think most companies want to pay sysadmins as much as developers.
Also, developers trying to write tools for sysadmins usually suck at it, unless they've been a sysadmin at some time in the past. I have used a few products lately which are trying to solve all our sysadmin problems, and the one that doesn't suck comes from a dev who is a former sysadmin. And when I talk to him and make suggestions he sees exactly where I'm coming from.
Developers just want to solve use cases that fit neat little scenarios without any corner cases, and it shows when their tool is so inflexible as to be useless.
In general, everybody dealing with computers can benefit from a bit of programming knowledge, not only admins. The rule of thumb is: if you're doing a repetitive, braindead job, you're doing it wrong. Computers are built to do exactly that. A small script can automate a lot of work for you, if you have that skill it can help you tremendously.
"It's too bad that stupidity isn't painful." - Anton LaVey
Isn't this all rather self evident?
That usually implies a bit of programming at the very least. Maybe a sysadmin no need to be a large projects developer, but the small tools that could make his life easier would make a big difference.
The ammount of skills Network admins should know and still get paid a 10th of what we are worth is ridiculous.
I should be making close to 300k a year, Do you think any company would pay that?
So now I need to add codder to the resume which will effectively fall on my shoulders to maintain code? Bad idea.
I guess I should be happy and count my lucky stars that I have a job?
The one thing I have noticed in companies that Sales weasels get paid a lot more money than I and the responsibility lies on the network admin to keep it all running.
So, does Perl drive you crazy or do you have to be crazy to program in Perl?
Coder's Stone: The programming language quick ref for iPad
I'm fairly certain that if all I did was write Perl, I'd go insane.
As a programmer, to me this is like someone equating author and typist. Code is just a medium. Figuring out what to do with it, and how, is the fun part.
I remember the judge... http://lazytechguys.com/news/business/judge-for-google-and-oracle-case-is-also-a-programmer/
There are three kinds of people in the world. Those that can count, and those that can't.
Many IT professionals called systems administrators have no idea how to code. They basically perform the strict description of systems administration activities. But those who can code tend to be the better sys. admins. and usually end up directing those who do not know how to code. Coding is one of many tools a proficient sys. admin. has. Another is problem solving skills. Believe it or not there are systems administrators out there that can actually solve a problem without calling the vendor.
I was never a developer as it is now called, but I wrote code in about half a dozen or more languages to solve a problem that needed to be solved. I worked with System Administrators and Engineers that had never written a line of code in any language and to me it seemed that they were working blind and with one hand tied behind their back
But the sysadmin's job is to support the code and OS, not figure out what is wrong with the code when things break.
Strawman's argument. The article clearly is talking about using programming/scripts to facilitate the system administration jobs, which is a no brainer. It does not say to be a developer and hack in some change to a large app to fix an issue. Or perhaps I missed that part?
As an IT manager, I don't want my sysadmins to code. I want my coders to code. I want my testers to test. And I want my sysadmins to...ermmm...admin the sys. Mixing roles & responsibilities can be really dangerous, especially when there's a strict development and deployment lifecycle in place (and if there isn't you're living in uncontrolled chaos), including change management and release management, that must be gone through properly. Uncontrolled changes, with sysadmins using production systems like they're test environments, is a bad idea and will end in tears.
You doubling my salary for that extra work? I'm tired of the constant scope creep people keep shoveling in without an increase in compensation.
Do not look at laser with remaining good eye.
Then maybe I wouldn't spend an inordinate amount of time fighting with programs that can't understand how to run as a deprivileged user, that can't properly set up their own environment variables and so on.
So I'll promise to learn to program if they'll learn to sysadmin. Since I already know how to program then they'd better get on it.
I've worked in companies ranging from 5 people to 40,000 (and plenty in between). In the smaller shops I've had to do administration, development, desktop, and customer support. In the larger 'enterprise' shops, I'm constantly amused by the myriad breakdowns in communications caused by folks being incapable of putting themselves in the shoes of their coworkers.
Being a developer made me a better system administrator. Being an admin made me a better developer. Same with operations, support, et. al.
Sometimes I play 'sysadmin'. It winds up as the "this doesn't work, make it work" role. Today it was reading the RFC's to figure out how DSN's are supposed to be returned, writing the java.mailx code to make the developers' app do that, and explaning how SMTP works. Other times it's working through a SQL query planner, finding why packets are headed in the wrong direction, re-doing an architecture, etc. It's not possible to do the job well without good CS training, a solid background in coding, a solid background in networking, and just plain blood, sweat, and tears.
Then again, you could study for a test exam in 21 days and call yourself a sysadmin too. It's always the definitions.
My God, it's Full of Source!
OUTSIDE_IP=$(dig +short my.ip @outsideip.net)
At one point, we *had* to code. Tools didn't exist until we made them. Or at least tools that did what *we* wanted didn't exist until we made them.
I blame Windows weenies for the loss of this skill. They cannot function without pre-packaged clicky things. Nitwits.
I'm fairly certain that if all I did was write Perl, I'd go insane
And that's the point when you officially become a perl hacker.
It's probably a lot healthier to stick with proper OO languages.
That statement makes you not crazy enough to be a code monkey.
... if all they did was write Perl.
Where do you think Slashdot came from?
I don't think anyone could argue that having skills in both areas isn't a good thing. I've been a sysadmin for 20 years and i've had to do basic development over the years (apache modules, ldap-ifying applications, etc). When it comes to troubleshooting complex problems as a sysadmin and the whole team is whiteboarding, you can tell pretty quickly who understands how systems work below the user interface. This is often only learned through writing code.
The opposite is true for coders too. With a few execeptions, the most competent developers I've worked with have had sysadmin duties at some point in their career. Not that long ago, I had to sit down with a Sr. (Java) developer and explain load balancers and TCP session state.
I'm fairly certain that if all I did was write Perl, I'd go insane.'"
but Perl is a beautiful language!
Just because it CAN be done, doesn't mean it should!
Yes, it is the Sysadmin's job to figure out the code is broke, knowing how to program can tell you when there is a 'program' problem verses a hardware or network problem. You can then give better test cases and problem reports to the developers which allow the problem to be fixed faster.
Really this isn't any different then any other job out there. Lets say your a truck driver and your truck isn't working right. If you know very little about the internal workings of engines you'd tell the machine shop that 'there is a problem' or 'it's not running right'. If you had a good idea of the operation and components of the engine and drivetrain it is very likely you could give a better bug report 'it's not shifting at 4k rpm, possibly due to loss of vacuum'. Little details like that can save hours of 'fucking with it' to figure out what the issue is.
Really this article is kind of a 'duh', how surprising is it that having more knowledge of how a system works makes you better at working on that system.
A lot of the time you don't want developers administrating other people's gear since you get shit like unnecessary reboots of servers during peak working hours leaving 300 people with nothing to do apart from read newspapers (one memorable example). It's not skills that separate a good developers from a good sysadmin but instead a consideration of inter-related systems and caring about consequences of actions.
I don't know about full-blown compiled coding or anything, but sysadmins definitely should have a grasp of a scripting language relevant to their environment (such as vbscript for windows). There are too many times you get requests for stuff that inexplicably have no official support for, such setting up a default Outlook signature for all users that pulls information from their login profile. The sysadmin who can say "give me 30 minutes minutes and I'll have it ready for testing" will look a lot better than the sysadmin who says "we could buy an $800 program that will allow us to do that, but we'll still have to test it out."
Experience in one field can be an asset in another due to inherent interdependent qualities! Wow!
But as many others here have pointed out, the last thing businesses need is another job to dump on the IT department while continuing to tighten their budget (because, hey, computers are just computers, if you know about them, you know everything about them, right?)
Psh, real men use goto statements.
Welding all this developed-in-silos software together so it actually works should have some compensations.
Developers should know how to do the admin job.
However I do believe they should know how to script..
Just my HO. Coding can be a bit too excessive for a sysadmin - otherwise he'd shift more towards programming. Scripting can be more than enough with bash/perl/php/python.
Captain Obvious...
> I'm fairly certain that if all I did was write Perl, I'd go insane.
Especially Perl.
Oliver's law of assumed responsibility: If you're seen fixing it, you will be blamed for breaking it.
If you can't code, you're probably a Windows admin.
Often my help desk guys ask what they can do to get off the phone and do their job better and I say learn from something I over looked for a long time...learn VB and Perl. You can do so many awesome things with minimal code that can help take you systems to the next level. They should learn simple bat & vb scripts and then move to Perl and on from there. I think the biggest problem is that they over look the tools you can create with them. Like logon scripts and scripts to make mapping a printer as simple as double clicking a file.
The cowards are out in force today.
In my years as a Windows admin I found it interesting to find out which other admins could or could not write scripts and then classify them by the level of their abilities:
- The GUI clicker Guy .NET FrameWork, Activator, Marshall, Reflection, COM+, Jobs, Runspaces Guy .NET, API, SDK, MSDN, Compiler, Remote Debugger, Memory Dump Analyzer Guy
- The Command Line ipconfig.exe Guy
- The Google for a Script Guy
- The Cut-and-Paste Each Line Separately Guy
- The Excel Drag-and-Fill Guy
- The Search and Replace In a Script Guy
- The Batch Script with No "@echo off" Guy
+ The For loop Guy
+ The Reg.exe Guy
+ The PsExec Guy
+ The 2>&1 Redirect Guy
+ The Pushd/Popd Guy
+ The Setlocal Guy
+ The Rundll32.exe Guy
+ The Findstr.exe RegEx Guy
* The GnuWin32 Sed/Grep/Tee Guy
* The Cygwin Guy
* The Perl Guy
* The VBScript Retarted Syntax Language Guy
* The JScript Cool Web Language Guy
* The Script Signing Certificate Guy
@ The PowerShell Guy
@ The PowerShell & Quest PowerGUI Guy
@ The PowerShell & PowerGUI & 3rd Party Cmdlets Guy
@ The PowerShell & [.NET Framework] Accessing Guy
@ The PowerShell &
$ The Visual Studio C, C++,
$ Kernel Developer
You're quite correct - scripting *done properly* is the key. The hobby scripting mentality is something that we have historically had some challenges with, and it has ended in tears. And blood. Lots of blood. Dev and test environments have been made available in much the way you describe, but it has been a case of you can lead a horse to water but you can't make it drink. In my experience some people, especially those who choose to work in the operations space rather than project side, seem to have problems working within a process that involves other people. To mitigate risk they need to be part of a bigger process that involves independent checking and some level of traceability, but they don't necessarily want to be. How else can they cultivate their image as a worker of miracles? A proper mindset is just as important at proper procedures and environments if you want decent scripts.
Should a developer need to know the ins and outs of the Data Center? Should they know Unix/Linux/Windows/App Servers and everything else that is running?
If you want that code to run in a massively-parallel hot-swappable environment, then you bet your ass you want your devs to understand everything running in that environment.
If, however, you want a standalone app to run on a few desktops, then no, your dev doesn't need to understand data center architecture; but in that environment, neither does your admin / ops guy.
Realistically, I give this FP a 9/10 for managing to troll a group of people who largely overlap. Most programmers can do 95% of sysadmin work; and most sysadmins can code reasonably well. People go into one or the other not for their capacity to do the other job, but either as a preference or even blind luck.
Personally, I would rather deal with pure code than dust, but I've damned well pulled cable while crawling through 70 years of dust inside a ceiling at 120F. On the flip side, I know guys who just love the shininess and the contented hum of a new rack, and consider scripting one of the "dirty but necessary" aspects of their job.
But can we all just settle our differences, come together in peace, and agree that the rest of the world sucks and needs to learn to both how to 1) use a vacuum cleaner, 2) plug in their own damned monitors (and perhaps the occasional printer), and 3) write simple Excel macros?
Mechanics should have mechanical skills.
If you are a sys admin and can't find any boring/repetitive tasks for which you can write scripts, you're not a real sys admin.
I've found that what can happen in the large corporate world is that you have Developer teams, Production run teams, various IT infrastructure teams, and the Systems Engineers. Networking gets blamed for every outage because well, they are the common thread that all the bits run over. Storage gets stressed out because it is the last thing anyone thinks about until they need it, and the Systems engineers well the Developers want to play all roles unless they don't want to. Production run sometimes lacks the deeper skills of either programming or IT infrastructure.
Enter Unix Engineers. We are expected to have general knowledge of all IT infrastructure, which we do, we program and script extensively, because our automation depends on it, and we have extensive production application run experience do to managing all the different back end services that everyone depends on. mail, dns, ftp, sftp, web server engines, monitoring, etc. Yes a good sys admin must know how to at least read code and ought to be able to code/script in at least one language even if that is Dos Batch. The problem in the end though is as others point out. The more you know the more production run teams may lean on you to solve their problems. "Just ask the Unix team", Not because it is their responsibility, but because they can solve the problem quickly as they have the widest berth of knowledge.
Coding as a Sys Admin is crucial. Just know when to say I can't(or won't), for your sanity.
There is or can be built a machine that can simulate any physical object. -Church-Turing principle
I've been at fortune 500s in which I was tasked to provide some system administration/helpdesk for a branch office of about 50 employees. It wasn't every day, just a few times a month I would be onsite. The hilarity ensues when I have to call the main office to speak with the IT dept. In one recent example, I had some trouble with Exchange connectivity inside the office. He tested the cluster of servers and ran mail flow diagnostics. Looked fine. He said it was the network guys job. So I called the network admin, he said traffic and routing looked good on his end, it must be an Exchange problem. Back and forth we went. The problem was a combinations of undocumented server and DNS changes. Nothing got resolved until I got at least five people in conference call. It was only then that people started to fess up as to what was going on and when.
In short, it was a breakdown in communication. I only got things working because I took it upon myself to wear the managers hat and get shit done. Way above my pay grade, and I'm sure I get paid half as much as those fucking monkeys behind the phone!
Ya, I'm bitter.
Life is not for the lazy.
Please no, I enjoy both programming and systems work and am equally good at both. I enjoy the lack of competition presented by those that can only do one or the other.
you're bitter because you solved a problem that was 'above your pay grade'??
Wow, maybe this is what's wrong with the IT industry. Yeah, big corps are complicated and bureaucratic etc etc etc, but if more people actually WANTED to make an effort to do stuff, and worked outside their own defined sphere of influence just to y'know, actually get shit done, then maybe things wouldn't be so bad?
All the discussion here leads me to the conclusion that the key to happiness is as simple as continuing to learn and develop your skills and to occasionally stick your neck out and do whatever it takes to solve the problem.
Hej! Nasi tu byli!
Your proposal is ridiculous! Next, you'll be saying politicians should know how to run a country!
I was promised a flying car. Where is my flying car?
In this day and age it's kinda amazing to still find admins who can't even script enough to take some of those annoying petty tasks off their hands.
Using code as a buzzword seems to have caught in within the last year or so, I now see it on a regular basis. And I always think "what programming language are they referring to?", apparently html is also included.
Buddy, this how you get promoted - doing things above your pay grade and making sure management knows about it. You then become the go to guy for management to solve problems. Then during salary/bonus/promotion time if they don't reward you drop them and leave.
It had never occurred to me that there might be sys admins out there who *can't* program to some degree!
If you try to fail and succeed, which have you done?
Nah, I programmed for a while, decided I didn't want to do it full time and had more fun messing around with sys admin type stuff.
If you try to fail and succeed, which have you done?
Been working IT for almost 15 years now. The respect is the same then as it is now. You wade through shit to solve a problem, only later to get bitched at for not finding it sooner when in fact you were originally trying to make a case of how pro-active you've been. Oh, and because I've been wading in shit, I smell bad.
There is no respect in IT and the pay sucks. I'm looking to find another career patch that isn't already tainted with disdain. Fuck this, life is too sort. I'm tired of falling on the sword and not getting any recognition for it...for 15 years.
Life is not for the lazy.
....would you accept that statement from your mechanic when their fix doesn't work?
Knowing a little programming is good (for scripting and "glue" programs), but I've seen too many CS majors that try to reinvent the wheel (because they like to program) rather than getting to know the built-in tools that are fairly standard and vetted.
e.g., I had a CS major ask if there was a Linux version of WinDiff because he was thinking of writing a Linux version.
Competition Good, Monopoly Bad.
Is there a code v. comment synchronization system yet? I'm imagining something where a comment is associated with nearby code (delineated by whitespace or scope) and includes a checksum of that code.
foreach my $atom (@atoms)
{
my $radius;
# calculate thermal radii as inverse of temperature, scaled to allowed range (CC 58e2 c902)
$radius = $atom->{'temp'} / ($max_temp * ($radius_max - $radius_min) + $radius_min);
print "$atom->{'x'},$atom->{'y'},$atom->{'z'} $radius\n";
}
And your editor can highlight it for you if it falls out of sync.
If all you plan to do is camp where you are, and you don't see a need to code.. well good for you. I'd still recommend knowing at least the basics since it can, and more often than not does, improve your ability to perform your job. I use scripts all the time, but then again I'm not an average system admin. Let me give you a few examples.
I wrote a script for resetting LDAP passwords for Unix, since most Unix admins don't understand LDAP. It had to meet NISPOM compliance, randomly generate secure passwords, inventory LDAP to ensure the user exists, poll People Soft to ensure the employee was valid, etc.. It was a cool little project that took me about a week. However when it was done our level 1 support could reset passwords for users, saving time in the long run for everyone else (including myself). They still use the same code to reset passwords, and I wrote the utility 7 years ago.
That little project, since I wrote it modular, was expanded to full user and group management. Need to add a user, type in a badge number and answer a couple basic questions. Again, level 1 could add users and groups to Unix LDAP without issue. 6+ years later, they still use those too.
Analysis applications often have countless requirements for Engineers to run jobs. I wrote wrappers for everything from MSC software to PAM CRASH. wrappers were simple to modify for new versions and again those are being used some 10 years after I wrote them.
Need to validate users from disparate systems, write a script. Need to check for compiler functionality, write some basic C code. If you can't get a simple program to compile, then neither will your users. In my opinion, a sign of the best administrators are that they test and think things through.
Coding can make your job much easier, as well as those around you. It's all about what you can innovate, then how you innovate a solution. I use scripting much more than C, but sometimes more complex problems come with C. Testing things like memory with an active OS are simple in C, why reboot and wait for a vendor disk?
Like I started with, it may be something you don't have to do now. However, to make yourself more valuable I'd highly recommend it.
-The wise argue that there are few absolutes, the fool argues that there are no probabilities.
I have never met one that couldn't program, I have actually found the opposite, the sys admins I have worked with could program better in more languages, and the coders could only code better at maybe 1 or 2. Sys admins need to know C, unix tools, windows tools, perl, php, shell, and a multitude of operating systems and different packaging systems that go along with that, they are generally more intelligent than the most intelligent programmer, and generally on spare time kernel hackers, so not sure what types you hang out with, but please don't insult the real admins :)