
What a Developer Job Posting Should Look Like - bradly
http://pragprog.com/help-wanted/software-developer
======
fleitz
A developer job? It sounds like support/sysadmin.

A pay pal transaction not completing due to a network outage is an ops issue
not a dev issue.

Also, what's the pay? When you talk to actual developers the biggest issue is
the problems finding out what the job actually pays. I hate talking to
recruiters that won't tell me what it pays. When you don't tell me what it
pays that clicking sound you hear is me clicking the back button. It's a job,
I go there to get paid, not take shitty pay to hear platitudes about how we're
doing what we love.

If I want to take a chunk of my salary to have people go blow smoke up my ass
I'd rather see a professional of my choosing.

As far as the gerbil thing is concerned, it's called producer/consumer. You
use a message queue (SQS?) to store the work and you use the gerbils to
'consume' it. You store the state of the books in something called a
"database" and you store the "master book" encrypted publicly on a CDN. The
server puts a message in the queue telling the gerbil how to customize the
book along with the URL for the master and the key to decrypt it. For
pragmatic programmers they sure go out of there way to obscure that it's a
simple producer / consumer model using SVN and a bunch of caches as a message
queue / database monstrosity.

As for the coderay thing I'd rather just use the F# syntax parser from F# and
decorate the AST as F# is my favorite language and it would take a couple
hours to do it that way. As a pragmatic programmer I don't much care to
implement a half assed parser in another language.

~~~
donw
Took a very quick look at Coderay. If I'm not mistaken, it looks like a
Regexp-based parser/compiler, rather than any sort of parser with an actual
grammar.

To be honest, while my inner nerd shudders at this, it makes a little sense as
some of the languages in that list (Ruby) have only recently had formal
grammars defined.

That said, I think it would take me more than ten minutes to implement a
scanner for F#, which I don't know, using Coderay, which I also don't know.

I could probably get it done in about a day, maybe two for debugging and
testing.

There is no way in hell I would spend that kind of time on a job application,
and as a nerd that has gone into management, I wouldn't ask an applicant to do
so either.

What has worked well for me in the past is to ask for either a link to their
GitHub repository, a code sample, or have them solve a quick five-minute
problem over Skype or IM.

If the interviewee passes that bar, we then do something more in-depth during
the interview as a pair, timeboxed to about half an hour.

This has proven effective at weeding out the untalented and unworkable,
without asking potential hires to sacrifice a huge amount of their time.

~~~
tptacek
Ruby does't have a grammar? MRI Ruby, the oldest and creakiest of its
implementations, is parsed with a 6000 line Yacc grammar.

~~~
donw
If I remember correctly, Matz didn't approve a formal grammar for the language
until a few years ago, with the idea that any language that can run rubyspec
is Ruby.

E.g., the language was defined not by a formal specification, but by
implementation.

Then again, my memory is known for being incredibly unreliable; I could be
wrong on this one.

~~~
fizx
You're both right.

~~~
Goladus
Right, you rarely have to use the formally specified grammar to parse a
language, so long as whatever parsing technique you use doesn't violate the
spec. A 6000-line yacc file probably isn't an easily-read formal grammar and
does more than a formal syntax specification would require.

------
tptacek
There is something in this job posting I like a lot and will steal: the "day
in the life" section.

The tonal problem I have with this post is that it is about Dave Thomas. Any
steps it takes towards being about the candidates it tries to attract are
incidental. Roughly measured, it's roughly 50/50 filtering/sales. Better than
most job postings! But in this market, not good enough.

Recruiting is sales. If you can grok the articles telling you not to shove
signup forms into the faces of first-time visitors, it should be obvious why
you don't want to demand a code sample in your first correspondence with a
candidate. Lots of hiring managers will think this is entirely reasonable (the
average candidate quality for a dev job is indeed poor), but that's an
expensive filter applied way too early in the pipeline.

