Google Answers Logo
View Question
 
Q: Career advice: Unix certification, Programming, Perl, Java, other technologies? ( Answered 4 out of 5 stars,   0 Comments )
Question  
Subject: Career advice: Unix certification, Programming, Perl, Java, other technologies?
Category: Computers
Asked by: fred1234-ga
List Price: $10.00
Posted: 19 Nov 2002 19:58 PST
Expires: 19 Dec 2002 19:58 PST
Question ID: 111036
Hi,

I am looking for some career advice as it pertains to Unix,
Programming, and what makes the most sense for me right now.  I feel I
have some of these answers and think what I'm looking for is an
objective perspective from someone that's not sitting in the middle of
it as I am.  

There's lots of background here that may not seem relevant at first. 
I
included so as to give a full picture.

First some background. 

I work at a software company doing Technical Support for Server based
products. I've been here about 6 years. The products I support work
with various app servers that reside on just about any platform.  Some
examples might help:  WebSphere on OS/390/USS, NT, Win2000, Solaris,
Linux; Tomcat on any Unix or Windows Server platform; WebLogic;
Fujitsu on Windows.  Since these server based products download a Java
client I also support the Windows desktop operating systems and
browsers. I also support some other proprietary gateway server
software that runs on Windows only.  Our software isn't perfect, but
once we get it installed there isn't that much involved in working
with it.  Frequently in this job I need to know things about
surrounding technologies.  For instance, proxy servers, fire-walls,
routing, etc. Once in a while I read TCP/IP traces to aid in
troubleshooting an issue.  In the process of doing this job I've found
it beneficial to learn LDAP and SSL although it wasn't required and I
could probably scrape by without it.

Since about 1994 I've wanted to become a Unix Sys Admin.  When looking
at job requirements these days it seems like most employers would like
someone with C, Java, Perl, Shell scripting, maybe C++, or some
combination of those languages and frequently ask for Database
skills.

I went to a head hunter a couple of years ago looking for a Unix type
job and the advice I got then was learn C++ and Perl.  Well, I ended
up taking a basic C class, self-studied Java for 3-4 months, studied
LDAP and SSL, played around with a couple of Linux distributions, 
learned some Solaris, and studied shell scripting.  

The company I work for has probably laid off at least half of the
work force since early 2000.  There's been a layoff about every six
months.  I've managed to remain employed and the company has managed
to remain solvent.  While not secure in my job, I think I could stand
one or two more rounds of layoffs if they were to occur.  But really I
think we've hit bottom unless something else really drastic happens.
So I'm looking to be employed there until I wish to leave or probably
a couple of years whichever comes first.

I'm now working up to the question.  I don't know which direction to
take?
Solaris Certification? Redhat Certification? A generic Linux
Certification?
Java? Perl? C? Other surrounding technologies that I've mentioned
above?  I
still want to be a Unix Admin, but I don't foresee leaving my job any
time
soon. There are not any Unix Admin jobs where I work, and right now I
don't
feel that I qualify for any outside jobs.  The closest I can come is
probably
where I'm at, supporting our products that run on Unix (and Windows),
but I
really don't get that deep into the OS.  I need to configure the SDK
environment, set paths, maybe install a package or two, but nothing
really
deep.  I've done more admin work at home with items like kernel
compilation,
Samba, NFS, and backups.  But still, this is all pretty basic stuff.

One of the reasons I stay at this company is the current job market,
but the other is that I have a respectable commute and I work 6AM -
2:30PM which allows me to be home when my kids get home from school.
This really is the deciding factor for me, being able to work this
shift.

So the somewhat obvious answer is to learn Java.  In theory at least I
could use it in my current job, but I have no guarantee of that.  I
would get slight recognition for learning another technology but the
recognition isn't the major reason why I'd learn it.  It wouldn't hurt
on the resume either.  My hesitation for learning Java is that 
a)I don't think I could ever get a job as a programmer.  I don't have
a college degree
which I tend to berate myself for.  I know it's not -that- important
but many jobs list it as a requirement.  

b) I don't live to be a programmer.

c) I'm reluctant to invest the time in something I don't know that
I'll use on
this job, but more importantly on any other job and what I don't use I
lose.

I do really like learning and figuring out how things work.  I love
reading a
textbook trying to comprehend the material and then going through the
exercises.  Where I tend to have problems is applying what I've
learned (at
least in programming) to real world problems.  I guess because I
haven't
learned to think like a programmer and partly because I don't see
problems
that could be solved by programming.  When I do it seems like it takes
me
forever to figure it out.  So much so that I get overwhelmed and
discouraged.

