Page 1 of 1

Testing a new programmer?

Posted: Wed Mar 10, 2010 9:05 pm
by curtisj
I am new to the forum, so let me first apologize if I put this post in the wrong place...it was between here or general, but general said not code related.

I am in the process of hiring my first in house developer and came up with the following test. Based on experience is this a good test, and how much time should I allow someone with "good" skills to complete it. Platform is LAMP. Thanks in advance.

1. Create a database with the information in programmer_test.xml

2. Create a cron script (cron job) which adds to the products_quantity
feild 1 product for each product every hour (ex. existing qty = 2, hour 1
qty = 3, hour 2 qty = 3, etc).

3. Create a simple (non graphical) web interface written in PHP which
randomly displays a list of 10 products and their quantity available in a
css table format from the database (display products_model,
products_name, products_price, and products qty).

4. Create a script which allows me enter my email address and click a
button on the website. When done this script should email me a random
product and its quantity available. It should also log my email address in
a field in the database for future use.

5. Create a script (and button) which allows me to click a button and
export all email addresses submitted to a tab delimited file for download.

6. Create a new FTP folder and user/password on the account. The folder
should be called "feeds".

7. Create a cron job which runs every 45 minutes and places an xml file of
all products in the database to the feeds FTP account. Each file should
have a timestamp in the file name.

8. Create a script which allows for logging of: all scripts run on the
website, as well as the IP which ran them, the time they were run, and
whether they were completed successfully or not in a text file named
cronlog.txt and store it on the FTP site that you created.

When completed, email all documentation information
that is required to view all of the information above from the web/ftp.
Imagine that I am a new, knowledgeless user and you need to email
instructions to me on how to use this.

Re: Testing a new programmer?

Posted: Wed Mar 10, 2010 11:11 pm
by requinix
That's a lot to do.

My first impressions are that you're someone expecting a lot from the new recruit. Expecting them to do Magic and to do it Fast.
I'd be very wary of working for you, and I'd probably take a look around for some other job.

Re: Testing a new programmer?

Posted: Thu Mar 11, 2010 12:02 am
by curtisj
Wow, thats not the response I expected. Does anyone have any suggestions for a good test when looking for a good programmer?

After posting I decided to work a bit on the test myself to see what I was capable of. I can hand write html and troubleshoot existing code only, and I was able to complete steps 1 and 3 (minus output in CSS...just outputting in straight html) in less than 30 minutes using google and searching this forum. I do not consider myself a programmer, I am having fun with my own test though.

I don't think I could complete steps 7 and 8 myself at this time, but everything else seems somewhat simple to me at least and I believe I could complete steps 2, 4, 5 and 6 in about 30 min each with the use of google and forum searches. Am I way off?

Re: Testing a new programmer?

Posted: Thu Mar 11, 2010 4:21 am
by papa
If I would hire I would look at quality and not stand over the programmer's shoulder with a stop watch.

Re: Testing a new programmer?

Posted: Thu Mar 11, 2010 5:00 am
by Eran
I do not consider myself a programmer, I am having fun with my own test though.
Why are you writing a test for a programmer if you are not a programmer yourself? you can only find someone that matches your abilities this way. Either that or you can't tell if they passed or not

Re: Testing a new programmer?

Posted: Thu Mar 11, 2010 8:25 am
by curtisj
If I would hire I would look at quality and not stand over the programmer's shoulder with a stop watch.
The intent is not to stand over with a stop watch. Time required is only one factor. If one person can do it in an hour but it is really sloppy and one person can do it it 3 but have well orgranized files, seperate config files, etc there is a big difference. Telling them I am timing them I believe also puts a little bit of real world pressure on them...clients are always timing us.
Why are you writing a test for a programmer if you are not a programmer yourself? you can only find someone that matches your abilities this way. Either that or you can't tell if they passed or not
That is why I am coming here for advice. I have seen enough files and applications to know what is garbage and what is good. How would you suggest I find someone that has abilities greater than mine...that is what I am looking for.

Also I was not just planning on looking at time and code, but also how they communicated, was not afraid to ask questions, how they work under a bit of pressure/deadline, and how they problem solve. If anyone has some suggestions on how to test...lets hear em.

Re: Testing a new programmer?

Posted: Thu Mar 11, 2010 2:50 pm
by Darhazer
Telling them I am timing them I believe also puts a little bit of real world pressure on them...clients are always timing us.
IMHO* they are timing the management, and it's manager's responsibility to manage client's expectation, to react on possible delays and to lead developers in a way, they (the developers) provide realistic timeframes to him and are doing their best to fit in the deadlines, informing them that they cannot reach the deadline, because of a and b, at the time they realize this. Because, from my experience, developers usually know they won't finish the project, but they still say 'no problem, everything will be allright' and they do not care about client's expectations and their deadlines.

IMHO* your test should not be oriented to the end result (working application), but to the process of solving. You should see the coding style, the way of thinking, the level of knowledge and experience. I really liked 2 tests I've passed in my career.

First one was to create an address book, preferably without using a framework. I've made it extensible, with possibility to have multiple addresses with just few lines of code. The model was made in a way it can handle multiple addresses, but it was not a requirement, so in the presentation there was only one address (which was retrieved with call to a function, with argument for address identification, by default giving the default, and in the case, the only one, address). The company called me next day :)

The other was a piece of code. They've just asked me what I dislike in this code.

I've passed a lot of PHP tests. Those 2 are the tests that gave me positive opinion about the company. Remember, not only you are choosing a developer, but the developer is choosing the company.

So, when you are hiring, the most important question is what you are looking for. And you may think the answer is obvious - someone who can do the work. But someone who can, it not the one who will, nor it's the one who will do the work you have in the company after a year or two. It's really important to rate correctly the skills, interests and the potential of your candidates. The emotional intelligence, I'm sorry if I'm calling this wrong, but I really have no idea how it's called in english, is often much more important than the technical skills. You can hire someone who will made your test for half an hour (I've completed most of the test I've been given for less than a half the time they've given) and still he can be slow at performing the daily tasks (because they don't challenge him or he just do not feel comfortable without someone senior to him, in terms of technical skills) or just leave after 2 or 3 months. And there are great products, with code far away from being best, from people that have no enough experience in building software, but have great will to make it and bring it to the world.

All of this is my opinion, and I've be grateful for any critique on it. Despite my young age (I'm in my 25th year), I have to choose developers, I had to 3 years ago when I was the only C++ developer in the company, I have to now, when I'm a project manager, so this is a question I'm interested in.

---
* IMHO - In My Humble Opinion

Re: Testing a new programmer?

Posted: Thu Mar 11, 2010 3:06 pm
by Eran
Very good insights, Darhazer :)

Re: Testing a new programmer?

Posted: Thu Mar 11, 2010 9:18 pm
by Luke
That is a lot to ask of somebody who doesn't even know they will get the job. If I were asked to do all that I would say "thanks, but no thanks". I think you can get a better idea of how good a programmer they are by talking to them and by looking at what they have contributed to the PHP community. For instance, it is obvious that I am active in the PHP community by googling me:

http://www.google.com/search?q=luke%20visinoni