Exceptional Rails Developer

Hi all,

I’m the CEO and founder of Academia.edu. We are looking to hire an
exceptional Rails developer to join our VC-funded startup. I have put
the job description below. You can also find out more at our overall
jobs page www.academia.edu and the page for the specific job
www.academia.edu/jobs/software_engineer.

Thanks for your time,

Richard P., Ph.D

http://www.linkedin.com/in/richardprice


Academia.edu helps academics answer the question ‘who’s researching
what?’. It applies to any research area: you can type in ‘thermophilic
organisms’, or one of 12,420 other research interests, and find out
who is working in that area worldwide, as well as what they are
working on – the latest papers, conferences, blog posts, status
updates etc.

Academia.edu launched 11 months ago, and is now one of the largest
online communities of researchers in the world; we now have 59,074
profiles, and are growing by about 5,000 profiles a month. We have
about 240,000 unique monthly visitors.

We are looking for an exceptional software engineer to join our team.
Academia.edu has a very engineer-driven culture. We describe below how
we think about our culture, and also the qualities of the person we
want to join us.

Professional qualities – you are:

  • An exceptional engineer: you are able to innovate at the cutting
    edge of web development to overcome the complex challenges that can
    arise.
  • Product and user experience focused: you are obsessed with creating
    a great product, and a great user experience. You feel anguish and
    pain when your site is slow, or when your user interface or feature is
    bad, and you feel pleasure when the site is fast and intuitive.
  • A problem solver: you derive huge intellectual satisfaction from
    solving problems. You are always focused on finding the best and
    quickest solution to the problem you are working on.
  • Technically ambitious: you are the kind of person who enjoys
    pushing the boundaries of the technologies you work with. For example,
    when thinking about the best UI for a feature, you would have no fear
    in considering creating a new JavaScript framework, if that is what is
    required to make it work right.
  • A finisher: you care about finishing products and deploying code.
    You understand that exceptional engineering, combined with exceptional
    creativity, are what makes a startup succeed.
  • Versatile: you are comfortable tweaking a CSS style or optimizing a
    SQL query all in the same morning
  • Able to prioritize features: you can look at a ton of possible
    features on a whiteboard, be able to add your own ideas to the mix,
    and then intelligently choose which one has the highest priority
  • Thoughtful about productivity: you think about what working
    environments and structures make you optimally productive. You try to
    ensure that the right environment and structures are in place for you.
  • Dedicated: you are willing to get up at 4am to restart the servers,
    and then build something the next day so the servers don’t go down
    again
  • Personally invested in what you work on: you care personally about
    the impact of your work on people around the world

Personal qualities – you are:

  • An independent thinker: you are able to learn from people around
    you when you need to, and also challenge them when they need to be
    challenged
  • Inquisitive: you naturally think of ways of improving things that
    you interact with
  • Creative: you are able to develop new ideas for the product and
    enhance the vision of the company
  • Excited about Academia.edu: you are excited about building a
    platform that could change the way that research is shared and
    discovered.
  • Keen to have an impact on the world around you: you are keen to be
    the one to build the platform behind Academia.edu. You don’t just want
    it to happen: you want the challenge of building it yourself.
    Positively improving the lives of millions of people via software is
    something that really excites you.
  • Visionary: you are the kind of person who thinks ‘What will the
    world look like in 10 years’ time, and how can we build that now?’

Experience

What is most important, by far, is that you are a quick learner who
can discover and pick up new techniques fast.

  • Web development: you have 2+ years of web development experience
  • Full stack: you have experience designing and implementing the full
    stack of a web application: sysadmin, database implementation and
    optimization, application development, front-end CSS, HTML and
    JavaScript.
  • Scaling: ideally you have some experience scaling an application to
    deal with an increasing user base. This is not essential though.

Here are some of the technologies that we work with:

  • Ruby on Rails
  • ActionScript 3
  • Jquery
  • Nginx
  • PostgreSQL
  • HAProxy
  • Mongrel
  • Memcached
  • Scribd/iPaper API
  • Facebook Connect

You should be comfortable finding the right tools for the job while
becoming great at whatever tool you’re using.

On offer
Apart from an incredibly fun engineering and product challenge, we
offer some nice benefits! You will get a market salary and stock
options. We want to hire someone exceptional, and we want to be
generous with stock options to make this happen. In addition, you will
also get health insurance, any ergonomic chair of your choosing, a
laptop with two huge monitors, and a smartphone with monthly bills
paid.

