Fellow software engineers: have any of you had to write a do-it-in-your-own-unpaid-free-time "programming challenges" that should only take a day or two? Well, neither have I until it came time for me to look for another job.
Apparently, it is the new hot thing to do nowadays. Companies are asking for candidates applying to engineering jobs to complete a programming test
BEFORE asking them to come in for an in-person interview. You might think, oh, what's the big deal? So, you spend 1 or 2 days writing a test, but then the company really knows how good you are and sure enough, they will want to hire you after they look at your beautifully designed and elegant code! Right? Sadly, my dear hopeful job-seeker friends, not so, not so at all. I have two stories to offer:
Case 1. About a month ago, company X, that shall remain unnamed, contacted me through my agent. They wanted to have a phone interview. According to my agent, the position I applied for has been open for 4 months or longer. Supposedly, company X has been dissatisfied with the quality of candidates. I am not a big fan of phone interviews, but it saves everyone time, so I agreed. I spoke to a very pleasant VP of engineering. At the end of the phone interview, she informed me that the next step in the interview process is for me to complete a programming challenge, which should ONLY take about a day or two. The challenge, for those of you that know my field, was to write a ticketing server, a client/server program that must work on two operating systems, Windows and Linux. But that is not all - I was also to read a very technical 12-page paper published by researchers from 4 different universities to be discussed during in-person interview (if there was to be any).
I liked what the job had to offer and decide to do the programming challenge. I spent solid 2 days working on it - the two days that I could have spent applying to other companies or interviewing elsewhere. It was by no means a trivial task, but I finished it in time. I spent another good 4 hours thoroughly reading the 12 page paper and was brought in for an interview. It is just so happened that one of the people interviewing me was intimidating the hell out of me, so after supplying the correct answer to his question and seeing a surprised look on his face, I gave other possible (albeit not as efficient solutions) to the problem he gave me. The next day, I was told by my agent that I wasn't as strong in the area company X wanted strength in and they were to continue interviewing other candidates. They would then choose between me and the three other people. A month later, I heard that the company did not hire anyone, but transferred an internal candidate to this position instead. By that time, they must have interviewed at least 2 dozen people if not more. It is hard to believe that not a single one would be worthy of working at company X.
Case 2. I applied online to company Y. In response, I received another request to compete a programming challenge, which once again, should only take me a day to complete. The request came from someone at HR. I emailed her back saying that I would at the very least like to speak to the hiring manager on the phone first. I explained that I want to make sure that my background and skills were a match. Not surprisingly, I never heard back. What would be the chances that my programming assignment would never make it to the hiring manager? I think very high.
What did I take away from these two experiences? It is very likely that company X used different people to do different pieces of the code and then had an internal candidate put them all together. Clever, isn't it? Against the law, I bet, but how can I prove it? Besides, company X can argue that I did this entirely voluntarily.
Now, let's take a step back and suppose company X decided to hire me. Would I have accepted? It is a tough one - maybe, but maybe not. I need a job, but I also want to work for a company that treats their employees in a cordial, corteous manner. Sure, the companies need to weed out unqualified candidates, but making someone slave for a few days is not a reasonable practice. I think giving a candidate one hour test during an in-person interview is a much better way to tell how good he or she is. It also doesn't breed any resentment or a feeling of not being treated justly.