For almost 4 years now I have been a web development contractor.
To me, a software contracting job is about bringing in extra resources to help you or your company solve a problem. Something you can’t solve or it’s too economically disadvantageous to solve by only relying on your current staff. Kinda like if you had to add a downpipe to your guttering - you probably will get it done, but chances are it’s gonna take more time, money, and pain than if you had instead opted for a handyman to do the job.
Needing a contractor automatically implies a few things. First, you actually have a concrete problem. This might be rolling out a new feature, fixing some old bugs, or improving an existing user journey - a project in a sense. Whatever it is - you know exactly (or nearly) what you want. Second, your engineers can’t be allocated to the task, they have better things to do. Third, you want to bring someone on board who knows their shit. You are not interested in investing in their future or growing an in-house team. You just want to get stuff done. And finally - you have a budget and a time constraint to work with.
So the question is - How the heck do you know if the person you are interviewing is going to do a job of acceptable quality, on time, and within budget?
Well, how do you work out if the handyman can do your guttering?
I would instinctively ask them about the work they’ve already done. Have they worked on guttering before? If yes - what kind? Maybe they’ve worked with plastic pipes or perhaps they prefer old fashioned copper systems? Hell, if the convo’s going well, I might ask them to show me some of their previous work! Why stop there - ask them about how they are going to carry the job out? All good questions, no doubt, and it seems most people will take a similar approach when looking for a handyman.
So why is it then, when I apply for a software contracting job in your company, you are asking me to solve a 2sum problem? Why do you insist I implement a linked list? How is me inverting a binary tree helping you decide if I can build your GraphQL API? Does it really help you work out if I’ll be able to fix that mess of a legacy networking library your ex-principal engineer left behind if I can convert Roman numerals to Arabic and back?
No, none of this will help you figure it out. Just like it won’t help you work out if the handyman can fix your guttering if you ask them to demonstrate to you how to climb a ladder, drive a screw, or fix a light bulb.
If you need to ask these questions at an interview, then you most certainly don’t need a contractor. You want permanent employees. What you need is to grow the organisation and have people you can continuously invest in. You don’t necessarily have an immediate problem requiring you to bring in extra help. It’s either that or you just heard FAANGs are hiring this way, so I’mma do it too.
I’m not 22 and definitely not fresh out of gradschool. I have been around for a while and I know my shit. I’ve seen things and I have no problem showing you my work or walking you through it. I have no illusions of being a genius or the best and that’s reflected in my day rate. I’m a contractor with real world experience. Experience from the same world your paying customers live in - not the imaginary problems and shitty data structures one.
So please don’t waste my time with your pretend problems and ego scratching. It’s not a contractor you are after.