views:

680

answers:

8

A few years ago I moved to a new job having been programming for 2 years using C#, however this new company was mainly using VB6. I made the case for .NET and won, but one of the consessions I had to make was to use VB.NET and not C# (understandable as most of the other developers were already using VB).

Three years later it was time to move on, but when applying for jobs I couldn't get past the recruitment agents. I realised that when they were looking at the basic requirements (5 years experience) that they could not add 2 and 3 together to make 5. They were looking for 5 years in VB or C# not across both.

Frustrated I decided to combine my skills with a designer friend and start my own company. After two years of hard graft we are now looking for our first employee (a programmer), and this question has hit me again, but now I see the employers perspective. Why take the risk of someone getting up to speed when you have thousands of applicants to choose from.

So my question is this, if I define the requirements to be too narrow, I could miss the really great candidates. But if they are too broad it's going to take ages to go through them all. This will be our first 'employee' so the choice needs to be good, I can't afford to make a mistake and employ someone naff. Another option would be to choose a bright university graduate, and train them up (less of a risk because we can pay them less).

What have others done in this situation, and what would you recommend I do?

+10  A: 

some classic advice yet again from one of the founders of stackoverflow, Joel

Smart, and Gets Things Done.

I would go with aptitude and attitude first for full time employee, assuming they're within range of learning what you need them to do. Focussing more on particular skills for contractors or freelancers.

dove
+4  A: 

Be specific about what you do and what type of work is involved. Sure you might shield out some candidates, but those are the candidates who didn't get excited about it in the first place.

If you're going to have only 1 programmer, you need to find someone with passion. Experience is good, but it's also expensive. Find someone who is a continuous learner and has passion for their craft, and pay them well.

One of my favorite interview questions is "What's your favorite technical book? Why?" -- if they say something like "Learn ASP.NET in 24 Hours" kindly show them the door. :)

Ben Scheirman
+2  A: 

Requirements simply narrow the search, they don't select the person. Will someone get over looked because they miss a requirement, yes they will. However you still should have a large group of people to choose from. If you don't have a large group to choose from, then lower your requirements. You can find out more about the person in an interview, even a telephone interview. That is where you will make your final choice.

Jim C
+1  A: 

Depends a lot of course how much time do you have in hands for training. For a small business I would put more weight on personality and smarts than existing skills (within limits of course).

mmiika
+7  A: 

I agree with dove. I would add that because this is the first employee and the company is small, anything he will do will have much bigger consequences than if you already were 100.