Also, the graf about health insurance is written evasively. Netflix says "we
give everyone $10k; they can use it to buy one of our plans, or handle it
themselves and pocket the difference". That works. Not having a group plan?
That sucks a lot. If we didn't have one, I wouldn't trumpet it in a job ad. If
I had to mention it, I wouldn't write it in a way that begged the reader to
ask "ok, exactly how much higher than a normal salary are we talking about?".

My cynical internet self assumes "not enough to cover the huge cost of private
health insurance".

(And providing your own computer? I hope that's just misworded, and they mean
"we'll buy whatever you want". Otherwise, talk about penny-wise pound-
foolish...)

------
droithomme
The ad is pretty good but could be improved if they find they are not getting
enough qualified candidates. Maybe they are getting plenty and there is no
need for changes. But if so I recommend the following.

I would change "software developer" to "site administrator" given that the
first example in a typical day's work deals with resolving web site issues.

With the F# syntax highlighter code required to apply, I'd feel more
comfortable if I knew they already had one and this isn't an issue of trying
to get free work out of people. Also, requiring it to be implemented a certain
way is out of scope and unnecessarily narrows the field by rejecting qualified
candidates who aren't going to learn their special tool.

The salary offered should be clearly listed.

And finally, the no health care provided is unacceptable, which seriously will
restrict the caliber of candidates interested. If this was a contractor
position, which would be reasonable given that it is remote and the contractor
is expected to own, use and maintain all their own tools, then that would be
perfectly fine, however the rate would of course reflect that of hiring a
contractor/consultant. But as an employee, in 2011, there are plenty of
software employee jobs that provide benefits and very few serious ones that
don't. Because the rate is not quoted I am highly skeptical that the claim
that the rate is higher to compensate for lack of benefits is correct.

~~~
orangecat
_And finally, the no health care provided is unacceptable_

If the salary really is higher to compensate, I'd count that as a plus. Having
an individual policy not tied to your job is much better.

~~~
donw
Getting an individual policy in the US is almost impossible, and amazingly
expensive otherwise.

