How To Ace The Coding Challenge ⭐️
In this article, I aim to help all engineers who may be intimidated by technical challenges and give them more power to deliver a successful challenge, regardless of their years of experience.
As a software engineer, you have most likely been to one or more interview processes, which involve a technical challenge.
To evaluate a candidate, you need to measure their technical knowledge, and this is usually done by companies in the following forms:
- Live Coding: The interviewee must solve a technical challenge before the interviewers and doesn't know the problem beforehand. The problem usually takes 1/2 hours max to be solved.
- Take Home Challenge: This possibility is considered somewhat controversial. The interviewee needs to solve a more complex challenge in a more oversized time frame, ranging from one day to a week.
No matter the type of challenge, this is considered by many to be the hardest part of the interview, and many engineers have trouble passing this step.
Preparation
You need to prepare before the challenge starts. You should always be somewhat prepared, even if you're not doing interviews right now. In this section, I'll briefly list what helps me most to stay motivated and prepare well for any technical challenge.
Learn By Doing
You can't know your weak points if you don't face them. You should create small—to medium-sized projects that you're proud of. These can be anything and don't need to come from an original idea. You can follow tutorials and try to add your spin. The point is that if you want to be prepared, you must try.
Build Something You're Proud Of
This next section will naturally occur when you learn good software practices. My suggestion is to create a simple app that requests something from an API but increases the complexity of this project by adding the following challenges:
- Apply Test-Driven-Development.
- Use different types of tests to test your app.
- Use Clean Architecture.
- Try different software design patterns.
This step is crucial for the following sections.
Read A Lot
It's crucial to keep learning to be a sound software engineer. You can learn by reading technical books written decades ago. You may think the books are outdated, but you would be surprised by how much knowledge you can gain. Challenge yourself by setting realistic goals throughout the year to motivate you to keep learning.
Participate in the Community
Another way to improve your knowledge is to join communities in your city through websites like Meetup.com or actively participate in forums like Swift Forums.
Doing The Challenge
After you go through the other interview steps, you'll be ready to tackle the technical challenge.
I suggest you prepare before you start the challenge to ensure its success.
Set Yourself Up For Success
- Read the challenge requisites 2/3x.
- Divide the technical challenge by the following topics: mandatory requirements and optional requirements.
- Reread the challenge and write down all of your questions. Is everything clear? Do you know what you need to do? If not, send an e-mail to the recruiter as soon as possible with all of your questions.
- Check how much time you have for the challenge and write it down.
- Check if the company allows third-party usage.
Creating a Strategy
Now comes the fun part, you set yourself up for success, you prepared yourself for this challenge so you can now create a strategy.
First, let's eliminate the idea of delivering a perfect challenge. When delivering a challenge, you should be pragmatic above all else.
Ask yourself the following questions before you create your strategy:
- Have I done a similar challenge in the past? Is everything requested new for me?
- Am I comfortable with the technological stack?
- Are the optional requirements easy enough to do? Have I done them before in other projects?
Now, you can create the strategy for the delivery of the challenge.
You must be realistic when predicting what you can or cannot deliver. It's best to provide less, but it works better than giving something that does not work.
My suggestion strategy starts with how comfortable you are with the tech stack and how difficult it is to find the mandatory requisites.
If you answered no to these two questions, remove all optional requirements from the strategy.
Even if you think they are easy.
If you think you're comfortable with everything, you can increase the complexity and showcase your best skills, such as TDD.
Building the Solution
Now that you have a strategy, you can begin designing the architecture of your solution.
After building the architecture, you can define the use case of the challenge by:
- What are the functional requirements?
- What is the API Contract?
- What are the Constraints?
By doing this, you consolidate your solution and facilitate the work you must do when you start programming.
Now that everything is clear, you're finally ready to program.
Programming
If you follow the previous steps, you will clearly understand how to tackle the problem when you arrive at the programming section.
The programming part varies from engineer to engineer, so providing a step-by-step guide is tough. However, I do have one major tip.
Write every decision you make on a notepad.
This may sound silly since you don't do this in real life, but it will help immensely when asked about your decisions during the technical interview.
Everything like:
- Why did you split the folders in a certain way
- Why did you decide to use a third-party app
- What did you do when you had a specific problem, and why did you apply a given solution
Doing this prepares you for the discussion by consolidating your decisions.
Finishing Touches
After implementing your solution, it is time for the finishing touches.
You should do this for at least 1/2 hours before delivering the task.
What is crucial at this stage:
- Does it compile?
- Does it run?
- Does it deliver the mandatory requirements like functionality or design?
- Are you respecting the minimum iOS version defined in the challenge?
If you answered any of these questions without success, you must go back and fix them.
What is essential to have:
- No bugs.
- Good code coverage.
- Having more than unit tests for the test strategy is essential.
- The optional requirements work and deliver what's expected.
These are not as important as the others, but they are nice.
You can review your challenge and ensure you didn't forget anything.
You've successfully aced the technical challenge, and you should be proud. You did everything in your power to succeed.
Conclusion
The technical challenge is the hardest part of any software interview. There are many moving parts, and the challenge differs depending on the company. However, you can set yourself up for success by studying and preparing before and during the challenge.
It's important to set boundaries of what you can and cannot do and set realistic expectations before you start programming. It's often best to deliver a challenge that only implements one feature that works rather than one that implements multiple features but doesn't build.
Finally, you should check the mandatory requirements and ensure that your solution assesses everything, leaving no loose ends at this stage.
How do you tackle a technical challenge?
Thank you for reading my suggestion on how to ace a technical challenge. I hope this article helps you overcome future technical difficulties easily.
If you enjoyed this, please consider supporting my work by connecting with me on LinkedIn, GitHub and X.