BrainBench, Prove IT, et. al.

To all recruiters & employers Listen Up!

Online testing services for software developers are useless, please stop using them. These exams do a great disservice both to the developers and the prospective employers who rely on them.

Lest you think that maybe this is a "sour grapes" rant, I can assure you that I have taken these types of exams many times during my career, almost always scoring in the high 90s. In spite of my scores I would still recommend banning their use for the following reasons...

Reason #1 - Not all people are honest! There is a significant group of people who cheat on the exams, they have books open, help files available or they simply copy and paste answers into a live instance of visual studio or SQL server and test each answer to find the correct one. I can't entirely blame them, they are fighting for an opportunity to get a job and these questions can be pretty obscure, not to mention that most developers don't bother committing to memory things that can easily be "looked up".

Reason #2 For those of us who who don't cheat we now risk having a good solid score of 88% looking terrible to employers in comparison to scores of those in group 1 above.

Reason #3 - Over the years I have found "many" questions on the exams that had wrong answers marked as the correct ones. I have had to call the makers of the exams in almost every instance to help them "correct" an answer or explain why their answer was not correct.

[update 6/13/2009 - I once again had to take a Prove-IT exam. I found two incorrectly marked answers, one on the VB.Net exam and another on the SQL 2008 exam. I have spoken with "Prove-IT" and they scrubbed the answers and agreed with me that two of them were "incorrect". They assured me they would fix the exam, but they were "unable" to correct my scores! I am currently working that out between Prove-IT and the recruiter. I also asked Prove-IT whether they were planning to send out letters to past exam takers who might have received lower scores than they were entitled to...I have yet to receive a response]

>[update 6/24/2009 - Prove-IT (Kenexa Inc.) finally agreed to update my scores after several discussions where they tried to convince me that they had no access to the data ...hmm. I would STRONGLY encourage anyone taking an exam to copy the questions and possible answers and check them for accuracy after you complete the test. While waiting for this "correction" I was, of course, unable to submit my scores to clients and to my knowledge, Kenexa did NOT notify other exam takers of the possible scoring mistakes.]

Reason #4 - Many people simply don't "test" well, even though they are excellent developers. Why should they lose an opportunity to get a job for lack of a skill that isn't required in the job?

Reason #5 - Maybe the most important reason ... even if you don't cheat and even if you get 100% correct it is NO indicator that you are a good programmer, only that you have a good memory. Think of it like giving prospective writers of your biography an English grammar and spelling exam. Just because the writer gets a good grade doesn't imply that he is a good writer, it means simply that he is unlikely to make many grammatical or spelling mistakes, but the writing itself could easily still be boring, dull or incomprehensible!

Recruiters, please stop...if you want to weed out people who are incompetent or you want to know the technical knowledge level of a programmer then interview him yourself or work with someone who has the technical expertise to interview candidates in person and stop relying on easy, cheap and inaccurate testing services.

Read more...

Object-Relational Mappers (ORMs)

For 95% of software projects that the average developer works on in a business setting they provide ZERO value and in fact they cause far more problems than you might realize.

They complicate, obfuscate and hinder the performance of the application. In addition, they are frequently misused by developers who now think they can be sloppy in their database modeling and "fix" any problems higher up the chain. It flies in the face of good object-oriented programming (encapsulation) by moving knowledge of a class's data out of the class and into an ORM and it ends up costing significantly more to maintain this type of complexity.

The only benefit derived is that the original programmer gets to add Entity Framework, LLBLGen, NHibernate or any one of a dozen other ORM software packages somewhere on his or her resume while you get to pay for the experience.

Well, that and the huge headache you will have when they leave, because now you need to find someone to maintain that design and the first sentence you will hear from your new programmer will be "Um, well actually I think it would be easier to rewrite the software..."

Remember, only add design complexity when it actualy solves a real problem and when the benefit outweighs the cost.

Read more...