I am having an issue with this particular company's interview process and need some insight on what people think about this so that I can judge it more accurately.
Here's the situation:
After an initial conversation on a peer-to-peer recruiting platform and a phone call thereafter, I was assigned a take-home coding challenge that is using the same XMPP chat server that this company is using in production. I completed the assignment and went in for an on-site to present my solution and went through a standard behavioral/culture fit interview. From what I can tell, it went very well.
During the interview, however, they mentioned that the next and final step was for me to sign an NDA and give me access to the codebase so that I can implement a couple features on their site.
This caught me off-guard, because I have been actively interviewing for a while and usually when it comes to take-home project interviews, your work and your validation of the choices you made are enough proof of your ability to consider for employment. I politely questioned this, but they argued that it's different writing a project from scratch without any context to actually working with their codebase and seeing how they do things, which in theory I agree but I feel that it's not professional to use a candidate's work without compensation.
So my question is, how ethical or common is it to ask a candidate to implement a feature on your development site that can eventually be used in production?
Some facts that might help give context:
- This is a small ~15-person startup in the San Francisco Bay Area
- About half of the company's team works remotely, which may explain the extra vetting process
- Relatively new company that launched its product very recently (and therefore excusing poor interviewing practices?)
- They emphasized how they've needed these features for a while but haven't gotten around to them. During my presentation, the CTO insinuated that it's possibly a nice thing for me to work on.
- The task isn't trivial but it isn't specialist work either. It's about a day's worth of work, which includes getting familiar with the codebase.
Edit: Thanks for the input everyone. At the end of the day I responded that I had some concerns with the task being assigned and offered to prove my skills by other means if they really needed an extra data point. Will update with their response soon.
Edit 2: After the email, we got on the phone and had a conversation about how I felt about the exercise. The CTO was understanding and receptive to the two alternatives I suggested: either 1) implement these features and pay a fixed, reasonable price for my time or 2) rollback a feature that has already been implemented in production and have me build the feature.
In the end however, because (in his words) we were so close to the final step, we started discussing compensation for the role. It came as no surprise that what was offered was far below the market rate. I thanked him for his time and we went our separate ways.
I sincerely want to thank everyone for contributing your perspectives on this matter. What a waste it would've been had I held my tongue and implemented these features only to find out at the last minute that we aren't even on the same page with the compensation!