I currently have a US healthcare plan that covers emergency care only (I live
in Japan, so this isn't a big deal). This means it doesn't cover things like
'seeing a doctor' or 'getting antibiotics for a lung infection', which is why
I need to cut a check to the urgent care center I visited a few months ago
when I was in-country.

Fortunately, the total bill was only about $150.

For this amazing service, I -- pardon the pun -- cough up $120 a month to Blue
Cross. For a health care plan that, by and large, does not cover health care.

This is more than the cost of full coverage through the national healthcare
system in Japan.

Should I desire a comprable plan, I'm looking at somewhere between $500 and
$1000 per month. I'm healthy, thirty years old, don't smoke, am not
overweight, and exercise regularly. If I wasn't any of those things, the
numbers would be worse.

So, no, healthcare is mandatory for any company I work for in the US.

~~~
nandemo
> This is more than the cost of full coverage through the national healthcare
> system in Japan.

Wait, what? I'm curious how you can manage to pay $120 for full coverage in
Japan. I'm currently unemployed and will have to pay Y45000 (almost U$600) a
month for national healthcare. When I was working I had private insurance
provided by the company and of course the company paid part of it, but my
share was still way over Y10000.

~~~
donw
Do you have a family?

~~~
nandemo
No, I'm single. I'm genuinely curious on how you can pay so little.

~~~
donw
Me too, now...

------
giberson
Tangent: I saw the "A Design Challenge" that the job submission should should
include a document that addresses the issue.

 _As each instance starts, it boots its AMI. That image includes a snapshot of
the checked-out eBook repository as of the date the image was created. Each
gerbil, as it starts, updates this cache to get the latest version. This
involves checking out perhaps 500Mb of data per instance, as new books will
have been added and existing books updated since the instance was frozen. As a
result, it will often take 30–45 minutes to start 10 instances._

Am I off base here thinking that a fairly obvious solution to address the
30-45 minute cold start is to NOT pull the entire library of book templates
from svn at startup? Rather, why not simply update just the template(s)
currently stacked up in the job queue? So instead of a 500MB pull your looking
at maybe 1 or 2 before you can start processing a job in the queue.

I wonder if this "challenge" is an existing problem or something they've
already addressed. Has relying only on "on demand" cache updating been tried
already (seems like it would have been since it seems like an obvious possible
solution) if so what was the result?

~~~
mquander
Maybe this is too pessimistic, but perhaps the challenge is just serving to
filter out people who don't know what version control, EC2, or caching are, or
who can't form a mental model of the problem based on the short description
provided.

~~~
giberson
Perhaps the intent of my comment doesn't convey well. I'm not really trying to
judge the quality of this challenge. Actually, I just thought it was
interesting and was curious if my initial "obvious" solution would actually
provide improvement. Ie, I was trying to ascertain if this was one of those
the obvious idea is the worse idea scenarios.

Obviously the best solution would be to keep updating the base instance image
with new books so it could start up up to date as was suggested in another
comment below. But ignoring that possibility what other options can we explore
to increase performance? I just genuinely wanted to discuss the problem and
find out if its nature was one that got more interesting the harder you looked
at it.

------
groby_b
Wait, what?

* It's really a 'jack of all trades job'

* combined sick & vacation time is a crappy practice.

* No benefits

* Must supply own equipment

I'm sorry, but that's either a consulting gig (with the rates that come with
that), or it's a co-founders gig. Or a very young developers game, looking to
cut their teeth.

~~~
bmj
I was okay with everything posted 'til the "no benefits" thing.

I look at it this way: I like "jack-of-all-trades" jobs. Maybe you don't.
That's okay, and not a poor reflection of PragProg. The combined sick/holiday
time is okay with me, too, especially since you will be working remotely. I
have a very similar arrangement with my employer (though I'm in the office
several days a week), and I've never taken a sick day. If I don't feel too
hot, I just work from home. Sure, you may get very sick, and take a few days
here and there, but little stuff that might keep you out of the office in
normal circumstances probably won't keep you from working remotely.

As for the benefits, I echo tptacek's sentiments above: give the vast amount
of detail provided for the job itself, glossing over the lack benefits is a
bit troubling (especially for someone like myself who is sole benefits
provider for his family).

------
gfaremil
I'm not an expert how to write job posing (and Dave Thomas is an excellent
writer), but this is more like "what a developer job posting should NOT look
like" then "should look like"

Two important things and one less important:

* job description is more for system admin and not for a developer - your audience will be confused

* if you do not offer either health care or a pension plan, this is then essentially a contracting gig. You probably need to provide exact salary in this case. Probably you need go to hourly rate. In practice, there are only two type of jobs for developers in US: job fully loaded with all benefits and contracting gig. There is very little between.

