SUMMARY: Opinions Needed: How important is an understanding of C Programming and Internals to

2007-12-24 22:13:00

I have recieved 53 replies so far so I think this is good enough :)

I should have been more clear about the application of the skills I mentioned in the previous message and how they relate to a System Administrator.

My question should have qualified that these considerations were for Sr. Level UNIX Admins (or engineers in some companies, here the admins do implementation and support) improving their ability to solve problems and do performance tuning. Not to become C programmers or device driver developers.
This would mean that the person(s) would already be very fluent in shell scripting, perl, best practices and procedures and all of the day to day admin stuff.

Or to elaborate more extensively, here's my angle ...

DEVICE DRIVERS - Sun doesn't offer a class that drills down deeply into how their device drivers work, so when troubleshooting why dynamic reconfiguration wouldn't work with a device driver that should support suspend/resume, or how the sd, st and fcaw driver behaviors relate to each other; your
forced to troubleshoot and make sense of these behaviors strictly thru observation and what little documentation exists. Since a "Writing Device Drivers" class does exist, my rational is that while you may learn a lot more about the implementation than you need, it still wouldn't go to waste for the
motivated hacker that is willing to learn it. for the next time they had to disect an issue with a device driver. (I know, a lot of people like to leave this for Sun).

INTERNALS - When addressing performance problems, I would think it's critical to understand some internals. Consider the scanner and priority paging. Without an understanding of how the scanner functions, how could you begin to know what it means when the scanner turns on. Prior to Solaris 7 you had
to examine and compare watermarks (lotsfree, cachefree and freemem) with adb to get an idea of whether the scanner running meant a true out of memory condition rather than being caused solely by large amounts of filesystem I/O putting pressure on the VM System.

C PROGRAMMING - to learn more about include files, libraries, the linker, the basic procedural flow of a C program and have a clear understanding of the difference between user functions and system calls. Also how to compile a program, debug it, understand the basics of memory allocation, i.e. VSZ
vs. RSS and obtain a backtrace on a core dump. Also, understanding how command arguments are passed to a C program might take some of the mistery out of shell operator presedence after parsing argv[] a few times.

With that said, the replies consisted of opinions in all directions. Some said it's all totally irrelevant, and many said that device drivers were irrelevant. Quite a few felt that "Some Level" of C programming knowlege is important for a System Administrator.

All 53 replies below ....

From: mike.marcell at pni.com
Sent: Tuesday, March 19, 2002 2:00 PM
To: Lumpkin, Buddy
Subject: Re: Opinions Needed: How important is an understanding of C Programming and Internals to a UNIX System Admin?

Buddy,

I guess that I have a 2 part opinion on this. Personally, I like to learn
as much as I possibly can about everything, and then some. I feel that
the more an admin can learn about the system at a high and low level, the
more well rounded that person is. Knowing how to program in C,
understanding unix internals and being able to write device drivers helps
to pave the road to becoming a true unix, or rather Systems Admin Guru.
The guys that I look up to are those guys like that who seem to have done
it all, and just know at least a little about everything. So, personally,
I'm all for it!

That being said, not everyone that I've met or worked with wish to become
true guru's. Some people are content with being a decent
administrator, and not getting into the development side. What you're
describing is leaning towards the developer/programmer/engineer side of the
house, and those things can take different minds. I've known many a
brilliant person who posses these qualities that you mention, and some of
them I could even sit in a room with for an extended period of time....:-)
But many of those people I would also not send to talk to my users, or
other management about system related topics. They'd scare off the users
(wouldn't we all like to!) and speak in such a technical tone, that people
wouldn't relate well. Not to say that people who have these qualities are
odd balls, but the type of mind that it takes to reeeeeallllly know the
deep down internal portion of the systems, is not always the same type of
mind that it takes to interface with your end-users and other
organizations. I'm really talking about complete different ends of the
spectrum here, and this doesn't apply to everyone, although the names and
faces of folks that are coming back to me as I write this remind me of what
I'm describing. I believe that a really well rounded system
administrator lives in the middle ground of this.

I guess that my point here is that there is a place for people who really
have a deep seated desire to know the meat of the system and everything
that is the system (guru), and others who don't care about redesigning the
wheel, but are happy to know how to maintain perfect balance in that wheel
(Sys Admin). Both are needed, so that both can do their jobs well. From
my experience, you're usually leaning on one side of this or the other.
Everybody wants to learn more, to fill up their resume with really cool
stuff. But I don't know that it is in a companies best interest in
spending money to train admins to know this. Personally, I'd 1st like to
see the admins trained extensively in Network Administration, Security, and
all other aspects of systems administration like performance monitoring and
tuning, volume and filesystem management, and shell and perl scripting, and
then if those folks posses a strong desire learn C, and device drivers. I
think that it's probably more useful.

Hope that wasn't too long winded of an opinion. Can't wait to see your
summary of replies.

Take care,

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Mike Marcell The Arizona Republic
mike.marcell at pni.com Systems Database Administrator
Phone: (602) 444-4958 Fax: (602) 444-8010
Pager: (602) 409-6248 Cell: (602) 568-1893
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=


---

From: Debbie Tropiano [debbiet at arlut.utexas.edu]
Sent: Tuesday, March 19, 2002 11:10 AM
To: Lumpkin, Buddy
Subject: Re: Opinions Needed: How important is an understanding of C Programmi ng and Internals to a UNIX System Admin?

Buddy -

Well, I've been doing Unix sysadmin since 1983 (on more platforms
than I have fingers :-) and what little C I once knew is so rusty
that I cringe everytime I read it on my resume. Hasn't hampered
me in the least, but then again I don't do any "systems programming".
I'd much prefer to learn Java and/or python at this point, but
think that perl and borne or bash shell scripting is a must.

