January 16, 2021
Hot Topics:

# Developer Testing Sites

I hate tests. I really do. For me, writing a test (whether it be theoretically or practically) is torture. The problem is that I am inherently nervous, and when put in a box, I will escape as soon as possible, and never return.

I also hate practical tests, extremely.

Don't get me wrong, I have written many tests, I cannot even remember how many, and I still do write tests. Apart from being a very nervous person (I do take pills for that), I am extremely impatient and get bored very quickly. If I feel the test is boring, I'll give somewhat of an honest attempt and hope for the best.

I have a very active mind. It is always somewhere else. I hate it sometimes because it makes it uncomfortable for people that doesn't know me well enough. I need stimulation always and everywhere.

Being a software developer, tests become the norm. When applying for jobs, you will have to write tests to being hired. Now, this is where it gets sticky (for me, at least); some places give tests that do not make sense, with the test seemingly being copied and pasted from somewhere, or some places only want to hire geniuses who can figure out the most complex math problems.

There are quite a few sites that can help test your skills. Software houses rather tend to give you an electronic test at these sites, instead of providing an in-house test. The reasoning behind this could be that they are too busy to create custom tests, or because sites such as these that I will mention are relatively new.

My own experience shows that most of the questions are common day-to-day routines, math problems, and string manipulation. This is where my issue comes in: They expect the answer in a certain way, whereas I may have a different way of doing things. One example comes to mind quickly:

The creation of a sequence of Fibonacci numbers. For the uninformed, Fibonacci number are generated by adding the two previous numbers to obtain the next answer. For example:

The first twenty numbers in the Fibonacci sequence is:

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765

I would create this functionality inside my program in the following way:

VB.NET

```   Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
Dim n As Integer
For n = 1 To 40
Application.DoEvents()
Next
End Sub
Function fib(ByVal n)
If n < 2 Then Return n _
Else Return fib(n - 1) + fib(n - 2)
End Function
```

C#

```   private void Button1_Click(System.Object sender,
System.EventArgs e)
{
int n;
for (n = 1; n <= 40; n++)
{
Application.DoEvents();
}
}

public void fib(object n)
{
if (n < 2)
return n;
else
return fib(n - 1) + fib(n - 2);
}
```

Technically, I suppose that this is not the 100% correct way of doing it, but this has worked for me since I can remember. Now, with these tests, the above code is not really accepted because they provide some sort of a template for you to fill in the gaps.

The above code is not complicated at all, but in my experience doing something similar on the testing platforms, is unnecessarily over-complicated, In my opinion.

## Developer Testing Sites

There are numerous developer testing sites, I will talk about four of the most popular sites. They are:

• TestDome
• Codility
• Devskiller
• Hackerank

### TestDome

TestDome specializes in Automated Skill testing. The nice thing about TestDome is that it provides practice job interview questions, before attempting the real test. The questions provide sections where you can write your code. You can copy the code to your Visual Studio IDE. You can show all the code, and most importantly, run your code. After you have run your code, it will inform you about the errors.

Figure 1: TestDome

### Codility

Codility Also has a Run mode and debug features, as do all the others I will mention. Mostly, it is just the layouts and the questions that change. What I do like, though, is that it provides a new screen for you to review the questions and code and test. What I don't like, though, is the complexity of some of the tests. The question in Figure 2 has asked someone to work out longest binary gap of a supplied Integer value.

Now, I have many years of experience in programming, giving classes, writing articles, and even a book that I am busy with, and I have not heard about a binary gap before, thus not having the need for it (my experience—yours may be different). Perhaps I was just living under a rock? And this was marked as Easy?

Yes, the reading material supplied with some of the questions does help, but I still feel that there are questions for people more clever than I will ever be.

Another nice feature is the data that you can see afterwards that they used for testing purposes.

Figure 2: Codility

### Desvkiller

Devskiller is a paid-for service. If you are a software house, you could make use of Devskiller to generate decent tests for your candidates. It provides a nice, detailed look at what the candidate did on each question, and even on some questions there is a screen recording feature.

Figure 3: Devskiller

### HackerRank

HackerRank is nicely organized according to type of challenge, such as Arrays, or Stacks and Queues, for example. What's also nice is that it shows the percentage of companies utilizing the particular test.

I just find the number of available languages a bit limiting. What is also nice is the Interview Preparation Kit, which contains a number of tests with which you can practice.

Figure 4: HackerRank

## Conclusion

Using sites like these will improve your skills, without a doubt, but keep in mind that there are many ways to skin a cat; don't allow yourself to be boxed-in and forced to do things one way, when another way could also work.