The Story about 3 Interviews: Good, Bad and Ugly
Tags: interview, java
Published: 2021-03-30 08:30:47

I haven't changed jobs for about 4 years and I decided that it was time for either a change, or a substantial increase in my pay at the current company. I wasn't set on leaving my current job, but it is almost impossible to get more than 7% increase in salary without an offer from another company. I've been completely ignoring LinkedIn for more than 3 years by now and had many unread messages. Marked all as "Read" and moved on.

[![Play Framework Java Course](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kp4dvf528qhlo0egwx4t.png)](https://courses.petrepopescu.tech/)

I must add that I was in a privileged position. I have a job that I like, I am well-seen in my current company and an important asset to the team. Also, my current finnacial status is really good so I had no true pressure to change. Furthermore, as a Java back-end developer, there are many jobs to choose from, at least in my country. Because of these, I decided that I will move to another company if all three conditions are met: substantial increase in salary, interesting and challenging project, flexibility in working hours (since I also have a son that needs to be taken from and to school). I also would not rush into things and won't go to the first company that contacts me. So... the process took almost two months, had a lot of messages and phone calls from different companies and with about 8 I went further and had the actual interviews.

A few of them stood out.

## Company A: the bad

Before actually going on a technical interview, many companies have a first coding challenge that you have to pass. It is on a coding platform like Codility or some other similar website. It can be one or up to four coding challenges and it is usually time-restricted. I had them in the past and I am comfortable taking such a test. Now, what I found strange, was the approach this company had. I am at this time a senior Java Dev, and I get that the title does not mean anything, but a simple look over my activity (which is in my resume) would easily prove that I can code. Still, I did not mind taking the test. What I did mind, was the fact that it was completely useless. 

First, prior to even receiving the invite to the coding platform, I received the problem by email. What is the point of having time restriction if you are gonna give me the problem before I even start? Even if I did not knew how to do it, I could have just searched for answers.

Next, the problem did not specify on what to focus. Do you want the optimal solution? Do you want modern Java APIs to be used? It was just "make a program that receives this input and returns this output" type of problem. I opened the platform, started coding using a few "modern" APIs. I knew it won't score high on speed, but that wasn't my point. I am applying for a senior position so I assumed that they want to make sure that I know the APIs and Frameworks I mentioned din my resume.

Two days later, I get a call: "The engineer really liked that you know Java and modern APIs, but he said that your solution is not the fastest. Can you please remake it with focus on speed and send it to us by email?"

Why? What was the point of this? I still don't know, especially since this was only the first part. I had one more technical discussion (that was actually well organized and interesting). 

## Company B: the ugly

You think the one above is bad? It gets worse. Similar scenario, where you have to pass a coding challenge first. This was was a bit longer, structured in 4 parts: general OOP questions, general programming questions (with relation to the tech stack they are using), a coding problem, and a logic quiz that is not related to programming.

For the first two sections I found questions that had grammatical errors in them or were not clear as to what they are asking. But it all went down-hill during the coding part. The problem was related to Spring (where I had to make a small micro-service), inside their coding platform. So far so good, but, the platform did NOT allow multiple files, did NOT allow copy-paste so that I can at least code in my editor, did NOT have auto-complete of any sorts, and had a limited number of compilations allowed. The number of compilations did not even matter because the platform did NOT have access to the Spring repository to download the needed dependencies and furthermore, the starting code given by them did not even compile at all because of programming errors in it. 

So, the coding part was extremely restrictive and impossible to make something that actually ran and could be tested by you inside the platform they asked for it. I am all for coding a small micro-service, but this is not how it should be done for a test.

## Company C: the good

I must say that this is not just one company, but three different ones that had similar approaches. It started with a discussion about my experience, what I currently do and with technical questions related to that. After that came the coding challenge, but instead of using a platform, I had an engineer from their team with me, I had to use my own/preferred environment and it was a problem that actually tested how I think an overall solution to a more complex problem. I could ask questions, and so could he. I could present the solution and explain why I think it should be done in a certain way. He could give input or change things in the initial problem to see how I reacted to change and how my code reacted to change.

## Conclusions

I passed most of my interviews, and failed two of them, but none from the companies presented in this article. Eventually, I interrupted discussions with most companies even prior to reaching the "offer" part either because after the discussions I discovered that they are not a good match for me, or because the project was not as interesting as it seemed in the beginning. 

If there is one thing to take from all this, is that not all companies know how to properly hold a tech interview. Some do it better than others and some can really F up. Either way, if you want to change your job, be persistent.