They had a 3 stage process. The first one was a "let's get to know each other" type of interview. A nice chat with one tech and one not tech interviewer. You can do that just by using your common sense. It's not really a problem.
The second stage was a tech interview. I have nearly 20 years of experience with backend systems, and that includes 15 years of Java experience. The interviewers were accountants changing to software development a few years ago! That's ok, but it looked like I had way more experience and knowledge about Java its ecosystem than they had. Combined. I believe that was the problem.
I've already worked on a huge financial system at major investment and retail banks, so, I know how a piece of software should look like, even during interview circumstances.
The first nice surprise was that the interviewers were clearly shocked that, I could start working on the problem 30 seconds after they sent across the link. They said, no one had ever been that prepared for the interview in their practice. (Yeah, it would help the others, if you send across instructions what you expect from interviewers to be prepared for...)
I communicated clearly during the pair programming session. I always told them what was I doing and why. I clearly drove that conversation, as per I thought that was the requirement. I asked when I didn't understand something, and not when the requirements were clear.
I started with the Java floating point arithmetics and how a financial system should work with digital representation of the money. BigDecimal. They didn't really liked it, and said I must use the double primitive type. That's obviously a problem when you have to do arithmetic operations, because 7.0 is sometimes 6.9999999... But I managed to solve this by internally using the BigDecimal and exposing the double in the API, All of their tests were successful. Everything.
The second weird thing was that, they didn't allow me to use Mockito and similar tools for testing your software. So, I quickly set up a basic mocking and testing framework in Java designed for that application. They liked that.
At the end of the interview, they said I found all the bugs, fixed everything. They were happy. I thought.
Here is why they reject me:
- "talked over his pair partner, I would be concerned about his conflict-handling skills" Yeah, when the interviewer didn't wait till you finish and start talking while you're still talking as well, then it's a problem of the interviewer and not the interviewee. On the other hand, the interviewer wrong on a few things, so I had to correct him. And their tests proved, I was right.
- "didn’t include his pair or the BA in his thoughts & plans, I would be concerned about how he would train / mentor junior colleagues" I've been mentoring juniors for 10 years now. I was and I am leading teams both technically and line management wise... I talked continuously during this exercise, I always told what and why I am doing and proved my opinion and ideas with unit tests. Not sure, what I should have done? Ask permission for writing every single line of code? When I understand what I am doing, I understand the problem, and I got confirmation of my understanding being right, what else shall I have done?