The job is based in San Francisco. We will help with visas and other
issues relating to re-location. If you are interested to learn more,
please email Richard P. at richard – at sign – academia.edu.

Richard P. [email protected] writes:

Hi all,

I’m the CEO and founder of Academia.edu. We are looking to hire an
exceptional Rails developer to join our VC-funded startup.
[…]

Task #1: acceptable response time for http://academia.edu

Richard P. wrote:

Hi all,

I’m the CEO and founder of Academia.edu. We are looking to hire an
exceptional Rails developer to join our VC-funded startup. I have put
the job description below. You can also find out more at our overall
jobs page www.academia.edu and the page for the specific job
www.academia.edu/jobs/software_engineer.

I would have loved to apply but I am only “amazing” and not
“exceptional”, hopefully someone else within this group will be
exceptional… I am almost exceptionally amazing but I still have to
level through fantastically amazing"

ilan

I’d prefer that! I am totally a Ninja! And now and again I work with
Rails
too!
But sadly, my black jumpsuit is against most company dress codes.

At least he didn’t say “Rockstar” or “Ninja”

On Wednesday 30 September 2009 01:45:27 pm Zundra D. wrote:

At least he didn’t say “Rockstar” or “Ninja”

Well, what’s he going to say, “Average”?

We are looking to hire a Mediocre Rails developer to join our
could-run-out-
of-funding-at-any-moment startup…

It just doesn’t have the same ring to it, I guess.

(Actually, I’d probably apply if I wasn’t currently in school. I was
just
feeling snarky today.)

On Wed, Sep 30, 2009 at 6:44 PM, David M. [email protected]
wrote:

On Wednesday 30 September 2009 01:45:27 pm Zundra D. wrote:

At least he didn’t say “Rockstar” or “Ninja”

Well, what’s he going to say, “Average”?

Why not? It’s unrealistic to think every company wants and can afford
the best. Many will have to settle for who they can find.

At a minimum they should include something like “and willing to pay
exceptional wages too!” when asking for an “exceptional” coder. I saw
no such mention.

And finally, to the OP, did you learn something? No? Well here’s the
take-away: We programmers all already think we are exceptional. You
won’t make less of us apply for a job by trying to single out people
using silly buzzwords. So stop it.

I could hug you right now

On Wednesday 30 September 2009 06:54:16 pm Greg D. wrote:

We programmers all already think we are exceptional.

Well, most of us.

You
won’t make less of us apply for a job by trying to single out people
using silly buzzwords. So stop it.

That, I’m not sure of.

Ok, silly buzzwords, yes. It seems every marketer ends up using
“exceptional”
or “ninja”, etc, so it’s watered down.

On the other hand, I’d much rather work for a place which values talent
(whether or not they can find it) than one which values rapid-but-buggy
prototypes using the cheapest contractors that money can buy. I’m
talking
about best practices versus “I tried stuff until it worked.”

I mean, it is nice to occasionally be the smartest person in the room –
or at
least the most knowledgeable. I’m back in school (since I don’t have a
job),
which means I’m starting at the very beginning – I’m talking about a
class
which will spend a week or two on binary and hexadecimal, along with
plenty of
other trivia, before writing a single line of code. It’s fun to finish a
weeklong assignment in an hour, or an hour-long assignment in ten
minutes.

But I don’t really want to spend my life correcting everyone else’s
mistakes.
As intimidating as it is, I’d much rather work in a place where
everyone’s
smarter than me, or at least interested in improving, than working in a
place
where a bunch of codemonkeys punch a clock – or worse, a startup filled
with
Paula Beans in Aeron chairs with dual-30" monitors.

(That’s not a sexist comment, I promise. Google Paula Bean.)

So that’s the reason “exceptional” at least got my attention. It shows
that
someone is at least pretending they care about learning and improving,
about
making their craft an art form, and about doing things The Right Way.

But I’ll give you a secret: If you want a buzzword that’ll really catch
my
attention, throw around words like metaprogramming and Domain-Specific
Languages. Talk about how your product will be fun to work on, and ask
for
people who specialize in interesting things like CouchDB or virtual
machine
architecture. Mention conferences you send your team to – both to
advertise
and to learn.

In other words: We’re programmers. Find out what actually excites us,
use
actual technical buzzwords (not marketing buzzwords), and use them
properly.
Be a cool place to work, and explain why you’re a cool place to work.