Therefore, you need your candidate to be trustworthy. Having a bad apple in such a small team can literally sink your company (I've seen it happen!).

Don't worry about which language he knows: knowing .NET is probably good enough in your case, compared to what I just said.

Carl Seleborg
Sound advice, their actions (for good or bad) will shape our company. I should be asking myself, could I see this person as a partner rather than an employee?
Ady
that's a good way of thinking of it, that they would be a partner. remember that it takes many skilled developers to undo the flaws of just one bad one who got there first. to that end, if at all possible, push out the budget and get the best talent you can afford.
dove
+3  A: 

For a very small company, the goodness of fit is probably this single most important thing to focus on. Put another way, it's not what the candidate can do, it is what they can do for you and your partner that counts. Thus your choice of correct candidate is predicated to a large degree on your own and your partners strengths, weaknesses and business needs. For example, if you are not a good manager, your candidate needs to be a self starter. If your candidate will be dealing directly with your end users, she or he must have strong communications skills. Basically, what this boils down to is that you should probably produce a weighted list of desirable attributes based on your own very specific needs, and score potential candidates on this basis.

Hiring someone bright and enthusiastic is all very well, but it may not what you are after. Running a small software house myself, I have found the best long term successes have as often been with more dogged, reliable hardworking types who communicate well, rather than technical geniuses.

Edit: One other thing I tend to do once I have selected the candidate, is to offer them the job on a three month trial period. If they don't work out, which can often be the case, you are not stuck with them.

Shane MacLaughlin
+6  A: 

It's a tough situation. I'll give you my experience and you can take away what you wish from it. I'm 1 of 4 partners in a company that does consulting work as well as some products. We've been growing for a few years, and about a year ago we were doing well enough that we were starting to turn away consulting work and product improvement was getting behind, so we decided we'd hire someone. We didn't have a lot of cash, so we decided we'd get someone right out of school, someone bright, and train them up (there are no schools that really offer curriculum in Windows CE and Windows Mobile work anyway).

First we posted on CareerBuilder to get resumes. We got everything from developers to forklift operators sending us resumes. To prevent having to actually look through all of them, we can up with a 20-question skills assessment that we sent to everyone who sent in a resume. If they sent back the skills assessment, only then did welook at the resume. That meant we only had to read about 10% of them.

The skills assessment was basic. It had problem solving questions and questions on general technology concepts. Development questions were left open to allow them to use any language they wanted for an answer because language can be taught, thought process cannot.

We then looked at the results of the assessments and the reumes and lined up interviews for 4 people. I interviewed them at a local coffee shop to keep intimidation factor low and to have them relax. I asked about their experience, history, goals, etc. The usual.

We ended up selecting someone who graduated from DeVry and therefore had some classroom C, C++ and Java experience and even a slight bit of embedded (used a PIC) work.

He came to work and almost immediately needed constant management and direction. Not his fault, we thought, he was new (though he was a "team leader" at his previous employer).

Any time we walked in, he seemed to be texting on his phone or IMing and not doing work. Well, we IM during the day too to communicate with each other (all partners are in different locations, the hire was working directly in my office).

I gave him a fairly straightforward project to give him focus, and hopefully teach him some stuff. Extend an existing sample web site for our web server to include a page that displays log data. He had questions at every step so I had to stop doing my work to help him. My productivity went way down. He's new, we thought. Give him time.

After about 6 months of working with him, I gave him a new task. Extend a task manager type application to show all threads in a given process. The API work for getting the info was already done, it was basically just a "get it into a Form that the user can see, select, etc. on. He then asked how you add an item to a ListBox. Seriously. After 6 months of working with us, and after getting a supposed technical degree. I let him go that day.

In the end we ended up flushing roughly $30k down the toilet. I could have hired an experienced contractor part-time for work for 30k on a 1099 basis and ended up way ahead. That doesn't even count all of the headache associated with doing payroll, etc that bringing him in caused.

So now when we need help, I turn to a small hand full of experienced contractors I know I can trust. The cost per hour is substantially higher, but I know what I'm going to get, how much it will cost, and how long it will take. I also can hand it over and walk away, knowing it will get done.

I'd only take on a new hire again if I could devote at least 3 months solid of my time to sit with them and train them day in and day out. Even then I'd require that anyone I hire had been programming since they were in grade school. If a person started programming in college then they don't have the drive or interest I want.

ctacke
Great post. Been there, done that, lost the money. What is a killer in a small company is the amount of your own time a new hire consumes, and how many really weak candidates there are out there who's main skill is taking interviews.
Shane MacLaughlin
For me, that only means you should only accept new hires that have proven after two weeks that they can actually work unsupervised.
David Schmitt
Thanks for the great post and the time spent on it, lol. The purpose of the 'employee' is to take the workload off me, so I think I'll be avoiding juniors until I can afford the time to train them.
Ady
@Ady, maybe you don't need a programmer at all. Maybe someone who can free up your time by doing tech support, documentation, administration etc.. to give you extra space for what you are good at.
Shane MacLaughlin
+1  A: 

He need to be smart and fit in with the way you work, but s/he does not need to have all the skills you think he should have.

Skills are easy to pick up for the smart, but employing a person you can't work with, can't work with you can break a small company.

Schalk Versteeg