Re: [LISA] Ruby



It's funny how these things work out ... I just wrote a blog post last
night,
only to find Brandon's question staring at me asking the same question I
had just written about.

Three Languages For Every Sysadmin

If you're a sysadmin that doesn't know how to read and write at
_least_ three programming languages your career and ability to
troubleshoot is resting on a series of precarious interfaces, black
boxes and incomplete knowledge that may topple at any moment.

"But I'm not a programmer!" protested the sysadmin.

Good, because I am not asking you to become a programmer. If you were
a programmer you might make a career on just one or two languages
(like Java or PHP), and you could argue about abstract factory
implementation over lunch with your programmer friends. I am not
asking you to become a programmer I am asking you to be a better
sysadmin.

"But programming has nothing to do with my current job, I don't get
paid to know how to _program_." lamented the downtrodden sysadmin.

And how much of the technology that you do get paid to work with
existed 10 years ago? This as an investment in yourself that
will pay off now and [10 years from now][norvig].

For those of you not completely offended by this notion, I suggest you
learn the following three languages;

**The Automation Language**: Building small scripts to automate repetitive
and boring tasks will make you many times more productive and happy in
your work; learn Bash or Powershell.

**The Benefit**: Achieve consistent and repeatable results through
  automation, focus your time and attention on solving harder
  problems.

**The Production Language**: Your workhorse language, something you
use when the problem is more than just automation and may need to be
passed on to other people; learn Python or Ruby or Perl.

**The Benefit**: Create your own simple solutions to complex problems,

**The System Language**: Languages used to build operating systems or
major utilities, knowledge of which will assist you in debugging and
fixing hard OS problems; C, C#, or Objective C.

**The Benefit**: An increase in understanding of the code in both the
  kernel space and user space. You might even be able to read a stack
  trace of a faulting program and create a patch.

Do you need to be an expert in all three? No. But you should be
literate and competent, able to read and extend code in your three
languages. If you cannot create, extend and understand your own tools,
your ability to work will forever be at the mercy of those who can.

And besides, it's fun.

[norvig]: http://norvig.com/21-days.html

On Mon, Jun 4, 2012 at 5:59 PM, Tom Limoncelli <tal@xxxxxxxx> wrote:

> I think every Unix/Linux sysadmin should know shell (sh or bash) plus
> one of Perl, Ruby, Python.  It doesn't matter which.*
>
> It is really important to learn bash because it is so fundamental to
> so many parts of your job.  Whether it is debugging an /etc/init.d
> script or writing a little wrapper.  Every Unix/linux sysadmin should
> know: how to do a for loop, while loop, if with [[ or [, and $1, $2,
> $3... $* and $@.  With those basic things you can go very far.  I'm
> surprised at how many people I meet with a lot of sysadmin years under
> their belt that can't do a loop in bash; when they learn how they kick
> themselves for not learning earlier.
>
> The choice of perl/python/ruby is usually driven by what is already in
> use at your shop.  ruby/python became popular more recently than Perl,
> so a lot of shops are Perl-focused.  If you use Puppet, knowing Ruby
> will help you extend it.   I work at Google which is big on Python so
> I learned after coming here; it was a shock to the system after being
> a Perl person since 1991 (someone recently told me Perl didn't exist
> in 1991... I introduced him to a little something called Wikipedia).
>
> >From a career-management point of view, I think it is important to be
> really really really good at one of them and know a little of the
> others; even if that means just reading the first few chapters of a
> book on the topic.  Being really really really good at one of them
> means that you have a deep understanding of how to use it and how it
> works "under the hood" so you can make better decisions when you
> design larger programs.  The reason I suggest this as a
> career-management issue is that if you want to be hired by a shop that
> uses a different language, being "the expert that is willing to learn
> something else" is much more important than being the person that
> "doesn't know anything but has great potential" or "knows a little of
> this and that but never had the patience to learn one thing well".
>
> Tom
> _______________________________________________
> lisa-members mailing list
> lisa-members@xxxxxxxxxxxxxxxx
> http://lists.usenix.org/mailman/listinfo/lisa-members
>



-- 
Joseph A Kern
joseph.a.kern@xxxxxxxxx



This archive was generated by a fusion of Pipermail (Mailman edition) and MHonArc.