To keep up with my theme of software engineering job interviews, I’d like to explore an alternative to the more traditional process of technical interviewing.
The way the majority of companies determine if you’re skilled enough to work for them is by asking technical questions, having you do a programming challenge or do a case study.
While these can be somewhat telling methods of seeing the candidate’s skill level, I believe there might be a better way, that satisfies the company’s needs and provides a benefit to the candidate at the same time.
Hire them, then see if they are good
But Jeremy, my company wont pay for a dev without knowing if they’re good enough for our company?!
Which my response is, sure they will, thousands of companies do this all the time without realizing it. It’s called a freelancer.
Companies all over the world are hiring freelancers to help where expertise is needed, their in house devs are too busy to implement a feature, etc… Why not use this as a way to hire full time engineers?
Many companies do this already in the form of contract to hire. A process where they hire you on temporarily to write code, and if its a good fit they will bring you on full time.
What would this process look like?
Instead of generic positions, companies would post job listings with a specific project associated with it. They have a specific need in mind for the candidate anyways, so why not have them do some work on that from the beginning?
Let me outline a very basic example:
Big Retail Company
Position: Software Engineer
Description: We’re hiring a software engineer to join our backend team. To test your abilities we would like for you to optimize a section of our API that coordinates our in store and online inventory.
Skill level desired: Intermediate in GraphQL, with additional professional experience in software engineering.
From there, the recruiters would pick candidates based on their proposals, their existing portfolio on github, and their overall fit for the company discovered in behavioural interviews. The candidate’s compensation ONLY for this freelance portion, would be part of the proposal, with room for negotiation. Final salary would be discussed after the project is completed and if an offer is extended.
Why would we invest this much time and money into a candidate if we dont know it will be a good fit?
You actually will get an even better gauge for how good of a fit the dev will be if you pay them. And they will be more inclined to accept an offer if they enjoyed working for you.
Why do you think it will work?
Because companies already do this. It’s called an internship.
Unfortunately I did not take an internship in college. I think that decision will haunt me until I get a full time job. And now, its too late to get an internship somewhere. I’ve graduated, and everyone wants interns who are still in college. And to be frank, I’m worth more than an intern because I’ve graduated.
Why would candidates want to do it this way?
Because they’ll get paid, they’ll have additional experience to add to their resume, and have a greater chance at getting a job offer.
Technical screens, challenges, and case studies are stressful, and don’t always reflect the true ability of the candidate. People with test anxiety, performance anxiety (ie programming in front of someone else be it on a computer or whiteboard), or just poor interaction skills might bomb an interview but still be excellent devs.
I guess this is mostly just my way of saying internships shouldn’t be limited to only students getting a degree. There should be internships post-graduation.
What do you think? Would it work?