views:

256

answers:

8

Hi guys,

I'll make this a community wiki seeing that there's no exact correct answer.

I've started a project (which I'm proud of) and due to the demand of the requirement, I need to hire developers (mostly java and C++). Now, I know there are some who are java certified and some are qualified computer scientist. In my work experience, I have worked with qualified people than I, but simple things such as design patterns, OOP, etc. were just "clueless". Some found it hard to even implement Fizz Buzz.

My question is this: What are the requirements to look for when hiring a software developer? A highly qualified developer with intellectual knowledge but implementation is poor or someone who lives as a "bedroom" coder and eventually harnesses his skills professionally?

A: 

Well, I don't come from a hiring background. But if I was looking for someone to work under me, I'd like someone:

  • Passionate about programming ( it would suck to have some one that doesn't care about their work)
  • Someone that can solve problems. (Problems more difficult that fizzbuzz :P )
  • Isn't afraid to learn new things

But, I guess in the interview phase, I'd throw some reasonable problems for them to solve and take close note at how they approach the problem. :)

townsean
A: 

I normally look at the social side more than on pure technical skills. If someone knows how to develop in general and I have the impression that collaborating with her or him is fun, that I would prefer that person over someone having exactly the technical skills, but who cannot communicate clearly.

You can more easily learn some technical details, especially on a background of some other technical skills than change your attitude.

Frank
but be careful of the people who are charismatic but couldn't code even a simple fizzbuzz.
Earlz
Of course, you should not only look at the social skills.
Frank
+3  A: 

I've been involved in hiring when my start-up was expanding. Our primary thing that we looked for was skill with object-oriented programming. (We have complex OO code, because of the problems we try to solve). The exact language experience was very much secondary to that.

Programmers who can do the OOP paradigm can generally learn new programming languages on the job. The reverse is not true. (edit:) So if you've got some particular sort of problem you're working with, consider if it's really programming-language specific, and whether you really need to say "N years experience with programming language" or whether that will unduly narrow your field of candidates.

fennec
...until you are trying to OOPify a simple procedural program that could be written in 50 lines but instead is broken into 5 classes each with 60 lines of code each in them... Reminds me of Enterprise FizzBuzz.
Earlz
Wow at the downvotes; that's some snazzy anti-OOP bias! In our case, the software is a management system which tries to manage devices manufactured by a variety of different vendors. I'm sorry; we *need* people who can intelligently factor things across different vendors, configuration strategies, and firmware classes. It's a regular OO zoo... but no, actually, we don't actually write monstrosities.Okay, so it's possible that you're uninterested in OOP. My main point, I suppose, is that the language isn't always the most important skill, and it may be a mistake to start that way.
fennec
I've edited my question to clarify what I was going for. Hopefully this is better! :)
fennec
+2  A: 

For technical requirements, I have found this simple question to be very effective:

In your programming language of choice, write a function/subroutine/method that takes a string argument and reverses in place.

If they answer that, then most probably they've got the technical basics covered and can learn the rest as they need it, provided you're willing to invest in them.

I would rather have a rookie who is humble and understands the basics than a buzzword-laden developer with an attitude and sloppy execution.

ShaderOp
ah, that's a good question to ask. I would probably bar the use of Python. Python => return s[::-1] ...where s is the string to reverse :P
townsean
Well put, I'm sick of these "experts" who merely brag.....
The Elite Gentleman
@townsean: That is not an in-place reversal. In fact it would be quite hard in Python since strings are immutable.
Philipp
@Philipp: You're right on the mark there! It's a trick question that--surprisingly--trips up a lot of people.
ShaderOp
ah, I didn't noticed the last part there :P
townsean
A: 

"Write a Singleton in any OOP language. Just the very basics." - shows if they have a clue.

"How many spare-time projects do you work on a year?" - shows if they actually like programming.

"Google or Apple?" - shows if they are awesome or an asshole.

Those 3 questions can't fail you.

Coronatus
So is Google and Apple the new a**hole? There's been debates amongst friends about this. They're becoming the next Microsoft.
The Elite Gentleman
@The Elite Gentleman - No, Google is still awesome. Apple is North Korea.
Coronatus
Well, Google is awesome in a way that they believe in open standard but don't you think they're becoming the next Microsoft? i.e. They're trying to have huge stack in search, in mobile, in web browsing, etc.?
The Elite Gentleman
Being dominant in lots of areas isn't evil if the code is open, can be easily modified, and free/cheap. Google are open and free/cheap.
Coronatus
A: 

Ask, "How would you design X?"

Copy-and-paste programmers will tell you in exacting terms exactly one way to do it. They'll know exactly one way, because they've been taught a cookie-cutter method, and every day they cut the same cookie, over and over.

Real programmers who can think will discuss several ways, comparing the pros and cons of each.

Really good programmers will discuss several ways, and ask you what your constraints are. (E.g., time costs versus space costs, ease of implementation versus extensibility, programmer time versus maintainability.)

tpdi
+1  A: 

Definitely read (several times) Joel's Guerrilla Guide to Interviewing.

Then make your peace with the fact that finding a good developer is a long and painstaking process. Also review your posting and ask yourself whether the job description and qualification description is something that is going to attract a decent developer.

Paul Sasik
A: 

Assess productivity:

  • Can the person work as part of a team, or are they likely to work in isolation. Isolation reduces productivity no matter how good you are.
  • Do they think about the process of what they are writing? Everyone looks for people who understand and design their work before just pitching in (+1 productivity) but do they look for new tools and approaches which would make their lives easier and their code more maintainable (productivity multiple).
  • Do they think anyone who is less capable than them is an idiot (- productivity) or do they try and mentory others to their own standard (productivity multiple).
  • For juniors, will they resist being treated like an idiot for not knowing, find mentors and grow or just sit and sulk.

Just one dimension obviously - the ability to write some code would be nice too.

dwarFish