Wednesday, December 06, 2017

Robo-recruiters and Github commit history

Some time ago, when I was looking out for a job change, I had an interesting conversation with a recruitment consultant X.

Now most of these consultants just look for buzzwords in candidate resumes, without understanding the true meaning of those requirements. In the days of linkedin and other tools, this search has been made even more pedestrian. So you hear of cases, like a recruiter asking candidate why he has no experience with NoSQL even though Cassandra and Redis are on the resume, or recruiter assuming that candidate is hard core iOS developer because he wrote Java and mobile web development on resume, even though iOS or Objective-C or Android wasn't mentioned.

Cases like the above are understandable - in the ever changing technological landscape, technologies come and get outdated every 2 years, and keeping track of which technology is used for what is a hard thing to do. This makes the recruiter's job challenging. For a consultant working with multiple partners, it can get only more confusing.

However, my conversation with X was different at a fundamental level - the kind of contributions and skills I had. Though I had worked at multiple startups on many key projects, and am otherwise a high contributing user on StackOverflow, recruiter X began questioning me on my open source contributions. Specifically, why the commit history on my Github was sparse. I mean an open contribution is an open contribution, be it github or stack overflow, and I'm anyway well conversant with the major technologies and paradigms of the day.

Though I could convince X that I had the skills the job required, this episode made me realize the kind of power these robo-recruiters hold. Most of these robo-recruiters don't understand technology or technological concepts, and yet, they have an immense amount of power in the hiring decision at the onset during shortlisting. The fact that most robo-recruiters are working to maximize their commissions, and not the applicant's interests, doesn't help either. So, the idea germinated - write a script that creates a commit history, to bypass in future the set of rob-recruiters who overlook other competencies in absence of Github activity.

Now git provides two excellent environment variables, which it uses while setting the time of a commit:
GIT_AUTHOR_DATE
GIT_COMMITTER_DATE

So all we need to do is execute the below in a loop, with commit dates in past:
export GIT_AUTHOR_DATE=$COMMIT_DATE
export GIT_COMMITTER_DATE=$COMMIT_DATE
git commit -m "commit for $COMMIT_DATE" --quiet

Relying on this information, I created a basic script which on execution would create a fresh git repository, add commits from a year in past to an year in future, and push them to your github account. The number of commits per day would be random, and the number of lines per commit would again be random to fool anyone using naive programmatic bots.

So, all that is needed is download the script, and run it as
sh script.sh <Your name> <Your primary github email> <An empty repo>

And viola! You now have a github commit graph, ready to bypass the next Robo-recruiter :)



PS: If you are wondering why I am pushing the commits in two phases in the script, it is due to the way github's streak feature is implemented. It only checks for the top 1000 commits in a single push for the purpose of creating a commit graph, which I detected by trial and error. So, in the interest of time, I decided to lazily copy paste and execute code again rather than cleanly breaking this into chunks of 1000.

PPS: Tested on Mac, comes with no warranties.
You can Download from Github

No comments:

Post a Comment