Coding Challenges - Are they helpful?
Tags: interview, career, webdev
Published: 2020-08-10 17:31:41

Originally posted on my personal blog: [Coding Challenges in Interviews](http://alicki.me/blog/coding-challenges-in-interviews/)

The pandemic has changed life in many ways for millions of people. For some, these changes include loss of jobs, inability to find work, and now going through the interview process. Hiring managers are increasingly pressured to find amazing talent, sometimes replacing a previous employee, and other times filing gaps the team naturally lacks due to skill differences. That statement, while not a new concept, is also followed by the fact interviews are being done differently these days for most companies, and there is a problem.

The problem? **Coding Challenges**.

## The Premise of a Coding Challenge

Coding challenges, at the heart of their design, are to test the specific knowledge a candidate has in a particular language, solving a particular problem, or worse, a set of problems. You see the issue yet? Let's go further.

Coding challenges are to gauge your ability to think in a short amount of time, solving problem(s) that exist in a vacuum. And for the most part, your solutions should fit the ideals of the team you're working with. You'll be assessed on things like how the problem is solved, how long it took you, how well structured things are - but with manufactured problems that rarely completely apply in your day to day when building a real-world project. Let's face it, MVP's exist for a reason; businesses operate on budgets and time crunches. That deadline your project manager gave you leaves little room to design your absolute best code.

Your documentation / code comments, your method names and implementations will be judged. Should this method be static, what about private or public, does it even matter? Are they judging me on how well it's polished and designed or how quickly I was able to throw something together to solve the issue?

The above problem can be solved by reaching out and getting clarity, but be cautious. Asking such a question may lead to the company doubting your ability to be a self-starter, or if you can get things done without much hand holding.
##What is your time worth?
![What is your time worth?](https://dev-to-uploads.s3.amazonaws.com/i/q2l6ehakhsa99sniyr5e.jpg)

Most of the time, the person sending you the coding challenge will claim "this shouldn't take more than x amount of time". This is where you begin making the decision of if it's even worth it. Is a one hour challenge acceptable? How confident do you feel about getting things done? Since the person sending the challenge said this should only take one hour, what if you reach the one hour mark and realize it's closer to a three or four hour challenge? Or worse, you need to take a step back and plan things out.

The "take home" challenges give you a little bit of wiggle room to obviously go over the time limit and go at your own pace, but the timed challenges? Not so much.

The timed coding challenges usually require you to log into some new system, create an account, read over the example test, and then proceed to the real test where you'll be given a workplace to do your work (or for the good sites, a git repo to push to). Once time is up, it's up, and whatever work you did will be submitted regardless of accuracy or completeness. These are harsh and can be great stressors on anyone.

So what is your time worth? Are you willing to invest four to five hours of your day going through a coding challenge with the possibility you won't even get the position? Keep in mind the phone / video interview time investment as well.

>You can't ask your plumber to put together a sample of the fix, and certainly not without payment. Why should companies be allowed to ask the same of you?

##Are coding challenges helpful?
![Are they helpful?](https://dev-to-uploads.s3.amazonaws.com/i/ra2iwmm36tscmifl0h2a.jpg)

To fairly answer this question, we have to understand a few things

* They are designed to measure at least a basic understanding of the technology stack the company uses.
* They require problem solving of some arbitrary situation, thus giving insight to your problem solving skills.
* The solution you implement is to be reviewed by the people you work for; they get to see your thought process and if you'll fit with the team.

Given the above, a company can move forward on a candidate that bests matches their vision on how the challenge should be completed, and easily pass on others. It's a great win for the company, less so for the candidates. In this way, the answers is YES! It's helpful, but only for the company.

One must keep in mind the interview process is actually a two-way street. You're seeing if the company is a good fit for you; benefits, pay, culture, work ethic, and so on. They are seeing if you're competent enough and fit the culture as well. The coding challenge often cuts the interview process short and doesn't give candidates the chance to really prove their worth if they perform "poorly".

##What's the solution?
![How do we fix this?](https://dev-to-uploads.s3.amazonaws.com/i/v7bcu8fstxaf3r6oq0f4.jpg)

The thing is, companies have to have some sort of way to verify you actually know what you claim to know, beyond presenting your resume. Many have turned to coding challenges as a way to measure and validate this, and for them, it makes sense and is (inaccurately) viewed as efficient. So is there a solution that benefits both the company AND the candidate?

Yes. References and prior projects. Utilizing the people you've worked with in the past helps provide honest feedback that speaks to your abilities to do the job. Looking at your prior work and your specific involvement helps set the tone for what you are capable of. But this requires having lengthy discussions and explanations, something some companies lack the time for.

##Github and prior experience are your tools

But what do we do when we don't have prior experience, all of the projects are under an NDA, or we don't have any Github links to show? You reassess the position you're applying for and ask yourself if you're a good fit, or you work towards fixing the holes. Take time to throw up some projects on Github (admittedly, after 15 years, I only publicized my repos in the past two months), work on projects that include technologies the companies in your area are seeking.

There are companies that are willing to forego the coding challenges if the candidate can prove in other ways they are competent. Plain and simple, you'll need to invest time and energy into making sure your tools are up to date and ready to be presented.

##Conclusion

I hope this article will serve both of my target audiences; the candidates and the companies. Maybe it's time we step back and reevaluate how we apply to jobs, and how we vet candidates in a fair, honest, and balanced way. Let's all work towards a better future for those of us web and software developers. I'm of the opinion no one should work for free and with coding challenges seeming to require a chunk of our time, companies should offer compensation at the desired hourly rate or take a different approach.