Ayende @ Rahien

Refunds available at head office

Quick FAILs in code questions

Sometimes it takes very little time to know that a candidate is going to be pretty horrible. As you can probably guess, the sort of questions we ask tend to be “find me this data in this sort of file”.

Probably the fastest indication is when they send me projects like this:

image

image

Now, it is possible that someone skilled will send us real projects like that, but the experience so far has been that this isn’t going to be the case. If you have someone sending a UI project, it usually indicates that they can’t think about it in any other way.

The code they send pretty much justify this concern. Some code snippets from those projects:

image

Yup, this is the kind of error handling I want to see. Just for fun, if there hasn’t been an error, this function would return a comma separated string of values.

Which make it just slightly worse than:

image

And then we have this:

image

I guess someone really like O(N**2) on 15 TB files.

And then there is this:

image

I guess we have different definitions on what configurable means.

And then there was this person:

image

Yes, they did send me code inside a PDF file. That was the only way that they could find to send code around, I’m guessing.

Comments

Bartosz Adamczewski
01/27/2014 10:10 AM by
Bartosz Adamczewski

@Ayende, This is insane, I'm lucky to say that I have never ever had candidates doing this sort of things. Sure the problem set was different and some people pulled out extremely weird things but at least the had the dignity to say "well I don't know I guess I'm not the right pick".

So all in all I had more skilled people then clueless :)

Damien
01/27/2014 10:12 AM by
Damien

I think the next file down in the first example is also sending me warning signs.

njy
01/27/2014 10:14 AM by
njy

@Oren: regarding the PDF, well... at least it wasn't a PPT :D

Ollie
01/27/2014 10:17 AM by
Ollie

Does the quality of candidates have any relation to the renumeration you're offering?

Frank Quednau
01/27/2014 11:24 AM by
Frank Quednau

What ever happened to JFHCI?

Honza Brestan
01/27/2014 11:40 AM by
Honza Brestan

We once had a guy sending Java code (several classes) in one .docx. How do people come up with these? Needless to say the quality was not up to par :)

Augi
01/27/2014 12:07 PM by
Augi

When reading your blog-posts, I sometimes feel like a fool. Now, I'm feeling like a boss :-)

Pierre-Alain Vigeant
01/27/2014 03:25 PM by
Pierre-Alain Vigeant

I used to create MainForm.vb back when I was doing Winforms 10 years ago. Bring memories.

Chris Marisic
01/27/2014 04:06 PM by
Chris Marisic

The last part, the pdf file thing. I have to point out that email filters can be highly aggressive at blocking anything that looks like software code. Many scanners even look inside zip files now at contents, sending zip files that are encrypted are another common thing intercepted. Code in the end, is text files, so delivering them in a text medium isn't that terrible.

Ayende Rahien
01/27/2014 04:13 PM by
Ayende Rahien

Ollie, We pay somewhat above market rate, so no.

Ayende Rahien
01/27/2014 04:14 PM by
Ayende Rahien

Chris, Yes, it is terrible. I can think of at least a dozen way to send in code. For example, a public github repository, sending them in a .notazipfilehonest extension, sharing via dropbox, google drive, etc.

Melmak
01/27/2014 04:42 PM by
Melmak

And, how much is the salary? In my opinion, it is good to know it. Thanks :)

Hmm
01/27/2014 06:02 PM by
Hmm

Ayende how about doing some code review again? I loved your code review posts the best. I vote for this new 'reference app' - https://github.com/MarlabsInc/SocialGoal

Nikola Radosavljevic
01/27/2014 09:32 PM by
Nikola Radosavljevic

Ok, I'll own up. What's wrong with MainForm naming convention? I've used it few times although I mostly used frmMain (following same convention for control names). Although I haven't done any WinForms development for few years. There's no denying, it's difficult to find good engineers. Candidates you've shown all seem like they just got into college or got out of a bad one. They're ready to cut as many corners as needed to have just one test case pass. There's no cheap way around it. Companies have to invest in employees and try to keep them when they realize their new skills can bring them more money.

nelson
01/27/2014 11:48 PM by
nelson

The problem isn't with the MainForm - the problem is that the prompt didn't necessitate any UI elements: so why include them? A console application would be more appropriate as a simple driver, with the logic of the application being contained in a class library. Bonus points for including a test class library.

Ayende says it best with this line: "If you have someone sending a UI project, it usually indicates that they can’t think about it in any other way."

If a person is asked to write some simple logic, and the first thing they go to is a WinForm template, it indicates that they perhaps don't understand the separation of code and UI framework. The logic that they use to find data within a text file should not have any dependencies on the user interface. The code should reflect, and enforce, that.

Carsten Hansen
01/28/2014 06:44 AM by
Carsten Hansen

Maybe use paper and pencil instead. Thats the way I had to pass my exams :-)

You are forced to structure your programs.

I have a slight idea that once I had to embed my code in a Word document and comment it for passing an exam.

Dom Finn
01/28/2014 12:40 PM by
Dom Finn

We have the same problem, I talk to other Dev Leads in the area and they all face the same problem :-(

I thought a good way to filter these people was to have a 10 minute phone interview first. It does filter the bulk of fiends but some still manage to talk big and then produce this tripe.

I wonder whether some sort of automated code scanner that reads homework is in order. Something that filters out applications that contain common calamities?

Saurabh
01/28/2014 03:10 PM by
Saurabh

In-fact why even a Console App? I would prefer to send code with unit tests, ab easy to understand proof of what all scenarios were concerned when the code was written.

tobi
01/28/2014 03:23 PM by
tobi

Well, I see that on Stack Overflow every day. Unfortunately, they removed the close reason "Must demonstrate minimal understanding of the situation". I hit that all the time.

Nikola Radosavljevic
01/28/2014 04:34 PM by
Nikola Radosavljevic

@nelson, thanks, then I see the problem. I didn't know what the task was for the interviewee, so assumed problem was naming convention. Although, it's not necessarily indicator of something wrong.

nelson
01/28/2014 08:52 PM by
nelson

@Nikola: if the prompt asks for an application that reads from a specified file, I wouldn't hardcode the file path itself into it in any way. In addition, tests are not really an "application." Of course, this depends on the prompt. If the prompt asks for a method that has a particular signature, or a certain kind of API, then a unit test project only would be appropriate. But from what I understood from the few details of the prompt posted, it seemed like it needed to be an application that can read from any arbitrary file that is in a particular format.

nelson
01/28/2014 08:53 PM by
nelson

Sorry, that was a reply at Saurabh, not Nikola. Haven't finished my coffee yet :p

Craig
01/29/2014 04:07 PM by
Craig

If I'm whipping up a quick-and-dirty prototype I will often create a WinForms app. Why? Because it's easier than writing a bunch of command-line parsing code that allows me to tweak settings and variables as I run through different testing scenarios. Try not being so high-and-mighty arrogant folks.

Ayende Rahien
01/29/2014 05:40 PM by
Ayende Rahien

Craig, And would you send such quick & dirty code as the answer in an interview type situation? One where you have all the time in the world? Or would you clean it up before hand, knowing that this is what you are evaled on.

Paul
01/29/2014 09:31 PM by
Paul

It's a shame you wrote this post in this manner rather than abstracting what you receive and trying to help people. Male sure you use the right project for the job, don't use bad error handling, know how to easily share solutions quickly because it might help you in interviews and definitely will help you day to day. This just comes across as "look at what I have to put up with" which I don't think you really meant.

Andrei Rînea
02/24/2014 12:22 PM by
Andrei Rînea

I agree with Paul. This post has been written in the same manner like the solutions mentioned in it.