This text was written by Jaqueline Duque and Marcela Porto, both Software Engineers
🇧🇷 🇪🇸 Also available in portuguese →
One of our values at Nubank is “building strong and diverse teams”. This is reflected on everything we do, starting with our recruiting process. It was developed not only for us to find the most talented, but also so it can be a nice experience for the candidates as well.
For those who apply for a position in the field of software engineering, in many cases the first step is a technical exercise carried out on hiring platforms. Have a look at how these exercises are assessed and check out a few tips on how to do well on the tests.
How we assess technical Software Engineering exercises during recruitment
Here at Nubank, more than just evaluating your coding proficiency, we assess your programming logic and ability to understand and develop the problem’s data structure.
This is why in the exercise we present both the input data structures and the expected outcomes. What you should show evaluators is the evolution of these structures using programming logic. The syntax and the chosen language are merely tools for that – so much so that we will let you choose the language you feel most comfortable with.
It’s important to guarantee that your code is clean, organized, readable and does not add any more complexity than what is necessary.
What are the main tips to solving a technical algorithm exercise?
There are many good practices that could help you, but the main ones are:
1. Develop the solution based on programming logic without being hindered by your chosen language
Before you start coding, try to create a pseudocode, in which you’ll evaluate everything you should do so that the inputs evolve into the expected state. This technique will help you organize your ideas, ensuring you pay attention to all the requirements and guiding you through the programming logic you need to implement.
2. Avoid overexplaining and commenting on your thought process
Algorithm exercises offered in online platforms don’t usually provide a place to describe technical decisions. Therefore, you’re not expected to explain your reasoning process or what each part of the code is doing. Your code should speak for itself, so comments with this type of description should be avoided.
Detailed explanations for your solution or any other solutions that did not work out, reasons why a corner case is not contemplated in your solution, etc., are examples of comments that do not contribute for the assessment in this context.
3. Keep temporary variables and well-named functions
Using descriptive names helps a lot with readability. This way, by reading a variable name, it’s possible to understand what type of information it is about, which avoids the need to read a big block just to understand it purpose.
Example: for a meter variable, the name “assessment_count” is better than “a” because it describes its purpose. The same goes for functions: the name should reflect its responsibility.
4. Functions should have well-defined responsibilities
Speaking of functions, they should have well-defined responsibilities. When a function is in charge of too many responsibilities, it becomes very difficult to understand the process. One solution for this is to “break down” the big function into smaller ones, with well-defined responsibilities.
5. Don’t create interaction interfaces
Especially for HackerRank problems, you don’t need to create an interaction interface. Don’t worry about this and don’t invest your time in this.
6. Remove unused code
Remove any dead code. Examples: prints, attempts that did not work out, unused variables and functions. We also assess how clean and organized your resolution is, so removing dead code is an easy way to guarantee your solution meets those requirements.
7. Avoid importing libraries
Importing libraries beyond the ones that come with the exercise might not work in your favor, because they shorten a path we expected to see in your programming logic.
By importing libraries, there is a great risk that evaluators will not be familiar with the ones used, so you won’t show your knowledge and the evaluator will not be able to assess it.
8. Validate the solution
At the end, take a deep breath, read the exercise again and check whether it meets all the requirements.
The above are just a few tips to help you during the evaluation, but remember: in every recruiting process, the most important part is to feel confident that you can show your skills to the fullest.