How to pick a GREAT Software Engineer

Mike Peters, 02-18-2009

Having worked with hundreds of software engineers, with different skill sets, character, origin and drive, I constantly find myself having to evaluate whether I'm dealing with a GREAT Software Engineer or wasting my time.

There are lots of common practices to evaluate how good of a software engineer you're dealing with.

You can check references, use tests, ask the candidate to write some sample code or grill him/her with questions about past projects they were involved with.

Most of the time, companies still end up hiring the wrong person. And that's because they completely miss what I believe are the three most important traits of a great software developer.

It's the stuff between the lines. The little details, that make all the difference in the world.

It took a while to come up with this list...

Three traits that would clearly isolate great coders from the rest of the bunch.

I now use it exclusively to evaluate (and frequently re-evaluate) all software engineers.

Here goes:

#1. Be a Great Problem Solver (50% towards overall score)

Nothing is impossible!

This is key.

Acknowledge that not only does -every- problem has a solution, but rather that there are always going to be at least two solutions to every problem.

What do you do in your spare time? If you're not writing code, installing a virtual machine, reading TechCrunch/Slashdot/DZone or testing out the latest version of Windows 7, you are not passionate about technology.

#3. Can quickly pick up new skills (20% towards overall score)

What you know now doesn't matter. Experience is important, but it's the skill-set that counts, not your ability to write code adhering to a specific syntax or operating system.

When was the last time you picked up a new programming language? A new API to interface with? New operating system your code needs to run on?

You must posses an ability to quickly adapt and evolve with time.

Adapt or die.

Petr, 02-19-2009

"What do you do in your spare time? If you're not writing code, installing a virtual machine, reading TechCrunch/Slashdot/DZone or testing out the latest version of Windows 7, you are not passionate about technology. "

That is a little bit exaggerated. What about family, children, your hobbies that are not connected with computers. With such attitude as you are proposing, one would be after few years totally ruined in other aspects of her/his life.

Otherwise I agree :-)

Mike Peters, 02-19-2009

Petr,

Good point! I agree wholeheartedly.

Your spare time doesn't start the minute you get home.

By spare time I was referring to the time after you tuck your kids to bed and your wife goes to sleep. The time on the weekend when you don't have any other plans with your family.

Everyone have things they like doing. Some people golf, others watch "The Office" or go out for pubs.

Great software engineers use every bit of their spare time, to do what they love most. Technology.

Riccardo, 02-19-2009

Sad to say, I never had an interview in which such skills were appreciated; they always cared about how one dressed, if he could be at the office 9-17 no matter what, if he does what the boss says without questions and so on.
Needless to say I switched many companies on my choice in the latest few years, just because I always ended up working with (mostly) wrong colleagues!
Nice post anyway :-)

Doug, 02-19-2009

I get back on my PC after I get home (single but engaged don't get me wrong!!!). is that passion or obsession :-) ?

Great post

Aaron Oliver, 02-19-2009

Awesome. Thank you for writing a "how to hire" that focuses on something other than "Make them write code! Test their knowledge of the language! Ask the difference between Vector and Array!"

Passion counts for a whole lot.

Marc Peabody, 02-19-2009

I love this. GREAT post!

I put tons of weight on passion when interviewing. Not only do I expect the person to sound excited or claim to be passionate, I want to hear what they do on their own time.

You want to see someone's heart? Look what they do with time and money.

I expect family and other hobbies take up a lot of folks' time, but there's another hour or so nearly every day that most people consistently spend on TV or watching funny internet videos.

One of my favorite questions:
"Tell me about something you've programmed or learned lately that wasn't required for your job."
Try it out next time your interview. :)

David, 02-19-2009

Great post indeed !

Yet, I would like to add two more points that I find as much important as the three you are mentionning :

- 1 - He has to be honest enough to admit "he does not know" : based on my (small) experience, those who are smart enough to say so, especially in the context of an interview, are not that numerous. And I truly value this behaviour : it tells me that the guy will not try to bullshit (sorry for the phrasing), will not get stuck hours into a problem he cannot solve, will more likely ask around for advices, and will probably not consider the first solution found as the more suitable to solve a problem.
- 2 - He should also be able to retrospect on what he is being asked : is it consistent ? is what I am being asked matches the need ? does it fit correctly in the existing "ecosystem" ?

I actually have some trouble figuring out those skills in an interview, but I usually look for people I can trust, more than people with actual knowledge : I think that such a profile will still be able to learn, will be eager to do so, and will know when he needs to.
Of course, this is not sufficient (technical skills can be absolutely compulsory, depending on the project constraints) but it is a great clue that would suggest that "I" will not need to keep a close eye on any piece of code he commits. And this is a valuable peace of mind for everyone !

my 2 cents,
David

Pramatr, 02-19-2009

The idea of simple weightings is a nice one. Of all the things to judge, I always find #3 the hardest. It's very difficult to see how quickly people can become productive.

We typically go through a fairly simple problem and get a candidate to walk us through some ideas related to it, just to see if they can grasp the concept enough to work with it. It's easy to see those who just can't get it, but it's difficult to learn much more.

Enjoyed this post?

Subscribe Now to receive new posts via Email as soon as they come out.

Comments

Post your comments

Name:

Email: (Required - never shown)

URL:

Comments:

Note: No link spamming! If your message contains link/s, it will NOT be published on the site before manually approved by one of our moderators.