I've also thought about learning Perl, but I have about one personal
project
that I know I could use and then I'm afraid the knowledge would lay
dormant
and eventually forgotten.
Probably less important in this whole scenario is that I have only
about one
to two hours per day to study and that would have to be self-study. 
Which I'm
fine with.  Just adding to give a complete picture.

I was thinking that if I did get laid off I could always study and
pickup a *nix certification at that time.  I'll still run Linux at
home and support software running on Unix platforms at work. 

FWIW I have an MCSE in NT 3.51 and 4.0, but want to get away from the
Microsoft technologies.

I suppose the ultimate would be to find a job that would take me with
my limited experience, with at least this reasonable of a commute,
that
let's me work this shift and has the same benefits.   That seems like
I'm asking for the moon and is too good to be true.  Plus I keep
thinking the
amount of energy and effort looking for a job could be used studying. 
I can
always look for a job when I have time.
So, in summation.  My choices are to learn Java, or pick up some *nix
certifications, or learn Perl, or study the surrounding technologies
like
proxy servers and such.

What would you recommend?

Thanks,
Answer  
Subject: Re: Career advice: Unix certification, Programming, Perl, Java, other technologies?
Answered By: webadept-ga on 20 Nov 2002 11:09 PST
Rated:4 out of 5 stars
 
Hi, 

Generally I stay away from questions which "ask my opinion" as most of
the researchers do, which is probably why your question has sat as
long as it has. But I've decided to make an exception in this case.

First off, if you are looking at a sysadmin job for the future, in
what ever OS, (Unix, Linux, and even Microsoft,).. Perl is never going
to be a waste of time. I started using Perl about 5 years ago, and I
couldn't tell you how I got by without it before then. Perl was
created and designed to be a language for system admins. That was its
original purpose and it is probably the best tool out there for anyone
having to deal with server related issues, and users.

Common tasks I use Perl for everyday, simply because it's much easier
to use than the normal OS tools (especially if I am in a hurry or I do
the task several times a week and would just rather the cron took care
of it), are: user permission changes, intrusion detection, file system
monitoring, file permission changes, setting up new users, removing
users, log filtering, etc. All of this is much easier with a working
knowledge of Perl.

Yes there are system tools for all of that, but very few of them will
page/cellphone you when three processes have started on a memory
hogging rampage and let you know what is going on. Perl can do that,
and it doesn't take a fortune or several days to get the answer for
that problem.

Here's a few quick things that make a sysadmin's life a lot easier. 

Find all the core files and delete them. This one asks if  you want to
delete them, but you don't have to have that option in there, you
could log the deletions, or move the core files to a directory or
whatever. This example asks.

#!/usr/bin/perl -s
#
# -s is also considered 'retro', many programmers preferring to load
# a separate module (from the Getopt:: family) for switch parsing.

use Cwd; # module for finding the current working directory

# This subroutine takes the name of a directory and recursively scans
# down the filesystem from that point looking for files named "core"

sub ScanDirectory{
        my ($workdir) = shift;
            my ($startdir) = &cwd; # keep track of where we began

            chdir($workdir) or die "Unable to enter dir
$workdir:$!\n";
                opendir(DIR, ".") or die "Unable to open
$workdir:$!\n";
                my @names = readdir(DIR) or die "Unable to read
$workdir:$!\n";
                closedir(DIR);

    foreach my $name (@names){
        next if ($name eq ".");
        next if ($name eq "..");
        if (-d $name){ # is this a directory?
        &ScanDirectory($name);
        next;
        }
                                                                      
                                     if
 # if -r specified on command line, actually delete the file
       if (defined $r){
         unlink($name) or die "Unable to delete $name:$!\n";
       }
     else {
            print "found one in $workdir\n";
          }
  }
}
 chdir($startdir) or die "Unable to change to dir $startdir:$!\n";
}
&ScanDirectory(".");

                                   

Really simple stuff. 

More simple. let's check every once in a while to see if anyone has
altered the passwd file

-------
#*
#* print the MD5 fingerprint for the /etc/passwd file
#*

use Digest::MD5 qw(md5);

$md5 = new Digest::MD5;

open(PASSWD,"/etc/passwd") or die "Unable to open passwd:$!\n";

# these two lines called also be rolled into one:
#   print Digest::MD5->new->addfile(PASSWD)->hexdigest,"\n";
$md5->addfile(PASSWD);
print $md5->hexdigest."\n";

close(PASSWD);

#
#

That's pretty simple, of course you can setup a number of other files
in the same program to check as well. If someone changes a single
character, even a white space area in that file, you'll know about it.

There is a really nice place to hang out called PerlMonks. 

http://www.perlmonks.com

