I recently had a phone interview with a company. After that phone interview, I was told to complete a short programming assignment (a small program; shouldn't take more than three hours).
I'd proceed with caution. Evaluate the relevancy of the challenge to the job, and be sure future reimbursement from the employer will make 3 hours of your time worthwhile.
I question the value in these types of tests, and would rather judge someone on their past accomplishments. A predefined short task can not tell the employer anything about what you can do. Only what you can not do, and that can quickly be determined with a few questions over the phone.
Testing does have it's place. Ask yourself the following questions about the test, and respond accordingly.
- Is the test fair given your current career level?
- Does the test have a clearly defined correct answer?
- Does the interviewer have an interest in your potential as a person or are they showing more interest in the test results (i.e. hiring agencies are terrible for this).
- Does the test represent the kind of work you would enjoy doing or is it an ambiguous skills verification (i.e. test if you know Java syntax).
I'm only directly instructed to complete the assignment and turn in the code.
You've just answered your own question.
Immediately I planned on throwing it on Github, writing a test suite for it, using Travis-CI (free continuous integration for public Github repositories) to run the test suites, and using CMake to build the Linux makefiles for Travis-CI.
No, that's not what they asked you to do.
That way, not only can I demonstrate that I understand how to use Git, CMake, Travis-CI, and how to write tests, but I can also simply link to the Travis-CI page so they can see the output of the tests. I figured that'd make it a tiny bit more convenient for the interviewer.
I'd be careful demonstrating skills too early or too late in the interview process. If you feel you didn't do well in the interview, and are now trying to compensate then it's not going to work. On the other hand, doing too much when not asked too demonstrates over eagerness. This could result in the employer countering with a lower wage offer then you were expecting.
However, I'm a bit worried that doing all this for a relatively simple task would look bad.
Yes it looks bad. Solving their challenge with one line of code will be far more impressive than a full flushed out project.
From my experience this is not how you win the job interview, but it's one way to lose the job. The code test is a quality control issue. Every company that uses code tests when hiring people is doing so, because previously they weren't using code tests. They had a bad experience of someone slipping thru the cracks of the interview process that should not have.
They will take your source code and pass it around the office. People will comment on it, and what you do not want them to say is "He made this mistake? but was spending time using Git, CMake and Travis-CI. What an idiot for missing this mistake."
That's it. You've lost.
They want to know you can code, because they can't teach you that. Git, CMake and Travis-CI can easily be taught.