Brothers In Code

...a serious misallocation of .net resources

Is Your Next Programmer a Moron?

We have been interviewing for a .net developer position for quite a while - way too long in fact.  What I thought would be a quick interview process has turned into a very rude awaking.

When I was looking for a job I was contacted by a contractor with a position that interested me.  I was warned however, that the interview process included a 4 hour programming test.  Many bodies had been thrown at this test and very few succeeded.  I try not to be arrogant but I do like to think that I'm good at my job.  Plus I have no certifications and no big name companies on my resume so I usually welcome the chance to prove myself.  The test wasn't rocket science but it wasn't simple either.  It was a simple recursion/stack problem, some database queries, a basic dynamic web page problem, and creating a functional calendar.  It was a lot of time to give a prospective employer but when I got the job I thought the test was well worth it after so many other companies didn't even give me a phone call or an email.

OK, a year later I'm looking to clone myself.  As much as I thought the test was warranted, I also thought that 4 hours is a really long time.  I created a trimmed down version that was nothing more than sql queries and a simple databinding exercise.  After a few candidates we decided it was too data-centric.  My boss forwarded me the fizz-buzz question.  I just couldn't believe what it's author was saying; senior level programmers can't write this trivial block of code?  As more of an experiment than anything, we added in our own variation of fizz-buzz.

And this is where the horror starts.  The very next candidate came in, sat down for 20 minutes, and asked to leave citing "personal reasons" without writing a single line of code.  I couldn't believe it.  I examined all the possibilities: Maybe she didn't understand the mod operator?  I suppose you could do years of CRUD style programming and never need it?  Maybe she couldn't read English?  Maybe she was a programmer (the test is in C#)?  But then there was always the last option - this 10 page resume couldn't actually write code.

We had another come in and at least attempt it but also failed miserably.  Another came in and passed fizz-buzz, but couldn't write a database query to save his life.  Another came in and did do well on both fizz-buzz and the queries.  He didn't even know, but because he at least seemed like he had his head screwed on straight we were willing to train him.  But problems with his contracting house kept him from coming aboard.

I couldn't get over that fizz-buzz relies very heavily on a single operator.  I think it was denial more than anything.  I couldn't help but thinking something is wrong with the test instead of the candidates.   Consequently, I added another simple question.  It only required a boolean be returned if a second phrase could be made from the letters of the first phrase.  I figured if they couldn't do fizz-buzz I'd give them a second attempt.

Originally we had advertised only a 3 month contract and we theorized that the short contract was one of the reasons behind the substandard pool we were pulling from.  We upgraded the position to a 6 month contract to hire and called back a promising applicant that originally turned the short contract down.  I started with him just like I did with everybody else; I explained each question, showed him where the answers were (yes we display what the exact answer should look like), went over any hang-ups that I thought he might have, and reiterated that he can ask any question.  I didn't even get thru explaining my new anagram question when he stopped me and said something like "if this is the what you're looking for I don't think I want to work here."  I reiterated that it's OK if there were parts that he couldn't do.  He didn't care.  I brought him back to my boss and he asked what he didn't like about the test, he referred to it as a bunch of puzzle questions that he needed google for and that we should look at his resume to the systems he's "architected."  I walked him out and he described his (superior) interview process of asking questions about polymorphism and factory patterns.  I just wanted to slap him and say "Don't you understand?  It's people like you why we do this!  Yes you can use some big words and put fancy projects on your resume.  You can call yourself a senior developer and an architect.  But you can't write code!!"

On my way back to my desk I realized my blood was boiling.  I understood why good developers either can't find a job or can't get the pay they deserve.  I understood why so many projects fail.  I understood why I spend so much time cleaning up crap.  I understood why we have been trying to fill a position for 2 months.  It's because it would appear that the ratio of fake to genuine developer resumes out there is about 5:1 or worse!  And the really bad news is that these simple tests don't even guarantee that you have a good programmer.  They only tell you if you have a programmer at all. 

The moral of the story?  If you want to build a house, hire a guy that can hammer a nail.  If you want to build a car, hire a guy that can loosen a bolt.  If you want to build a piece of software, than hire a developer that can write programming 101 code.  Test your programmers! 

Comments (1) -

  • Ralph Wilson

    8/31/2010 5:07:48 AM | Reply

    Some of the best application/system/database designers I have ever worked with had, at most, a BA or BS.  They referred to the computer as "he", "him", "she", or "her' (depending on personal experience with the vagaries of males and females Wink).  They talked in terms of "Okay, so then your process passes me [fill in a parameter] and I do {whatever] and then return a success or failure notice to you . . . so, how do you want that notification phrased?"  They didn't use all that fancy, technical terminology but, instead, opted for fairly straightforward communication techniques.  Those guys and gals would put together systems that were maintainable, efficient, robust, and elegant in their simplicity.

    One the other hand (and, it seems, more and more frequently), I have encountered "developers" who know all the terminology and can abstract the heck out of a problem . . . but they wind up with convoluted, complicated, unmaintainable, fragile, and, frankly, ugly applications that make the user work for the app instead of the app working for the user.  Worse yet, I have even overheard a newly graduated Computer Science major turn in his notice immediately after his 6 month review (you know, the one after your first 6 months) with the comment that he expected to not only get a better review and a much larger pay increase but to have also been promoted to at least a team lead . . . after all, he had been there for 6 whole months and he should be "fast-tracked".

    I used to attribute my attitude toward many of my coworkers and most applicants to the fact that I had been in the IT profession too long . . . however, recently I encountered some guys who are young, fairly new to the profession, and also disgusted with many of those we have to deal with.  These guys have professional pride and they strive to continue learning their profession.  They seem to actually know how to do their jobs . . . and they seem to understand the concept of the elegance of simplicity.  They almost give me hope for the profession . . . they actually seem to care about their professional reputation.

    Testing IS essential . . . and when you find someone who is not only willing but anxious to take the test, you may have found that "diamond in the rough" that can be polished and formed into something akin to the "Hope Diamond", so to speak, that will give you hope for the profession.