In there you will find a section called. Cool uses for Perl. and there
are tons of small fast scripts in there that will save hours of time
as a sysadmin, as well as other things. Really, there is no better
tool you could have as a sysadmin than a good working knowledge of
Perl.

There is a draw back. The draw back is, it gets fun after a while and
you start spending lots of time working out things you can to do keep
a system running and you go through a period of time where you are
spending more time writing a script for something than what it takes
to just do the action. It happens. :-)

I recommend the O'Reilly books. Learning Perl, Perl (also known as the
Camel book), and Perl for System Administration (where those two
examples I showed you came from). Those three books will save you
hundreds of hours a year in head scratching and boring mundane daily
tasks.

As far as the Unix certifications go, if you have the means, I would
go with a Solaris cert before I chose a Linux cert of any type. My
reasoning is not based on the grounds of Solaris vrs Linux. There is a
growing need for Linux admins out there. But just about anything you
learn on the Solaris you can use in Linux, but the reverse is not
really true. Linux has tools and abilities that just aren't available
on Solaris. So being certified and "knowing Solaris" opens two doors
for you rather than only one. Combined with a working knowledge of
Perl, there's not many systems out there you couldn't work on, and
keep running for just about any level of usage.

That's about it for my answer at this point. If you have need of
clarification or some specific area you need more information on I
would be happy to follow up. There's a ton of hyperlinks I could put
in here regarding all of this but I got the feeling from your question
that you've been out there reading and have got way too many of those
already. So if there's something you specifically need found, then let
me know, and if it's with in the scope of this question I would be
happy to clarify it for you.

One other thing, SysAdmins are normally called upon to do various
other tasks, other than simply keeping the servers running. I've been
asked to do things like "get a list of all current zipcodes" for
instance or "upcase in proper format the names in our database" . Perl
to the rescue there. Check out some of the recent questions I've
answered on here or search for webadept-ga and Perl, and you'll get a
clearer scope of the non-limitations Perl allows you to have. Requests
like those become non-hassle things really fast.

Oh, learn Vi, or Vim if you haven't already. Nothing beats that text
editor, and it's a normal install on just about every system. (never
mind all the emacs users out there that will probably comment on that
little tidbit :-)

Thanks, 

webadept-ga

Request for Answer Clarification by fred1234-ga on 20 Nov 2002 17:19 PST
Thanks for making an exception webadept.  Your comment about a Solaris
admin being able to do Linux but not the other way around was a real
gem and worth the price.

I realize this was an unusual question because there isn't one right
answer but  opinions based on life experience of the answerer. 
Luckily you have real Sys Admin experience which I'm glad you shared.

I consider this question closed for all practical purposes and I'm
satisfied so feel free to ignore this next follow-up if you wish.

You didn't say much about learning Java.  Was that because I stated my
desire to be a Sys Admin throughout?  Or was there some other reason?

You mentioned Database.  How important is it to know Databases to get
a Sys Admin job.

Again, thanks for advice, it is sound and logical.

Clarification of Answer by webadept-ga on 20 Nov 2002 17:44 PST
Hi again, 

I didn't mention Java because it's not a tool for sys admin daily
needs. It's a programming language for making programs. You had said
you weren't a programmer and if you don't "really like programming"
and I mean really really like it, then Java isn't for you. I know
enough to put a simple program together, but it's not my favorite
thing to do, much prefer C++ over Java. But again, it's not a tool,
it's for development.

Database is always good. I would get linux box as soon as you can and
work with MySQL. It's free and will help you understand the other
engines if you ever come in contact with them. It will also help with
learning Perl, SQL and system administration all at the same time.
Very good tool there.

Glad I could help and thanks for the question. 

webadept-ga

Clarification of Answer by webadept-ga on 20 Nov 2002 17:47 PST
Oh.. one other thing. Solaris use to give out single user copies of
their OS if you paid for the shipping of the disk. You might look into
that, and start with Solaris up front. Just a thought.
fred1234-ga rated this answer:4 out of 5 stars

Comments  
There are no comments at this time.

Important Disclaimer: Answers and comments provided on Google Answers are general information, and are not intended to substitute for informed professional medical, psychiatric, psychological, tax, legal, investment, accounting, or other professional advice. Google does not endorse, and expressly disclaims liability for any product, manufacturer, distributor, service or service provider mentioned or any opinion expressed in answers or comments. Please read carefully the Google Answers Terms of Service.

If you feel that you have found inappropriate content, please let us know by emailing us at answers-support@google.com with the question ID listed above. Thank you.
Search Google Answers for
Google Answers  


Google Home - Answers FAQ - Terms of Service - Privacy Policy