* less important: too wordy and just too long without exact facts (you know engineers do not like

~~~
dmoney
Am I the only developer who thinks this looks like their own job (albeit with
different technology and health insurance)?

My job breaks down to something like 25% tech support, 65% fixing other
people's bugs, 10% developing new features. Maybe I'm just bad at managing my
career or something.

~~~
Zeus-TheTrueGod
Just think a bit, why are you still on this job? Are you a mediocre programmer
? Are you poor either mentally or lack a power of will ?

Of course someone should fix other people's bugs and someone should do tech
support. As well as someone should be a slave, someone should work as a
cleaner or keep streets clean, but why you should do this boring stuff ?

~~~
stygianguest
I cannot talk for your the grand parent, but I can think of a million reasons
to have such a job. Great colleagues, good benefits (vacation, health-care,
etc.), tied to a small town without good opportunities, ...

By the way, fixing other people's bugs and tech support may not always be
quite as boring and demeaning as you make it out to be.

Your disdain for menial work is misguided. There's more to life than your
work.

~~~
dmoney
The small town effect would seem to apply in my case. I'm not too close to a
major metro, but some insane people commute from here.

Maintenance isn't so bad except for how it's managed. michaelochurch addressed
this well in his reply [<http://news.ycombinator.com/item?id=3024752>]. I
could do with less tech support, but haven't gotten around to automating it
away.

------
justinph
No health care for a full-time position? Not a great template.

~~~
bradly
It says they pay extra to compensate. This gives the employee to choose their
own health care provider. I would think that is better than having it chosen
for you buy your employer.

~~~
gabrielroth
Other things being equal, more choice might be better. But other things aren't
equal, thanks to (a) economies of scale, which make insurance cheaper for
larger pools, and (b) favorable tax treatment for health insurance when it's
part of employee compensation.

~~~
bradly
True, but decoupling who performs surgery on you children and your current
employer may be worth something.

------
glimcat
Big flaw #1:

When I land on that page from a link, it is not immediately obvious that I am
looking at a job posting.

You should always always always let me know what I'm looking at within 0.5
seconds of me glancing at the page.

------
Goladus
What an actual day might look like:

The first 3 emails take almost the entire morning. In the 15 minutes before
lunch, instead of working on the new delivery feature you and dave specced
out, you pull up Hacker News and read an article or two before taking your
lunch.

After lunch, more support issues demand your attention. After an hour or so of
correspondence and follow-up you manage to get started on the interesting
distribution project, having blown off the F# syntax highlighting thing which
you won't have time to do tomorrow morning, either. By the end of the day,
you've barely started on the distribution project and send an email to Dave
with a cautiously optimistic update.

------
pragdave
Sorry to stir all this bile, folks.

Yes, the job involves keeping stuff running. If you're not interested in
making sure stuff keeps working, we're not interested in you. Sorry.

Yes, we already have solutions to the architectural challenge, and we don't
currently actually need an F# parser. Both are just exercises.

The combined holiday/sick days? I went with that because I though it was
fairer than the standard n weeks vacation plus sick days. If you want to apply
and ask for the separate vacation days, it doesn't bother me.

And we don't offer health insurance because no one else on our (small) staff
wants it, and we can't start a group scheme with just one person (we checked).

Dave

------
grannyg00se
"You’ll be working from your home. You’ll report to Dave Thomas, but you’ll
also be working with other senior staff both to help resolve issues and to
work on enhancements to our systems."

I think this is a great section. Too many employers lack the confidence and
business awareness to encourage the idea of working from home. You don't need
someone sitting at a desk next to you so that you can bother them every few
minutes. If your requirements are communicated efficiently and documented
properly the developer's physical location is completely irrelevant.

------
astangl
Please solve our design problems for free, and in turn we'll think about
hiring you.

~~~
bphogan
What's sad is that this is exactly what we think of when we see these. But
considering the source, I'd bet these problems are solved already.

I do this all the time. I already have the answer, I just want to see how the
prospect would do it.

------
Xylakant
Nice job posting. I'll be watching the coderay submissions to see whether
they'll contribute the F# scanner :)

------
bpellin
Thanks for putting the location (or in this case lack of location) of the
position right at the top.

I'm amazed at how many postings make this hard to find or leave it out
entirely.

------
maxdemarzi
Could't you address the design challenge with auto-updating the AMI instances?

<http://pragprog.com/wikis/wiki/ADesignChallenge>

[http://shlomoswidler.com/2010/01/creating-consistent-
snapsho...](http://shlomoswidler.com/2010/01/creating-consistent-snapshots-of-
live.html)

------
beilabs
_be a US resident_

Any particular reason? A lot of US companies are looking further afield
because they can't find the talent in the US.

<http://en.wikipedia.org/wiki/E-3_visa>

Disclaimer: I don't qualify, I come from the land of potatoes, I just live in
Sydney and get hounded by US recruiters for my troubles...

~~~
redthrowaway
>Any particular reason?

I'm thinking tax purposes. When you're a small outfit, the extra paperwork
burden that comes from hiring people in other countries, without visas,
probably would make it not worth your while.

~~~
loumf
In the US, you have to get the applicant through a lottery system. It used to
be a high percentage would get through, but the last I heard, it was more like
50/50. So, if you hire a lot of people, and have 30 with visas and get 15,
that might be ok. But, if you only need 1, it's too high stakes.

<http://www.ericsink.com/entries/H1B.html>

------
swalberg
Is the combined vacation/sick thing common in the States? I've never seen it
until I worked for a US company (I'm in Canada). Everywhere else either gave 3
weeks vacation and unlimited sick (with HR policies to deal with abuse), or
banked sick time separate from vacation.

~~~
mkopinsky
I don't think it's common. I had never heard of it until I started my current
job which has that policy. As a young guy who doesn't get sick often, I'm
happy to have it pooled.

------
ChristianMarks
Looks like a job as a system administurbator cleaning digital bed pans, with
occasional programming.

------
forrestthewoods
I skimmed the page five times before I ever saw the words "Software
Developer." Everything about that page screams TLDR.

The information contained is informative but it doesn't even have a decent
summary.

~~~
gabrielroth
The words 'Software Developer' are in 260% type at the top of the page.

If they're looking to weed out unsuitable candidates, TLDR might be a feature
rather than a bug.

~~~
forrestthewoods
But that 260% type is also the same color as the top bar so it blends in.
That's just poor design.

This is the internet, people don't read walls of text. If that's a weed out
feature then you're doing it wrong.

~~~
redthrowaway
It's Big, black text on a white background. It ain't exactly camouflaged.

------
rprime
Beside some technical mistakes, this kind of job advert really makes me want
to work there. I prefer transparent companies that pride with a good developer
workflow.

------
dreamdu5t
Why don't they tend to look like that?

~~~
bradleyland
I don't intend to stand up and defend obviously terrible job postings, but
consider the source here. The fact is that many people just aren't fantastic
writers. Pragprog.com is a publishing company. If that posting were written by
Dave Thomas himself, that means it was written by one of the most successful
authors in the Ruby community.

Success in authorship means that you must be a good writer in general. Success
in technical authorship means that you must be a good writer, as well as
exceptionally good at organizing complex information (like a job description)
and expressing it in terms that people can understand.

To answer the question directly: "Why don't they tend to look that?" Because
most people can't write nearly as well as Dave Thomas.

------
Syssiphus
Sounds like a dream job, sadly I do not qualify :)

------
richtaur
I dunno man, that's awfully wordy.

------
bluedanieru
Combined sick/holiday leave is a rather shitty practice. I shouldn't have to
cancel my vacation or take unpaid leave (if that were even an option) just
because I got strep throat earlier in the year. I'm not in the market but if I
were I would pass.

~~~
donw
I prefer the combined leave, and it makes more sense from a management
perspective. When you have separate pools for sick and vacation time, your
employees tend to fall surprisingly ill around national holidays, planned
vacations, and major social events.

With the combined pool, there's no pretense -- take time off when you want to.

Of course, we're assuming that you get a sizable pool for both... four weeks
(twenty paid days) is reasonable, although were it my company, I'd offer five.
The 'four week notice' policy seems a little high for taking the odd Friday
off, and is totally out the window when it comes to sick days, but overall
their vacation policy sounds pretty kosher.

~~~
Nutella2
In practice the two kinds of leave are treated differently even if they're
from the same pool since vacation has to be requested in advance and sick time
usually cannot be requested in advance. Unless you can schedule your
accidents, injuries, and infections 4 weeks out.

------
michaelochurch
It doesn't seem like a great job. It seems like a 65th-percentile software
job. And I have to give major props to the writer for having the courage to
describe what the job _actually_ entails rather than sugar-coating the role.

Of course, most job postings aren't so brazenly honest. For young readers: the
most important skill to hone during your 20s is bait-and-switch detection.

------
rorrr
Salary range not listed = low budget

~~~
kscaldef
I'm not sure that I've ever applied for a job that listed a salary range in
their ad. And, actually, my take is exactly the opposite of yours. Almost
without fail, every ad I've seen with a salary listed was lower than I would
consider.

