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
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.
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?
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.
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.
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.
Wow..... just wow. As an IT Manager you have failed to grasp the concept of this article, and that is a worry.
They are not talking about sysadmins writing production code - they are talking about using one of a variety of scripting languages to solve sysadmin problems - eg repetitive tasks like backups, deployment scripts etc, maybe even some html status monitoring screens or a cactus plugin.
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.
You have failed to grasp that *anything* that could influence correct operation of a production environment, even a little 'harmless' script that manipulates production systems and/or their data, needs to be managed correctly, assessed for impact (by someone other than the guy that wrote it), tested properly and deployed carefully. Risks to production need to be managed, and the biggest risk I know is a sysadmin with a god complex and a hobby in scripting.
The sysadmin is one member of a team. The article's talking about 15000 lines of code, which isn't a small amount. That's dangerous territory for sysadmins to get into. Do they understand design for performance, security, error checking, maintainability, corner cases? Have they done the right analysis? Are they solving the right problem? Do they understand how to test? These are not rudimentary skills, even though people think they are. The likelihood is that they haven't done enough to get past the company's (not my) Change Management/Release Management process (which is a fact of life in most organisations that have any level of sophistication) and the coders will be able to do it better, faster and get it through first time. So the total cost of ownership is what I'm looking at, it's not just about solving an immediate problem - it's also about how much effort it will take in future to keep that problem solved.
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
There's a difference between knowing how to code and doing it outside of established processes. The knowledge enhances the admin's ability by giving them a big picture view of the product life cycle. The same holds true the other way around (coders understanding admin tasks).
If the only way you can keep your employees from mucking about outside of established procedures is to hire those who don't know anything beyond their job description, you've lost control of your people.
I've worked at employers who insisted on hiring "technological savants" (a term coined by Scott Adams to describe employees totally unskilled outside of their narrow field). What you end up with is trained monkeys. People with no interest or motivation to improve themselves, their jobs or their products.
Have gnu, will travel.
So, you are willing to accept an admin task performed manually, mistake creepage and all. With 500 workstations, there's no guarantee that the last one will be configured the same as the first. After the first few dozen, fat finger mistakes will undoubtedly creep in. By number 400, your admin won't be seeing straight anymore.
When we say "admins need to understand coding" this includes all of the associated issues of testing and configuration control. Perhaps not to the same level of detail as the code for the product. But in some cases, it can come pretty close.
I'd much rather have my admins script everything. And save the script. So when we come running in and ask, "What the **** did you do??!!", they have the exact steps in hand.
Have gnu, will travel.
scripts need to be developed carefully, within a process, and there's better people to do them than sysadmins alone.
So, who do you suggest write the scripts? And how do you get the domain knowledge and requirements from the system administrators to these script coders?
Have gnu, will travel.
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
So if a sysadmin does it manually with all the risk of mistakes it entails, that's fine and dandy, but if they dare write code for it, only then it's subject to the holy process? LOL.
A successful API design takes a mixture of software design and pedagogy.
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!
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.
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.