After a video chat with the hiring manager, I scheduled a time to do an online test for GitHub.
In a separate email, I was informed that the test would involve writing a simple NodeJS AddOn, and that the particular task didn't require specialized domain knowledge beyond knowing C++.
The email informed me that the code for the test was developed against a specific version of NodeJS, which was older than the available current version, and that I would be sent a link to the GitHub repo, which would be accessible for a limited time.
Finally, the email said there would be a README file that contained specific instructions for setting up the development environment.
On the day of the test, I received an automated email that contained a link to the GitHub repository, as promised.
I cloned the repository onto my laptop. There was a README file that contained a description of the problem I was supposed to solve. The file contained information about how to run the unit tests to exercise the project I was supposed to modify, but there were no instructions on setting up the environment to run the project.
I spent a significant amount of time and effort just setting up the development environment, as I had to scour the GitHub forums to resolve my issues.
I only have a passing familiarity with NodeJS and had never written a NodeJS AddOn, which I admitted readily to the hiring manager. However, it was really unfair to have to struggle with development environment set-up issues in addition to having to work with a new technology on a time-limited test.
That stress over the development environment was completely unnecessary.
On top of that, one of the unit test scripts contained an output formatting error. This bug in the test script resulted in the failure of the unit tests because the output lines it produced did not contain carriage returns, even though the output lines produced by the test from the solution logically matched the output lines of the file containing expected output.
Given that the expectation was that the unit tests were supposed to be a black box, it was unclear whether the bug in the test script was an intentional bug I was expected to fix.
Dealing with these set-up problems and debugging the unit test script issues ate up a good chunk of the time I was given to access the test repository. Although I solved the problem itself, I was not able to make a clean submission for my test.
In conclusion, this test had one of the shoddiest set-ups I have ever experienced.
Coding tests should be fun, and while I learned a new technology (NodeJS AddOns are cool!), the stress from the set-up problems with which I had to deal – problems that could have been solved with better instructions – did not make this test fun.
Write a NodeJS Addon, and make sure it passes all the provided unit tests.
The following metrics were computed from 1 interview experience for the GitHub Software Engineer role in Oakland, California.
GitHub's interview process for their Software Engineer roles in Oakland, California is extremely selective, failing the vast majority of engineers.
Candidates reported having very negative feelings for GitHub's Software Engineer interview process in Oakland, California.