Fog Creek Software
Discussion Board

Aptitude vs. Qualifications

I'm curious about JOS reader's oppinions regarding hiring people that do not meet a jobs stated qualifications.  For example...

You are interviewing a client for an immediate opening on your web development team programming ASP.Net (prompted from a recent discussion) and the candidate you are interviewing has a very strong aptitude for programming.  They have a good ability to break problems down into their basic parts, and are able to generate solutions using pseudo-code.  They have never really programmed either independently or in a production environment, and their degree is in molecular biology.

They in no way meet any qualifications for the open position, yet their attitude and personality are a good match for your company, and show great promise in becoming a top developer at your company, as well as an avid desire to pursue programming.

Do you:
a) turn them away,
b) turn them away, but prod them to pursue programming and come back for an interview when they have had some experience,
c) hire them and find a position for them, meanwhile providing the basic programming education that they lack.

I personally would be inclined to choose choice (c), however I can't say I've ever found myself in this position.

Friday, January 09, 2004

It might depend on your time frame. 
A)"Does this person need to be able to get down to business as soon as they walk in the door?"
B)"Could a generous amount of training time be allowed to get the person up to speed?"

Friday, January 09, 2004

If you like the way they make coffee, hire them.

I've employed people that didn't have formal qualifications or perhaps had them in an entirely different area.  None of that made any difference as to whether they were a worthwhile member of a team or company.

There's far too much pin pointing of current requirements to individuals, employers seem to want a complete out of the box match without having to expend any effort or resources.

If everyone is looking for the exact right match to the project requirement today, where are the people without that experience ever going to get it in future?

Employ people not positions, that way perhaps you won't have either redundant positions or dissatisfied people.

Simon Lucy
Friday, January 09, 2004

>> "If everyone is looking for the exact right match to the project requirement today, where are the people without that experience ever going to get it in future?

Employ people not positions, that way perhaps you won't have either redundant positions or dissatisfied people."

This is a major problem today because of the high rate of unemployment and the general misconceptions that most people carry around with them. 

All of a sudden the ego laden HR people get to "put their skills to use".  Do HR people have skills? erm... anywho

Friday, January 09, 2004

Good HR people do have skills, good HR people make sure managers hire fairly and don't make obvious mistakes but they don't get in the way of the manager's/hirer's decision.

They are there to enable.

Simon Lucy
Friday, January 09, 2004

One of the owners here has a little sticky note on his monitor that's been there for ages:

Hire for attitude
Train for skills
Reward for results

And wouldn't you know it, this is probably the best place I've ever worked. Respect flows both directions, things get done, and I've never this many people in one place both working hard and being happy.

Ron Porter
Friday, January 09, 2004

If she's hot and has some skills and is willing to learn, hell yeah, hire her.

This space for rent
Friday, January 09, 2004

If they don't already have a job or hate the one they already have offer them a job BUT make clear that it's on a one month review subject to them being OK.

Alternatively if they have a job and are just looking to move invent a task that if they've read "Getting started with ASP.NET" (or whatever reasonable tutorial text is available) they should be able to implement. Offer mentoring in the evenings to make sure they are staying on track.

Personally I'd take the risk, but I'd hate to make someone throw in a job they're good at for a month then fire them.

Peter Ibbotson
Friday, January 09, 2004

The problem I have with hiring that person is the assumption that programming is something any intelligent person can pick up in a few weeks of on the job training. That's why so much of the software written is crap, people learn an IDE and how to write "select * from table" and want the salary of someone who knows what they're doing.

Look at it the other way; if you are a programmer but see a job opening for a microbiologist, would you expect to be invited to the interview,  hired, and taught how to be a microbiologist on the company's time and salary?

Not This Time
Friday, January 09, 2004

I would say that programming is much easier to pick up than inverse geometry or microbiology or sub-atomic cold particle physics.  I am by now way indicating that in 3 months one can learn the bulk of what they need to know programming.  And I'm not advocating that you make them software architect.  But if I gave them a handful of spec'd classes to implement, I don't think they'd have a problem doing it, and post code-review having it done well.

Friday, January 09, 2004

I would imagine that a lot of microbiology is programming (well DNA certainly is a program) However the original poster implied that this candidate had done SOME programming although never solo and never major.

Given a mentor most folks can program well enough to be useful, the point here is that if your interviewee comes across well enough then they may be a superstar programmer. Most of the programmers I've worked with haven't been CompSci majors. Most of the good ones have either had engineering or numerical literate backgrounds.

(I also worked with a phd in soil science at one point, he had the office nickname of "Dr Dirt")

Peter Ibbotson
Friday, January 09, 2004

I was hired by Nortel with a degree in Maths and no programming experience. I did a year of maintenence programming (virtually alone), then a 9 month development project (with a mentor), and then I was experienced.

I figure aptitude with no experience qualifies you for a "trainee" position, but not for "an immediate opening".

Personally (more responsible for production than for training) I would:
d) Not be interviewing them in the first place (weeded out earlier on the basis of their reume).

Christopher Wells
Friday, January 09, 2004

