Perl Guru, San Francisco (onsite), United States, California, San Francisco

[email protected] (Perl Jobs)
Newsgroups perl.jobs
Message-ID <[email protected]>
Online URL for this job: http://jobs.perl.org/job/4615

To subscribe to this list, send mail to [email protected].
To unsubscribe, send mail to [email protected].

Posted: September  5, 2006

Job title: Perl Guru, San Francisco

Company name: Symantec

Internal ID: 059113

Location: United States, California, San Francisco

Pay rate: NA

Travel: 0%

Terms of employment: Salaried employee

Length of employment: NA

Hours: Full time

Onsite: yes

Description:
# Work.pm - Your new job.
# -------
# See POD for details.

package Work;
use strict;
use warnings;

# CPAN requirements:
use Bloom::Filter;
use Algorithm::Diff;
use Graph::AdjacencyMatrix;
use Acme::Bleach;

# Custom requirements:

use lib qw(/opt/skunkworks/perl/lib);
use Secret::Voodoo::Chicken;
use Secret::Voodoo::Salt;
# Ima:
use base qw(Class::Accessor);
# Properties:
Work->mk_accessors(qw(position));
Work->mk_ro_accessors(qw(company industry location pay));
# Standard constructor.
sub new {
    my ( $class, $args_ref ) = @_;
    my $self = {};
    bless $self, $class;
    $self->_init($args_ref) || die "Could not create new Work object!";
    return $self;
}
# Initialize properties etc.
sub _init {
    my ( $self, $args_ref ) = @_;
    # Set argument properties.
    foreach my $arg ( keys %$args_ref ) {
	$self->{$arg} = $args_ref->{$arg};
    }
    # Set read-only properties.
    $self->{company}  = 'Major Software Company';
    $self->{industry} = 'Information Security';
    $self->{location} = 'Downtown San Francisco';
    $self->{pay}      = 'Market Rate';
# Set up ENV in case it's not clear.
    $ENV{DRESS}  = 'casual';
    $ENV{OFFICE} = '^3';
    delete $ENV{CAFETERIA};    # cf. $self->location
    # Hash for hires (by position).
    $self->{_hires} = {};
    return 1;
}

 

# Apply for work.  Returns true for hire, undef for no hire.

sub apply {
    my $self = shift;
    my $c    = shift;
    die "Ghosts are not technically employable" unless $c;
    # Must apply for something.
    unless ( defined $self->position ) {
	warn "Sure, like we need an undef";
	return;
    }
    # Already hired?
    if ( $self->{_hires}{$c} ) {
	warn("No double-dipping");
	return;
    }
    if ( $self->_evaluate($c) ) {
	# Hired!
	$self->{_hires}{$c} = $self->position;
	return 1;
    }
    else {
	return;    # Sorry pal.
    }

}

 

# Evaluate a candidate and return a hire/nohire recommendation (boolean).
sub _evaluate {
    my $self = shift;
    my $c    = shift || die "The sound of one hand clapping";
    no warnings 'uninitialized';
    # Certain things are required.  Scale is 1-10 where applicable.
    return
      unless (
	$c->isa('Guru')      &&    # gotta be that good.
	$c->intelligence > 9 &&    # out of 10.
	$c->humor > 5	     &&    # ...everyone is above average.
	$c->creativity => 8	   # some hard problems to solve here.
      );
    # Experience is important but not the only thing in life.
    if ( $c->intelligence + $c->creativity + $c->experience < 15 ) {
	return;
    }
    # Looks like we have a winner!
    return 1;
}

 

# Perform work.
sub perform {
    my ( $self, $args_ref ) = @_;
    my $emp = $args_ref->{employee} || die "Ghost in the machine";
    die "Intruder" unless $self->{_hires}{$emp};
    # Do something interesting.
    my $chicken = Secret::Voodoo::Chicken->new();
    my $salt	= Secret::Voodoo::Salt->new();
    # TODO: Show us something cool.
    die "Candidate must complete the 'perform' method";
}
1;

 

=head1 NAME
Work - your new job.
=head1 SYNOPSIS
    my $w = Work->new( { position => 'Principal Software Engineer' } );
    my $me = Guru->new( \%my_attributes );    # be honest!
    if ( $w->apply($me) ) {
	$w->perform( \%intriguing_stuff );
    }
    else {
	die "No hire";
    }
=head1 DESCRIPTION
Want to work with a small team of highly-motivated Perl hackers?
Want the benefits of a large company without giving up that can-do startup
spirit?
Want to write code that makes the world better while also kicking the
competition's butt?

This may be a job for you.
=head2 WE ARE
We are part of a market-leading business unit of a Fortune 1000 software
company with operations in 40 countries.  We work on a mission-critical
system
that quietly and effectively feeds oxygen to the rocket ship of our product
line.

We're smart and flexible and we get things done.
We fight Spam.
=head2 YOU ARE
You are a rock-star hacker with a passion for great code and the track
record to prove it.
You love Perl but not to the exclusion of other things.  
You also love being on a winning team.
You're serious but not boring, smart but not pretentious, funny but not
rude.  You have a life.
You can write the C<Guru> module in your sleep, and when you wake up you
can't help telling us (politely, of course) what's wrong with this revision
of the C<Work> module.
And having read this far, you're already thinking about what C<perform>
should do.
=head1 REQUIREMENTS
=over
=item Perl expertise.
OOPerl, C<Class::*>, C<Apache::*>, C<Legacy::Complex::Voodoo>
=item Testing experience.
C<Test::More> or more.
=item Solid database knowledge.
C<DBI> and C<Class::DBI> and a strong understanding of relational database
concepts and their application in the real world.
=item Senior/Lead engineering experience.
Something on the order of 10 years experience, all of it interesting.
=item Web application development experience.
Model-View-Controller frameworks, data providers, load balancing, etc.
=item System programming experience.
This position will involve B<Heavy Lifting> on the server.

Candidates I<must> be fully able to geek out on difficult, esoteric
system-level weirdness in Perl and outside it.
=item Code sample.
Please provide an original work that is not subject to any restrictions on
its disclosure.
=back
=head1 APPLICATION

To apply for this position, send the usual self-presentation package to:
[email protected]


Contact information at:
http://jobs.perl.org/job/4615#contact
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.