Fog Creek Software
Discussion Board

Writing a programmer job description

So I'm totally on board that when you hire somebody you want to hire somebody that is "Smart" and "Gets things done".  I completely agree with this.  Right now the company I'm working for is looking to hire one programmer and I am working on the job description.  The question is - how do you write a job description that gets the applications you want?

I don't want to put down "Java/ODBC/SQL" or any other specific requirements.  That doesn't tell us either "Smart" or "Gets things done".  As I write the job description I continuously find myself at a loss to post requirements.  Granted, an interview will quickly reveal much, but how does one make the right posting so that we get the right people applying and save ourselves from having to look at 100 times more resumes than we need to?

So I wanted to get people's opinions.  We know what we're looking for, we know what we want to interview, so now what do we want the Job Description to say?

I'm mostly looking to break the trap that the tech industry has created itself.  Nobody cares if you know whether OpenGL and COM+ or not, but we put it on our job descriptions anyway.  And as a result, people put it on their resumes as well.  Granted, if you've reached guru level status in an area then it's worth something, but if you're just throwing it out there as an "I worked on it over a weekend therefore I can put it down on my resume" then that's not helping anybody.

Wyatt Cheng
Tuesday, January 07, 2003

I'm off to they gym, so please forgive the terse comment:

Ask yourself "How would I measure what I'm looking for?" And then write your measurement into your job advertisement or posting. Then measure.

Anything can be measured with some thought. And the thought that goes into devising a measurement helps you clarify what you're looking for.


If you want a leader, you can measure leadership with specific kinds of experience (Captain of the Varsity Field Hockey Team). You can measure leadership by putting four candidates in a room and asking them to build an application together. Warning! Do not do this if you only have one opening: let them know you'll hire all four if they're all qualified, otherwise you get Survivor Cupertino.

If you want communication, ask for an essay on why you should hire them. Ask for examples of their writing. Do they have a Blog? Google their name. Are they a flamelord? A blowhard (Mea Culpa)? Do they run a D&D campaign?

If you want smarts, you can ask the smart person questions (as discussed elsewhere). You can let them know you will test for smartness in the interview. You can give them a take-home exam. For example: ask them to submit a design for a component along with their resume.

Good luck!

Reginald Braithwaite-Lee
Tuesday, January 07, 2003

See _Further up the Organization_

Tuesday, January 07, 2003


I think that you're over-analyzing and over-planning.  What you are seeking comes during the selection process, once you have received resumes and responses.

You should understand that the more exacting you make the job ad, the fewer people will apply because the fewer the people who will relate to the description. IE: I've seen businesses so eager to stress their overbearing view of the programmer as high tech factory worker that they get NO responses.... and other businesses so nit picky with (for instance) lists of "good character" bullets that the ad gets laughed at. You won't be able to repel people you don't want to consider. Your goal should be to make the best use of the newspaper and online ad real estate that you're buying, which basically means that you want to attract the largest possible set of appropriate responses.

One thing that may help: write the ad to be attractive to your "ideal" candidate. IE - most really sharp and competent people generally avoid "coal mines" where the management values working hard and stupidly, and such folk instead gravitate to places where they will most likely be appreciated. Try to also determine the plus's in your work environment, such as implicit flextime, and list these benefits as appropriate.

Hope that helps and is not terribly redundant.

- Don

Don Wallace
Tuesday, January 07, 2003

Unless you have the time and the money to train the new programmer in the language and environment you are using you may as well put them in your advert.

Then in the interview test for "smart" and "get's things done".

Matthew Lock
Tuesday, January 07, 2003

"...I don't want to put down "Java/ODBC/SQL" or any other specific requirements.  That doesn't tell us either "Smart" or "Gets things done"."

Well, why don't post specific requirements here then so we can get a picture of your employer's current IT environment and the type of employee who might thrive there.

So far, it sounds like you might be looking for a person who has the following skills:

* object-oriented analysis and design experience
* knowledge of the Unix OS
* knowledge of UML
* visual modeling experience
* knowledge of design patterns
* database programming experience
* good communication skills

