Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

relatively inexperienced (~1 year out of school) developer here and SO newbie :).

What's the best way for a developer to sharpen their sysadmin skills/gain experience? I'm a developer for enterprise software right now, but I don't get to work much with OS internals. I admin my own Linux boxes at home, but I can't say I've done anything substantial besides fix some silly bugs.

Expanding one's knowledge and skillset seems easier when it comes to new languages and new development practices, as one can simply work on software projects of their choosing on their own time, but this doesn't seem really possible for system admin tasks. To be honest it would seem a little silly to setup difficult sysadmin tasks for myself on my home machine and "solve" them because I wouldn't have the product upon finishing and there wouldn't be any incentive to refine my solution.

Would it be wise to accept a junior sysadmin position? I'm going to be moving cities anyway, so I've been looking for another position. Not to insult anyone, but based purely on anecdotal evidence it seems there are more system admins looking to get into development than the other way around (I might be wrong feel free to correct me here).

I think I read somewhere on SO that more senior positions are essentially a combination of sysadmin and developer roles, and this is definitely the case at my workplace as well, so perhaps it would be better to wait and the skills will come with experience.

I'm curious because I would eventually like to get into Scientific Computing, and of course working with that kind of code requires detailed OS knowledge and the ability to administer large clusters of machines, so if anyone has any specific info about that it would be appreciated.

Thanks, Dan.


migration rejected from Jan 21 '15 at 7:18

This question came from our site for professional and enthusiast programmers. Votes, comments, and answers are locked due to the question being closed here, but it may be eligible for editing and reopening on the site where it originated.

closed as not constructive by Chris S Feb 8 '12 at 0:21

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

A few unrelated suggestions:

1) Consider studying for a sysadmin-oriented certification. While still not really the same thing as having a job which requires it, many of these actually do a good job of testing the fundamentals - I learned a lot studying for A+ and Network+, even though these aren't really sysadmin certs.

2) Read Nemeth's /Linux Administration Handbook/.

3) Look for jobs at startups. They usually don't have a full-time IT staff, so things will come up and get handed off to whatever dev is available at the time. There's also a lot more transparency, so you'll be able to see more of the details of what other people do to debug a problem.

Good luck! It's always a good thing when people work to expand their horizons.

Oh, and you might ask on as well.

If you use 1. instead of 1) your list will automatically turn into an HTML ordered list (<ol>). – Brad Gilbert Jan 30 '10 at 16:34

If you pursue a career in scientific computing, this does not necessarily have something to do with "system administration" in the classic sense. As I understood you, you want to administer server clusters used for scientific computing?

It is beneficial to have some basic knowledge on the inner workings of operating systems with a strong focus on distributed architecture. The absolute standard work in this field is Andrew Tannenbaum's book Distributed Operation Systems. The concepts mentioned for distributed Operating Systems are to some extend similar for distributed software architectures.

Since it's unlikely one has the resources to set up a cluster at home and test some real world scenarios (cluster set-up, failover nodes, load-balancing etc.) you can consider setting up your cluster as a series of virtual machines with internal networking using appropriate Virtualization Software (like Virtual Box).