On Wed, Sep 30, 2009 at 7:32 PM, David M. [email protected]
wrote:

at
As intimidating as it is, I’d much rather work in a place where everyone’s
about
In other words: We’re programmers. Find out what actually excites us, use
actual technical buzzwords (not marketing buzzwords), and use them
properly.
Be a cool place to work, and explain why you’re a cool place to work.

I seccond Zundra’s sentiment.
If ever you find yourself in a supervisory position, looking to hire
developers – I will work for cost of living (plus insurance).
And I sympathize with your school experience, thats where I’m at now. I
must
have found 30 ways to generate fibonacci numbers.

On Wed, Sep 30, 2009 at 7:32 PM, David M. [email protected]
wrote:

On Wednesday 30 September 2009 06:54:16 pm Greg D. wrote:
I mean, it is nice to occasionally be the smartest person in the room – or at
least the most knowledgeable.

I hope to never find myself in that situation. Surrounding one’s self
with subordinates is inconducive to learning.

But I don’t really want to spend my life correcting everyone else’s mistakes.

I have observed time and again the easiest path to never be the
“maintenance” coder is to always be the fastest coder. Smart managers
always place the faster coders out in front doing the quick
prototyping of the new projects.

As intimidating as it is, I’d much rather work in a place where everyone’s
smarter than me

Always.

where a bunch of codemonkeys punch a clock

That’s the worst, to have to work with uninspired clock-punchers
sometimes.

This has been a lot of fun reading the replies. As a retired
programmer,
not looking for a job, I am glad that you guys are perceptive and only
have
egos that are so so large. The biggest problem with taking a new job
anywhere, not just VC-startups is that you might have to move to a
strange
place and that can make any programmer feel pretty insecure and
intimidated. What if the VC-startup fails? And are you working by
yourself? That is the way I felt when I kicked the security of
programming
employment at a large financial business and went into contract
programming. It doubled and later tripled my income but the stress
level
went up too. Working for a VC-startup has all of the risk of
contracting
with none of the benefits.

I did have a bad experience with a B2B VC-startup on a 6 months contract
as
a contract programmer, my second contract. In order to cut corners the
programmer manager refused to require the business partner and
programmers
to document the project. No business design documents. No systems
design
documents. No program designs documents. It was a nightmare. I was
one of
the few native born Americans in the systems shop. And to top it off
most
of the programmers were from that part of India where they clip the
ending
consonants off their words. I couldn’t understand 50% of what they
said.
I moved over to work with a group of Ukrainian and Russian emigrants.
I
could understand the Ukrainians but not a Russian woman. The poor woman
was
terrified of what was going on in the department and totally lost and
when
she got nervous she would start talking so fast I couldn’t understand
anything she said. I felt sorry for her. But I was glad when the
contract
ended.

The job sounded like a worthy one, one that is good for a first time job
to
explore and learn all about reality. And the project does sound like
something socially useful. A sort of common knowledge system that is
very
popular in artificial intelligence. See Conceptnet3, WordNet, or CYC.
Whether it would ever be profitable or allow the programmer who fills
the
slot to use it as a spring board to better pay or better job is anyone’s
guess. Academic environments, or ones close to academic environments,
can
be a good way to break into the professional programming business. My
first
job as a programmer when I got out of the Air Force (I was trained as a
programmer in the Air Force, my degree is in chemistry), was a
programming
position with the University of Florida.

But if you already have a job, the only thing good about a job offer
from a
VC-startup is being able to use it as leverage to get a pay raise from
your
current boss and, more importantly, transferred from nice to have jobs
that
are expendable to part of the essential development team.

As for using silly buzzwords, what the hell. At least the CEO wants the
best. That is always a good thing. But he might be more successful if
he
tries to “borrow” one of the programmers from a university that is
looking
to cut the budget of its programming staff. And they all are looking to
do
that. Of hire a undergraduate programming major part time.

Hope this helps both the CEO and, in good humor, the rest of you Yahoos.

No animals were harmed in writing this pithy post.

No Sam

On Fri, Sep 18, 2009 at 7:10 PM, Richard P.
[email protected] wrote:

Hi all,

I’m the CEO and founder of Academia.edu. We are looking to hire an
exceptional Rails developer

Seems to me that a developer who wrote Rails applications in Algol-68
instead of Ruby would really be exceptional!