Note: any of above don't have to be actual requirements they could be nice to have skills.

Does your company have a career path for techies?

Are you looking for immediate help?  That is, are you looking for someone who can be productive right away or is your employer willing to provide a week or so of mentoring to the "right" job candidate?

one programmer's opinion
Tuesday, January 07, 2003

Write the person specification that conforms to the job description.  I presume you know what the day to day requirements of the job are.

Then define the kind of person you'd expect to see succeed in that job.  If you aren't so bothered about specific skills but about attitude, then word it that way.  Though if you make it too general you'll end up with a lot more responses from people who believe they're the bees knees.

Simon Lucy
Wednesday, January 08, 2003

Whether you are looking for specific skills or not, you still need to list the skills that the job will use. Apart from anything else you will miss a lot of candidates if you don't. For example, recently, when I was looking for work I used the search "C++ and (midlands or birmingham or coventry or warwick or leamington)" to find potential jobs before ever reading any of the text.

Mr Jack
Wednesday, January 08, 2003

A trick I find useful when writing a job description: get the person who does the job to make a list of the stuff they do every day, every week and sometimes. They'll try to get away with "code", but drill down a bit. Chances are you'll get a list like I got:

(1) Write new Java classes
(2) Fix bugs in existing SDK
(3) Troubleshoot a client bug

(1) Report back at team / project meeting
(2) Fix an install bug

(1) Give training
(2) Sit in on technical interviews

So now you have a list of activities, try to get the same person or someone else who does that job to write down the skills they think you need to do those activities:

(1) Working Java knowledge. Java 1.4. Don't need EJB, you can learn that on the job
(2) Must be okay with fixing bugs in other people's code. Must be good at writing good test cases.


You get the idea. Somewhere further down the example list you will come up with "needs to communicate to groups of 10 or less people", "needs to be able to work well in team", "needs to manage his/her own time"... and so on.

Good luck!

Wednesday, January 08, 2003

There's really no way to narrow down the candidates for those types of "soft skills" through a job description.  Everyone who sends you their resume will all say to themselves that they're a "hard worker" who "get's things done." 

No one's going to think "I'm not a hard worker" so I don't think I can apply for this job."  They're gonna think vice-versa and most often than not they're not even going to care about that criteria.  They're mostly just going to look at the hard skills listed like programming languages, etc. and see if they're a match before sending you their resumes.

So the only way to do is to actually weed through the candidates.  Most companies have search firms that do this for them so that they don't have to go through the narrowing process themselves.  Just make sure you get a hold of credible and good search firms.  Those types will probably require you to have them on retainer but it's worth it if you do a lot of hiring.  Otherwise, if you don't want to or have the money to spend on a good recruiting firm then you'll have to do the weeding out yourselves.

The best way to hire though is through someone you already know and can rely on to vouch for them.  Ask your software team members if they know someone else that fits your standards.  They'll most likely only recommend a person only if that person will also make them look good and not as a dofus for recommending them.

Wednesday, January 08, 2003

Why would a "smart & gets things done" developer want to work for your company?

If you look at job ads you see a lot of meaningless puffery.  Just like product advertizing.  Do you have "competitive salaries and excellent benefits"?  I hope so, but so does everyone else.

How about those extra frills?  Do you have a subsidized cafeteria?  How about a chef on the staff?  I consider those things almost an insult.  Don't you pay me enough to buy food?  The chef might be a nice benefit, but I want to hear about how you manage to provide a productive work environment.  How am I going to be a "gets things done" developer at your place?

Reading job ads, I am amazed at how most companies avoid differeniating themselves from other employers.  Maybe that's because they don't have anything to differentiate themselves.

So what makes your employer different?

BTW, I know that just having a job opening is significant these days.

Wednesday, January 08, 2003

Hear, Hear!

Most Job postings tell you Nothing about the company.

Tell me what I am going to be doing on a daily basis, what type of applications I am going to be writing, and what kind of hours I am going to be working, if I work for you.  Give me enough information that I am going to know whether I want to work for you or not.

OK, you say, but then I'll get  1000nds of Resume's.

