The interview process started out pretty normal.
- Resume application
- Technical questions via email (~2.5hr, by the time proofing etc is complete)
- Recruiter conversation (0.5hr)
- Team lead 1:1 (1.5hr)
- Open Source work done to their (for profit) product (30+ terrible hours)
Lets just get right to the technical session:
I was informed that the interview would be: 1hr pairing session, with 1-2 hours after to wrap it up in a nice reviewable commit.
In the 1hr pairing session, I barely got an introduction to their app. The feature requirement was poorly spec'd and the interviewer decided to make some judgement calls on what it actually entailed.
After a 2 week period I had submitted a diff of: 77 changed files with 514 additions and 94 deletions
This involved, learning everything about their app. Custom features, setup, fixing their terribly slow spec suite. And writing my new feature to work appropriately with every edge case, and all other possible features. This also involved them having to bring in additional code reviewers to handle questions the original interviewer did not have answers for.
It involved writing documentation for unspec'd requirements- of which I was marked poorly for not having guessed the correct assumptions about unspec'd requirements.
It involved managing backwards compatibility on all their API endpoints to manage this new feature.
The interviewer informed me after the fact that there was a 3 review cut-off. Of which two of my reviews were done after I had pushed un-finished code (because commit early, and commit often), but had not asked for a review. So the reviewer reviewed unfinished broken code, and of course I received bad marks for that.
The whole process was a complete and utter disaster. To the point I was just waiting to tell them I was pulling out of the interview process entirely.
I don't believe anyone on their current team, could have done this issue in 3 hours, let alone someone who had to learn the codebase starting with no context, and sporadic support.
As a matter of fact, being open source, it did actually take one of their employees an additional month+ to complete the feature as required.
Do not do free work for them.
In Canada this type of interview is actually illegal. Any work a company actively uses after an interview, is required to be paid for.