Debbie

--
| Debbie Tropiano | debbiet at arlut.utexas.edu |
| Space and Geophysics Laboratory | +1 512 835 3367 w |
| Applied Research Laboratories of UT Austin | +1 512 835 3100 fax |
| P.O. Box 8029, Austin, TX 78713-8029 | home email: debbie at icus.com |

---
From: Lee, Elizabeth [elizabeth.lee.contractor at fnmoc.navy.mil]
Sent: Tuesday, March 19, 2002 11:02 AM
To: 'Lumpkin, Buddy'
Subject: RE: Opinions Needed: How important is an understanding of C Progr ammi ng and Internals to a UNIX System Admin?

My 2 sense:

Understanding concepts is a good thing, but a sysadmin should NOT be
required to be a programmer, to correct others' sloppy programming or to
write his own drivers. Maintaining systems properly takes quite enough
time. If the programmers would just REALLY learn to program, instead of
learning just enough to get their certificate, then perhaps this wouldn't be
an issue. I took C concepts, basic C and advanced C from old AT&T classes
in mine and Unix's youth. It was good experience and taught me structure
and logical progression -- but it is NOT highlighted on my resume. As far
as training dollars, as I said, conceptual understanding lays a solid
groundwork for further knowledge -- but one should not expect a sysadmin to
return from a couple of courses and re-write a kernel or two. Good system
administration is a never-ending (and somewhat thankless) task --
intricate programming should not be a requirement.

---
From: Max Trummer [max at sd.lionbioscience.com]
Sent: Tuesday, March 19, 2002 10:27 AM
To: Lumpkin, Buddy
Subject: Re: Opinions Needed: How important is an understanding of C Programmi ng and Internals to a UNIX System Admin?

absolutely, it's important. maybe i'm biased, too, though-- i was a
software engineer for 10 years before unix "took over" my career.

and maybe i'm biased because i'm working for a software company. oh well.

knowledge of c gives great insight into how unix works, how it's laid out,
why things depend on each other. i can't imagine doing this without
knowing what make is all about. and how important modularity is.

learning about device drivers lets you know how things "plug in". it
taught me to think of different devices in a more general way. i've always
been thankful for learning about _iob.

is it relevant for companies to spend $$ for this kind of education? only
if they want happier employees who are also more productive!

my $.02,

/max

On Mon, 18 Mar 2002, Lumpkin, Buddy wrote:

---
From: Gene Huft [Gene.Huft at ci.seattle.wa.us]
Sent: Tuesday, March 19, 2002 10:18 AM
To: Buddy.Lumpkin at nordstrom.com
Subject: Re: Opinions Needed: How important is an understanding of CProgrammi ng and Internals to a UNIX System A

Greetings to a fellow web-foot Seattlite (I assume you're here, anyway!),

Firstly, it depends on the position the SA holds. In general, MOST SA's can get by without having
"extensive" C programming skills - and probably wouldn't need to know much about internals.

That said, an SA will almost certainly have deal directly "C", whether it's compiling an open source program, debugging one that won't compile, debugging the output from truss, or actually writing a small wrapper, etc. So indeed they need to have at LEAST rudimentary "C" programming knowledge.

As far as the internals go, I think if an SA has extensive C skills, and futher develops an understanding of internals for a specific platform - then they will obviously become more valuable to an organization and as such should be compensated accordingly.

Comments

Got something to say?

You must be logged in to post a comment.