Um, is this really a problem.  Now you need a filter.  I'll give you two:

Not so good:  Resume scanners. Insist that all resumes be in text format and scan for Buzz words

Intense:  Send out a programming problem and tell people to send in their solutions.  Specify your criteria for quality.  Specify a coding stadard, and check all solutiojns agains a codeing standard checker.  Order by the number of errors and score the samples.

Here's one:  Design a set of Java interfaces to search, view and edit an address book VIA RMI.  All submited code must comply with the Sun Java Coding convetion found on the Sun website.

This is the kind of question you should submit if they are going to have to do remote Java Programming in RMI.  I don't care if they know the answer before they read the ad, but they sure as hell better know the answer before replying.

If you are hiring a coder, why not ask to see their code?

Adam Young
Wednesday, January 08, 2003

>>>  Tell me what I am going to be doing on a daily basis, what type of applications I am going to be writing, and what kind of hours I am going to be working, if I work for you.  <<<

Thanks for the response, but this is not what I was thinking of.  They're are of some importance.  Developers have an idea of whether they'd rather work on, say, web services or satellite control systems.  But development occurs on a cycle of months, so what you do on a daily basis changes a lot.

No, it's more along the line of "does this company have a culture of quality".  I think a "get things done" kind of person is going to be looking for the kind of employer that supports getting things done and done well.

I don't have a formula for what to put in.  If you look at a lot of job ads and career web pages, you'll see a lot of cookie cutter ads all constructed from the same boilerplate.  Once in a while one throws in a few silly frills like those subsidized cafeterias.  Then there are the rare ones that make it sound like the company is really serious about software development.  I'd put Fog Creek and a few others in that category.

If you're writing the job ad, then put in why you think it's such great place to work for.  Why you think it stands out from the others.  If it does.

I hope my current employer doesn't ask me to write any job ads.

Wednesday, January 08, 2003

I respectfully disagree with HeyMacarana's advice, that you have to weed out the candidates once they've applied.

