Veeam is an international IT company that develops software for managing and securing cloud data. Its developer Mikhail Bryksin heads an international four-person team.
He shared his experience in reviewing candidates’ test tasks, highlighted the most important points, and by using the example of a fictional problem and its assessment in Microsoft Visual Studio gave future developers some guidance on how to find a job in IT.
Sometimes a test task reveals more than your experience
When it comes to the hiring process, no two companies are the same, but in general, it involves more or less similar stages. Initially, a candidate may be contacted by phone, asked to do a test or undergo one or more interviews. Basically, only the order may change. At Veeam, a test task is the first step towards a development job and a possible barrier to further reviewing an application.
At the webinar, Mikhail Bryksin said that the process is the same for all positions whether it is a junior, middle, or senior developer.
“We can say if a person has experience based on their code. We won’t expect a prospective junior developer to do everything perfectly. It’s okay if there are some gaps in the completed test task. But if you want to be a team lead or senior developer, your test task will be assessed differently. First and foremost, it must work,” says Mikhail Bryksin.
Developers want to see familiar code
It happens that you finish a test task, send it, and think that you took care of everything, did everything right. You are sure that you will get a call or at least an appraisal. However, sometimes the exact opposite happens: there is no feedback, they tell you that they did not like your solution, or advise you to redo or modify your code. Mikhail Bryksin thinks that it is not enough to complete a task, it is important to complete it in a certain way.
“You must not only do what is required of you but also perform it in a way a reviewer would like it to see. All principles of software development, if we talk, for example, about C# or Java, are the same. All developers want to see familiar code, error processing, some kind of completion,” says Mikhail Bryksin.
The developer started his webinar with the assessment of test tasks by going into details of the process.
Attention to detail
“At first, when I was just starting to review tests, I did everything manually: opened a file, put together a project, and launched it. But, I think, there is nothing more valuable than time. And developers never have enough time as they always have to write something. That’s why I want to automate everything. So now I use automated systems or scripts,” he explains.
Thus, it is extremely important to avoid silly mistakes. For example, mix up the value that will be returned at the end of the program – such a small mistake can be costly.
Use what has already been done
“Sometimes the test task is complex, and you need to use some kind of sorting or data structure – a queue or a list – in the implementation of the algorithm. But it’s not stated in the assignment. You are asked to, for example, do a hashing or write a webchat. Then, there will be a dilemma: write it yourself or use a ready-made solution. It is best to use what is already in standard type libraries. If not, you can use NuGet packages. On the other hand, you can, for example, create your own queue or list. And maybe it will work well and even be appreciated if written correctly. But when they check, your implementation will be unfamiliar. Methods will be named differently, and a developer is used to the standard type system. If it is not prohibited, it is better to use ready-made solutions and standard data structures,” Mikhail explains by drawing an example.
Ready-made solutions increase the code’s functionality and reduce the risks of errors. The only thing is making sure that the borrowed part of the code is correct. Mikhail advises paying attention to the date of its last update and the number of downloads of the package.
“Using a ready-made package will show that you can find this solution, that is, you know how other people write and how to work with their code,” he concludes.
Make your code easy to read
According to the experienced developer, if a reviewer sees the test task for the first time, and all the code is stored in one file, it is difficult to understand. The following tips will help you make your code easier to assess:
- Maintain the structure of the project. It is better to structure it logically or by folders;
- Mark key points of the code with comments, use summaries. They help when reviewers either want to understand what's going on or give feedback;
- Do code analysis. You wrote a lot of code and checked at it all, but you might have missed something. Here, Visual Studio tools might come in handy. For example, it will be enough to go to the project settings, select Code Analysis and then Microsoft All Rules, and save it;
- Continue to polish your code when it's written: structuring, disassembling, sorting into folders, and checking it.
A few more life hacks:
- Don't forget error processing;
- Make a readMe, a TODO, and a History of commits;
- Avoid recursion in your code, go for loops;
- Avoid duplication. It will be crucial during assessment;
- You are often asked to briefly describe the architecture and algorithms used, so do it.
Mikhail warns that test tasks can be very different. You may even be asked to show your GitHub account with code that you are not ashamed of.
“A well-executed test task can say more than even 10-20 years’ experience. In most cases, it can play a key role. I am sure that these tips will help you get the coveted offer,” the developer concludes.