Exceptional Rails Developer

R

Richard Price

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 Price, Ph.D
http://oxford.academia.edu/RichardPrice
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 Price at richard -- at sign -- academia.edu.
 
I

Ilan Berci

Richard said:
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
 
Z

Zundra Daniel

[Note: parts of this message were removed to make it a legal post.]

At least he didn't say "Rockstar" or "Ninja"
 
W

Walton Hoops

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.
-----Original Message-----
From: Zundra Daniel [mailto:[email protected]]
Sent: Wednesday, September 30, 2009 12:45 PM
To: ruby-talk ML
Subject: Re: Exceptional Rails Developer

At least he didn't say "Rockstar" or "Ninja"


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
 
D

David Masover

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.)
 
G

Greg Donald

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.
 
D

David Masover

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.
 
Z

Zundra Daniel

[Note: parts of this message were removed to make it a legal post.]

I could hug you right now
 
G

Greg Donald

On Wednesday 30 September 2009 06:54:16 pm Greg Donald 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.
 
J

Josh Cheek

[Note: parts of this message were removed to make it a legal post.]

Well, most of us.


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.
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.
 
M

Mason Kelsey

[Note: parts of this message were removed to make it a legal post.]

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
 
R

Rick DeNatale

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=CB=88sep sh =C9=99n=C9=99l|
adjective
unusual; not typical : crimes of exceptional callousness and cruelty

--=20
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
 
P

Paul Smith

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

exceptional |ik=CB=88sep sh =C9=99n=C9=99l|
adjective
unusual; not typical : crimes of exceptional callousness and cruelty

I just thought they wanted lots of begin..rescue blocks
--=20
Paul Smith
http://www.nomadicfun.co.uk

(e-mail address removed)
 
E

Eleanor McHugh

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 :)


Ellie

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

David Masover

On 1 Oct 2009, at 01:32, David Masover 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 :)

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.
 
D

David Masover

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.
 
D

David Masover

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...

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.)

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.
 
E

Eleanor McHugh

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.

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 ;)


Ellie

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

Aldric Giacomoni

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 ;)
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 :)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,767
Messages
2,569,571
Members
45,045
Latest member
DRCM

Latest Threads

Top