exceptional |ikˈsep sh ənəl|
adjective
unusual; not typical : crimes of exceptional callousness and cruelty


Rick DeNatale

Blog: http://talklikeaduck.denhaven2.com/
Twitter: http://twitter.com/RickDeNatale
WWR: http://www.workingwithrails.com/person/9021-rick-denatale
LinkedIn: http://www.linkedin.com/in/rickdenatale

On 1 Oct 2009, at 01:32, David M. wrote:

On the other hand, I’d much rather work for a place which values
talent
(whether or not they can find it) than one which values rapid-but-
buggy
prototypes using the cheapest contractors that money can buy. I’m
talking
about best practices versus “I tried stuff until it worked.”

I’m more likely to hire based on “I tried stuff until it worked” than
“I’ve been taught best practices”. Best practices get stale pretty
fast whereas curiosity and persistence are the gifts that keep on
giving :slight_smile:

Ellie

Eleanor McHugh
Games With Brains
http://slides.games-with-brains.net

raise ArgumentError unless @reality.responds_to? :reason

On Thursday 01 October 2009 08:20:26 am Eleanor McHugh wrote:

On 1 Oct 2009, at 01:32, David M. wrote:
[snip]

I’m
talking
about best practices versus “I tried stuff until it worked.”

I’m more likely to hire based on “I tried stuff until it worked” than
“I’ve been taught best practices”. Best practices get stale pretty
fast whereas curiosity and persistence are the gifts that keep on
giving :slight_smile:

I’m mostly self-taught, so I understand where you’re coming from.

I suppose I don’t mean “established best practices”, so much as “I want
to do
it the right way, not necessarily the easiest way.”

So, as a trivial example, when I see people using for instead of each in
Ruby,
I cringe a little – but that’s more a matter of taste, custom, even
fad.

But when I see people read an entire table from the database several
times
during the course of generating a single report that needed a total of
maybe
ten records…

Sure, they “tried stuff until it worked”, but that’s not curiosity,
that’s just
plain persistence. And while I like to think I’m a fast learner, I’d
still
want to have the basic concept of “don’t slurp the ENTIRE DATABASE” down
before I applied for the job.

Probably the best example is the one that I’m not going to be able to be
modest with… My local community college is teaching me BAL – that’s
right,
Mainframe Assembler – as a first language.

Many people in this class will simply punch in the example code the
professor
gave us, and change things until it does what they want. These are the
same
people who will come to me or the professor when their program doesn’t
work,
without bothering to actually read the error message – whereas I
actually
found the system log and started to debug my program.

Some of these people are the people who will grow up to use Visual
Basic, and
enable “on error resume next”.

That’s what I’m talking about. Not knowing is fine, if you’re curious
about
learning. But when I jump into others’ code, it’s sometimes painfully
obvious
that they’re not particularly curious – all they care about is closing
the
ticket, collecting a paycheck, and moving on.

On Wednesday 30 September 2009 08:21:31 pm Greg D. wrote:

On Wed, Sep 30, 2009 at 7:32 PM, David M. [email protected] wrote:

On Wednesday 30 September 2009 06:54:16 pm Greg D. wrote:
I mean, it is nice to occasionally be the smartest person in the room –
or at least the most knowledgeable.

I hope to never find myself in that situation. Surrounding one’s self
with subordinates is inconducive to learning.

Not subordinates – in this case, it’s a classroom.

And it means I have an opportunity to not only be lazy, and breeze
through the
assignments – an entire two hours of class time today was allocated
towards
working on assignments I’ve had finished for days – but I also have an
opportunity to teach.

I really do enjoy teaching, and it’s also a good way to really know
something.

I have observed time and again the easiest path to never be the
“maintenance” coder is to always be the fastest coder.

Except, I’m not always particularly fast.
I think of myself as slower, but more correct.
Even so…

Smart managers
always place the faster coders out in front doing the quick
prototyping of the new projects.

Except that if they also note that I’m intelligent, and that I write
clean,
readable, reliable code, that means I might also the best person to dig
into
whatever nightmarish mess needs to be cleaned up. Certainly, I’m better
qualified than whoever created the mess in the first place.

I suppose it comes down to what kind of a team you’ve actually got.

But I think we’re in agreement – I’d much rather work in a place where
everyone’s smarter than me, so there are fewer and less-horrifying
messes to
clean up.

On Wednesday 30 September 2009 11:30:25 pm Mason K. wrote:

As a retired programmer,
not looking for a job,

I bow to your experience (no sarcasm intended). Still…

The biggest problem with taking a new job
anywhere, not just VC-startups is that you might have to move to a strange
place and that can make any programmer feel pretty insecure and
intimidated.

To me, that’s half the fun.

If I’d been able to get a job in time, before I made this snap decision
to go
back to school (seriously, I’d been thinking about it, but finally
registered
at just slightly after the start of the semester)…

Iowa is wet and rainy right now, and I have a half hour commute to
class, so
no, I don’t mind moving at all.

But the rest of these are valid concerns:

What if the VC-startup fails? And are you working by
yourself?

I wasn’t working by myself at all – it was an amazing team that I was
proud
to be a part of. But the startup did fail. The funding disappeared just
a few
months after the rest of the economy imploded, and by now, the website
has
fallen off the face of the planet.

Working for a VC-startup has all of the risk of contracting
with none of the benefits.

Except it does have a few benefits: The biggest reasons I have trouble
contracting, especially on my own… I like independence, in theory, but
I do
work better with a team.

This is especially true because while I like to think I’m decent at code
and
prose, I’m horrible at graphic design and marketing. While I think I
interview
well, I’m not good at getting myself interviews.

That’s bad enough trying to get the first job. Independent contracting
would
mean doing that on an ongoing basis.

And just for fun…

On Wed, Sep 30, 2009 at 9:51 PM, Josh C. [email protected] wrote:

I seccond Zundra’s sentiment.
If ever you find yourself in a supervisory position, looking to hire
developers – I will work for cost of living (plus insurance).

No, don’t listen to me. Listen to this guy I’m replying to.

I doubt I’ll find myself in a supervisory position, either – that’s a
whole
other skill set I don’t have.

But I do have an idea for a web browser, so if people are that eager to
work
with me, I’ll throw something up on Github and get started… (Why
another
browser? Because neither Chromium nor uzbl are what I want.)

And I sympathize with your school experience, thats where I’m at now. I
must
have found 30 ways to generate fibonacci numbers.

I’m actually enjoying it immensely, though I’m looking forward to more
challenging classes. I seem to remember hearing that eventually there’ll
be OS
design and compiler design…

So yes, stay in school.

On 1 Oct 2009, at 19:15, David M. wrote:

I suppose I don’t mean “established best practices”, so much as “I
want to do
it the right way, not necessarily the easiest way.”

modest with… My local community college is teaching me BAL –
actually
found the system log and started to debug my program.

The best teacher of “the right way” is experience, and experience
mostly comes from doing things the wrong way and then having to clear
up the mess at some appreciable cost to yourself. I suspect most of
the problems big companies have (and not just with coders) is that
when a person works on one small problem and then passes their output
along to a coworker in an equally myopic position, the producers of
mess are rarely if ever penalised. Indeed I’d go further and suggest
that some of them even develop the same sabotaging tendency as that
prevalent in the Soviet industrial environment.

For every Dilbert there are a dozen Wallys…

Some of these people are the people who will grow up to use Visual
Basic, and
enable “on error resume next”.

I guess you probably don’t approve of rescue nil in ruby either lol

That’s what I’m talking about. Not knowing is fine, if you’re
curious about
learning. But when I jump into others’ code, it’s sometimes
painfully obvious
that they’re not particularly curious – all they care about is
closing the
ticket, collecting a paycheck, and moving on.

As an obsessive problem solver myself this baffles me, but it seems to
be the normal human condition. The moral of the story being, there’s
no place for normal human beings in software development :wink:

Ellie

Eleanor McHugh
Games With Brains
http://slides.games-with-brains.net

raise ArgumentError unless @reality.responds_to? :reason

As an obsessive problem solver myself this baffles me, but it seems to
be the normal human condition. The moral of the story being, there’s
no place for normal human beings in software development :wink:

I’ve come to accept that “How does this work?” is not the first question
that most people ask. Usually, the first thing people say is “I want to
do this”. The difference in mindset is astounding :slight_smile:

On Thu, Oct 1, 2009 at 12:59 PM, Rick DeNatale [email protected]
wrote:

exceptional |ikˈsep sh ənəl|
adjective
unusual; not typical : crimes of exceptional callousness and cruelty

I just thought they wanted lots of begin…rescue blocks

Paul S.
http://www.nomadicfun.co.uk

[email protected]