My recommendation may strike you as strange.  But, especially in this job market, I advise that you ask for supermen and superwomen.  Be upfront with the fact that the job will be demanding (it will be, won't it?).

Remember those wonderful old ads from a hundred years ago, which would use big words and go on and on about their subject?  I like reading that sort of text in job advertisements.

Now, here's the psychological reason why I recommend this:  Everyone thinks they're a superman (or superwoman).  Studies have shown that people tend to rate themselves extremely highly on personality charts (in the top 30%, at worst).  Someone once said that men deep down believe that, if their girlfriend were murdered by a gang, that they really could go Tibet and train in the martial arts for ten years, then come back and avenge their girlfriend.

So, if your job offer asks for Indiana Jones, people will reply expecting to be Indiana Jones.  Those who read it will be healthily intimidated.  The folks who don't think they can cut it won't reply.  But those who do -- and a lot will -- will approach the job with a healthy respect for it, realizing that they're going to have to work hard.

And isn't that what you want?

Brent P. Newhall
Thursday, January 09, 2003

I'm not sure I agree with Brent, in general.  Remember that above average people tend to underestimate themselves, while the bottom of the barrel tend to think that they are at least somewhat above average.  The results of intimidating people may not be what you expect -- I think the only thing you can guarantee is that you will have to weed out a lot of people with bad "superstar" attitudes.  (I assume you are smart enough to not want them, or at very least are posting one job ad for that guy and another one for the dozen who have to clean up after him.)

I've been among the easily intimidated myself before, I take reasonable sounding job ads fairly literally.  If they say "requires X, Y, Z" I have often tended not to apply unless I feel experienced with all three, 2/3 and heard of the last one doesn't cut it.  Granted, I can easily translate "Requires X, Y, Z, A, B, C, P, Q, 10 years experience with Java" into "Requires two of those things, probably towards the beginning of the list, hiring manager is an idiot" but would prefer to avoid idiotic hiring managers where possible.

The best thing to do is separate requirements from wants and big plusses.  Now I can get a feel for your current technology, where you think you're headed, and whether I and my new co-workers are valued at all for having people skills.  Another thing that gets you points from me  is translating some of your want/plus buzzwords into common alternatives -- saying you prefer "SQL and ASP (or PHP, JSP) experience" shows me the writer of the ad is technical and not a zealot, both good qualities to have.

Thursday, January 09, 2003


Are you still reading this thread?  In one of my previous posts I said that your job ad should tell why your company is a better one to work for; why a "get's things done" developer would be able to get things done there.

I am really curious about this.  Could you tell us here why you think your employer is an exceptional one to work for?


Thursday, January 09, 2003

ITA software appears to have done well with advertising on sites like Slashdot with their puzzles.

Friday, January 10, 2003

Mikayla: I think you misunderstand me.

This makes sense, considering that I have difficulty explaining my point here.  Anyvay, let me elaborate:

Most jobs are tough.  Most jobs require a lot of work.  And most people hiring want somebody who's really a fabulous worker.  If this is the case, make that clear in the job description.  If it's not, then certainly don't advertise it that way.

And I certainly do NOT recommend advertising "Requires X, Y, Z, A, B, C, P, Q, 10 years experience with Java."  Asking for overqualification is just plain foolish.

I'm saying:  Ask for superlative people, and make it clear that you'll expect suplerative performance.  Sure, you'll get some drips, but you should be able to weed them out during the interview.  You should be left with superlative people.

Brent P. Newhall
Friday, January 10, 2003

Yeah!  I'm still reading this thread mackinac :).  There's been a lot of good advice and I've taken it all to heart.  I think the best thing that I read was that the job description should attract the kind of person you want.  I'd never really approached it from that angle, even though it's painfully obvious now.

I turned it around by thinking about when I'm browsing ads, what goes through my mind.  Here's what goes through my mind.

1. When I see an add with "requires A,B,C,D,E,F,G and 10 years experience" I do indeed think "hiring manager is an idiot".  But that also turns me off from the company as a whole.  It's stupid, but I think to myself "Do I want to work somewhere where the hiring manager is an idiot?"
2. It is important to differentiate the company and the position beyond "equal opportunity employer" and "great benefits".
3. If it says something about the company itself then that's really helpful.  It's nice to know what the company does, so you have "purpose" beyond just programming.

That said, the job has been posted on  It got changed a bit from my description to the HR department (specifically, C#/.NET/XML got moved into "qualifications" instead of "helpful" despite my protests) but overall I think the description differentiates the position somewhat and gives a pretty clear picture of what the position is all about.

If you live in the Bay Area, the craigslist link is

Wyatt Cheng
Friday, January 10, 2003

Brent - maybe we just have different outlooks here, or perhaps we're expressing the same thing different ways.  The people I've worked with who are smart and get things done do love a challenge (so long as you can reassure them that "loves a challenge" isn't code for "kiss your weekends goodbye").  But I can only think of one who would confidently say, "Yes, I'm a superstar!"  Especially when out of work and feeling less confident, as so many are these days.

Wyatt - I really like your ad.  I think the right people will respond (along with probably some of the wrong people, but that's what the resume and interview are for).  I'm actually OK with the HR change.  The weaker verb and lower placement in the list of qualifications still make C/C++ skills, OO design principles, refactoring, patterns, and other good stuff sound more important experience-wise than C#.  When the job involves actually doing C# much of the time, that makes sense, and if I were in the target market, I wouldn't feel discouraged from applying even though I only know "about" C#.  (I'd feel encouraged to do some sample programs to learn more about it and figure out if I like it enough to take a job in it.)

Friday, January 10, 2003

Mikayla wrote, "But I can only think of one who would confidently say, "Yes, I'm a superstar!"  "

Then, the job posting in question would only get people like him/her as the candidate (plus posers, unfortunately).  You'd still get superstars.

My main point is:  Differentiate the job posting.  Don't try to hide the job's challenges.  Use dynamic, natural language.  Try to *excite* the potential recruit about the job, if you can.

After all, a job posting is essentially an advertisement.

Brent P. Newhall
Monday, January 13, 2003

*  Recent Topics

*  Fog Creek Home