According to psychology you already decided in  the first 6-10 seconds after this person entered the interview room.
So, are you now trying to rationalize an extreme position (you are looking for an ASP.NET programmer and this person has no programming experience whatsoever). If you lean to your oiption (c): can you justify the cost of training this person inhouse? Can you reasonably assume that once this person has aquired this new hot skill (apparantly you live in an area where finding good ASP.NET people is really difficult), he will stay with the company? Is there really another (non programming) position that needs to be filled (this will inevitably prolong his programming training time)?

Don't get me wrong: I do believe in hiring smart people above mediocre one trick ponies, but maybe there are also smart programmers (even with ASP.NET experience) around? Those things are not orthogonal.

Just me (Sir to you)
Friday, January 09, 2004

Good point sir. . .

I guess my original meaning in the question was, regardless of whether or not you find a smart person that also knows ASP, what do you do with the candidate that, however they made it there, made it to the interview was smart, and you believe could make a good programmer.  Cast them to the wayside, or do something with them?  No maybe you don't hire them for the ASP position, but do you create a position for them assuming you don't have a position that fits them to the T.

Friday, January 09, 2004

It really depends on your attitude. Hiring an unknown quantity is just that, hiring an unknown quantity. If you have six months to a year to train him great. It's an expensive gamble.

You'd also have to explain to the existing staff that they have to help him as much as possible, and ward off the evil eye when they learn that he's completely unskilled and earning x% of their salary.
Friday, January 09, 2004

I think there's a learning curve at most jobs, where the new hire is coming up to speed.

At my first full time permanent engineering position, I was costing my company money (My salary exceeded my billing).

Is it possible to find some other position for this person in which they would be productive sooner?

I think that problem analysis is the most neglected part of software development. You can have the best-written proram in the world, but if it doesn't meed the users needs, then it's just bits.

Could you perhaps start this person in Testing or Tech support?  I think those are easier areas in which to minitor his performance and lets him ease into things. Also, I think ALL programmers should *regularly* spend time doing tech support and testing.

The real Entrepreneur
Friday, January 09, 2004

Do your customers a favor, don't put this person in tech support. A person with no knowlege in tech support, even if they are fast learner, sucks.

If they have the right mindset, testing sounds about right. Writing documentation, provided that they have good writing skills, sound good too.

Friday, January 09, 2004

It would be helpful if someone who have changed career from another field to software development could share their experience.

I do not see any problem to hire them for a newly created position, as long as compensations are appropriate for their experience.

Rick Tang
Friday, January 09, 2004

Darn, some good comments. I recall a few years ago (2000) when we were looking for a Perl programmer.  The 2nd person we found happened to have almost gotten his PhD in Math.  The guy was smart. He also had learned the rudiments of Perl (and Java, Javascript) but had no production experience. I hired him. I showed him my system for development and then gave him a project and to his apparent distress I would mentor him from time to time. But essentially the work was simply trying to draw out the requirements from the customer, then write code to either put or pull data from a database and present results in html. Not rocket science. He lasted on this one project for about 2  years. I had left the company by then and the company laid him off about 1.5 years after I had left. They did not hire him back as we both saw them advertising for a programmer. He complained that my replacement was smarter than me and he said they were hoping to do the same with him :)  Personally I think they made a mistake but oh well. The guy had a great attitude, good work ethic, was smart and able to solve problems ... finding good people is a lot harder than most people realize.  As others have said: hire talent.

Friday, January 09, 2004

Didnt EDS use to ( still do? ) hire people based on their ability to learn? And then teach them the EDS way?

moses whitecotton
Friday, January 09, 2004

The size of your company also plays a factor. Small ISV's might not be able to afford to hire someone that isn't productive for quite a while.

Ben R
Friday, January 09, 2004

The University of Texas has a program to hire based on aptitude. You have to take an "aptitude test" then go through 3 months of training to become their kind of programmer. The test is a logic test like "Find the pattern: AbABaaBCddC...."

My wife went through it. She has a B.A. and M.A. in English and new virtually nothing of computers. 90% of the programmers there don't have much/any computer background. Probably 80% are liberal arts majors with graduate degrees. It seems to work well for them, though probably 10-20% of hires get fired during the training program when they aren't up to snuff.

They like to say that they hire thinking/communication/personal skills. If you have that, teaching the programming is fairly easy.

Friday, January 09, 2004

My company also has an aptitude test (not an IQ test) instead of any programming questions. Basically they give you a pen and a piece of paper and ask you to solve all kind of business domain problems which can be reduced to state machines and graph theory if you have a good analytical mind. This test has proved perfect to weed out unskilled applicants since it is not enough to know programming, but one has to know how to model a real life problem using programming constructs. Extremely few get a 100% score.

Friday, January 09, 2004

> Didnt EDS use to ( still do? ) hire people based on their ability to learn? And then teach them the EDS way?

This is the way EDS, Accenture and the like explain their business model, but in fact what they're doing is hiring loads of cheap people so that managers can retain more of the billing income.

They also use this in their marketing to clients. Instead of admitting Joe and Julie have never touched the language before, they give a presentation on how they can pick up any language in two weeks.

Governments all over the world have wasted hundreds of millions of dollars of taxpayer dollars as a result of this business arrangement, funnelling it all to highly paid managements at those firms.

Inside Job
Friday, January 09, 2004


I've got a BS in bio with minor in math, a PhD in molecular bio, and never programmed a line until I started taking night school classes in C and Perl during grad school.  Around graduation, I was interviewing with biotech companies, trying to get a job in bioinformatics. I got 2 interviews but no offers -- they said I didn't have enough programming experience OR work experience.

I consider myself to be in the "Smart, and gets things done" group, and knew I could learn fast, but had to agree that a biotech company pouring money down the drain (they all do for the first 5-10 years) can't afford to hire someone and train them.  And after hearing more about the job requirements during the interviews, I agreed that I would need a lot of training.

Luckily, this was early 2000, and I knew a good friend at a small engineering dot-com startup.  He hired me, knowing that I had almost zero skills, at a reduced (for the area) salary.  I spent a year programming a data-intensive web site in PHP and Postgres under his tutelage.  Then I starting applying for bioinformatics positions again, and landed the job I'm still in now.  I won't go into the interview process -- I've posted about it here before -- but basically I talked to almost everyone in the group, plus several bio scientists as well, for over 12 total hours of interviews.  Very thorough.

Interestingly, I found out much later that at least 1 senior person thought I was unqualified (no hire) due to lack of experience in coding, but she was overruled by many others who thought I was smart and trainable, with the right attitude.  1 promotion and 3 raises (in 2.5 years) later, I'm well established here, and dare say I'm on the high end of the productivity scale.  (And the naysayer has admitted she was wrong in my case.)

HOWEVER, that said, productivity for in-house scientific programming is quite different from writing commercial software.  I'm really a generalist -- I combine bio, stats, database, and code knowledge (Python & Java, these days) to solve data analysis problems.  I don't design complicated code architectures from scratch.  I don't evaluate and make decisions on adopting new C.S. technologies.

Working side-by-side with the C.S. majors here, I can easily tell the difference between what they know, and what I know.  I'm missing all the fundamentals, like knowledge on how compilers work, or design patterns aka Gang of Four, or efficient ways to implement different data structures, or server/client fundamentals, or how to use basic Unix tools like sed and awk to their full potential.  I learn everything as I go -- if I haven't needed it yet for a project, I haven't got it.

Anyway, the punchline is -- even after 2.5 years and thousands upon thousands of lines of code in production, I don't consider myself a great programmer.  I could become one, if I wanted to and coding was 100% of my job, but regardless of my smarts it would take time and experience.  So, while I would hire coders with non-C.S. backgrounds for jobs like mine, I'm not sure I'd hire one for purely code-monkey positions-- unless you're willing to supply the basic C.S. training that person is missing.

Note I still think a smart biologist can be trained up to a much higher level of programming ability than a dumb C.S. grad who just happens to know .NET or whatever you're looking for at the time.... it's just that there's no shortcut around the training part.  Domain-specific knowledge is just that, and it takes time to acquire.

Biotech coder
Friday, January 09, 2004

Little off topica ,Recently reading the book "Show Stopper - Breakneck race to create Windows NT". was really amazed to read , how many people from Non-Programming fields were attracted towards programming and joined microsoft. Even , Windows NT architect Dave Cutler started his carrer in a non-programming field.

Saturday, January 10, 2004


"amazed to read , how many people from Non-Programming fields were attracted towards programming"

It's like a train wreck - you can't help yourself :)

Seriously though, why shouldn't those that pursued different fields find programming interesting and want to get into it as much as they possibly can - even to the chagrin of some (most ??) of those that did. Computers are hard to avoid - being able to make them do exactly what *you* want them to, even harder.

Perpetual Newbie II
Saturday, January 10, 2004

I have a story like Biotech coder, with slightly different conclusions. My degree was in electrical engineering, and almost all my programming was self-taught.

Over many years I developed increasingly complex projects in C++, learning many principles on my own that I would later discover are part of the training provided to CS majors. I also developed expertise in many areas that most CS majors never cover.

After 10 years of this, I consider myself a superior developer, and colleagues and managers agree with this. I've mentored CS majors for the past five years.

Saturday, January 10, 2004

If they had programming experience in something (anything!) I'd say go for it. A good programmer is a good programmer, regardless of the tools being used.

However, it's a huge gamble to take on someone who has never programmed before. I'd suggest it's one you're likely to lose on.

My reasoning for this is that the majority of programmers are not good programmers. Therefore, with nothing to base your decision on whether this person will turn out to be a good programmer or not other than a hunch, chances are that they'll turn out to be a bad programmer.

It's not a gamble I'd take. It's not 1999 anymore. There's no shortage of programmers looking for work in most places at the moment. You should be able to find someone who's a safer bet.

Sum Dum Gai
Saturday, January 10, 2004

*  Recent Topics

*  Fog Creek Home